这是 mp3info2p 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
mp3info2 - 获取/设置 MP3 标签; 使用 MP3::Tag 获取默认值。
概要
# 打印标签中的信息和自动推导的信息
mp3info2 *.mp3
# 另外,设置年份字段为1981
mp3info2 -y 1981 *.mp3
# 相同,不打印信息,在当前目录递归
mp3info2 -R -p "" -y 1981。
# 不推断任何字段,仅从标签打印(规范化)信息
mp3info2 -C autoinfo=ID3v2,ID3v1 *.mp3
# 同上,但没有标准化/自动填充,标签中的原始信息
mp3info2 -N *.mp3
# 同上,但只读取 ID2v1 标签
mp3info2 -NC 自动信息=ID3v1 *.mp3
# 从 CDDB_File 中获取艺术家,自动推导其他信息,将其写入标签
mp3info2 -C 艺术家=CDDB_File -u *.mp3
# 对于标题,更喜欢 .inf 文件中的信息; 自动推断休息,更新
mp3info2 -C 标题=Inf,ID3v2,ID3v1,文件名 -u *.mp3
# 同样,从 CDDB 文件中获取艺术家
mp3info2 -C title=Inf,ID3v2,ID3v1,filename -C 艺术家=CDDB_File -u *.mp3
# 编写一个脚本将.wav 转换成.mp3,自动推导出标签
mp3info2 -p "跛脚 -h --vbr-new --tt '%t' --tn %n --ta '%a' --tc '%c' --tl '%l' --ty '% y' '%f'\n" *.wav >xxx.sh
商品描述
该程序打印一条消息总结标签信息(通过 MP3::Tag 模块获得)
指定的文件。
它还可以更新 ID3 标签中的信息。 这发生在三种不同的情况下。
· 如果命令行选项“talygcn”中提供的信息与
对应的 ID3 标签的内容(或没有对应的 ID3 标签)。
· 如果给出了选项“-d”或“-F”。
· 如果 "MP3::Tag" 从 MP3 标签以外的其他方式获取信息,并且 "-u" 强制
ID3 标签的更新。
(所有这些方式都被“-D”选项禁用。)如果需要,ID3v2 标签被写入,或者如果“-2”
给出了选项。 (可推导字段的自动填写(通过方法
id3v2_frames_autofill()) 除非给出“-d”或“-N”选项。)
选项“-u”将获取的信息写入(“u”pdates)到 MP3 ID3 标签。 这个
如果存在显式设置标签元素的命令行选项,则假定选项
(“-a”、“-t”等,以及“-F”、“-d”)。 (这个选项的效果可以通过给
“-D”选项。)如果还给出了“-2”选项,则强制写入 ID3v2 标签,即使信息
适合 ID3v1 标签(此外,此选项启用“个人姓名”的自动更新
字段,以及根据“translate_person”的值对应的标题,
“person_frames”等配置设置; 请参阅“字段的标准化”)。 这个选项
如果未检测到标签更改,则忽略; 但是,可以通过重复强制更新
这个选项(如果你希望改变标签的“格式”,而不是它的
“内容”)。
选项“-p”使用下一个参数作为格式打印消息(默认为“\\”、“\t”、
"\n" 被反斜杠、制表符和换行符替换; 由“-E”选项的值控制);
有关格式的详细信息,请参阅 MP3::Tag 中的“插值” 冲刺()——像逃跑一样。 如果不
给出选项“-p”,将发出默认格式的消息。 选项“-e”的值
是用于输出的编码; 如果值是数字,则系统特定的编码是
猜测(如果设置了位 0x1,则用于输出); 如果设置了位 0x2,则命令行
假设选项在猜测的编码中; 如果设置了位 0x4,则命令行
假设参数采用猜测的编码。 使用值“binary”来做二进制
输出。
使用选项“-D”(试运行)不会执行更新,无论其他选项是什么。
使用此选项,除非需要,否则不会执行标签解析。
使用选项
talygcn
覆盖获得的信息(标题艺术家专辑年流派评论曲目编号)
通过“MP3::Tag”启发式(如果这些参数中的任何一个不同,则隐含“-u”开关
否则会发现什么; 使用“-D”开关禁用自动更新)。 默认情况下,
这些选项的值不是“%”插值的; 这可以通过“-E”选项改变。
选项“-d”应包含要删除的 ID3v2 帧的逗号分隔列表。 一种
帧规范与可能给予“%{...}”帧插值的相同
命令,例如“TIT3”、“COMM03”、“COMM(fra)[短标题]”; 与修改的区别-
访问是 全部 (而不是 第一 of) 匹配的帧被删除。 (选项 -d 可能是
重复。)
例如,“-d APIC”将删除所有图片框。 此外,如果列表包含
“ID3v1”或“ID3v2”,整个标签将被删除。
同样,选项“-F”允许设置任意“ID3v2”帧:如果需要设置
一帧,使用指令“FRAME_spec=VALUE”:
-F TIT2=新标题
再次,在修改时, 全部 匹配的帧首先被删除,所以要小心
-F COMM=我的评论
可以重复选项“-F”以设置多于一帧。 如果配置变量
“empty-F-deletes”为 TRUE(默认),空参数将删除框架。
可以将“FRAME_spec=VALUE”替换为“FRAME_spec < FILE”; 在这种情况下,要设置的值
从名为的文件中读取 文件; 如果框架是纯文本的(意思是:至多
存在“[encoded]Text URL Language Description”字段),文件以文本形式读取
模式(并去除起始/尾随空格),否则以二进制读取
模式。 (“<”符号需要空格。)如果将“<”替换为“?<”,则
仅当框架尚不存在且文件存在时才设置值; 如果替换为“>”,
值(如果存在)被写入 文件 (中间目录的创建是
由配置选项“frames_write_creates_dirs”控制,默认值为 FALSE)。
此外,“FRAME_spec”可以是“ID3v1”或“ID3v2”或“TAGS”之一; 在这种情况下,整个
标签被写入或读取。 例如,对于“TAGS < FILE”,“标题艺术家专辑年份流派
评论轨道”信息计算自 文件, 可能是原始标签,如使用 ">" 生成的那样,
或有效的 MP3 文件; 如果存在 Image::ExifTool,则可以从任意位置读取数据
多媒体文件。 (同样,对于“ID3v1 < FILE”,从“ID3v1”中提取相同的信息
仅标记。)此后,在“ID3v2”或“TAGS”的情况下,“ID3v2”帧从
“ID3v2”标签一一。 (对“?<”进行适当的修改。)
默认情况下,“-F”的“VALUE”是“%”插值的; 这可以通过选项“-E”来改变。
为方便用户,更人性化的形式是“作曲家、text_by、管弦乐队、指挥、
disk_n”可以用来代替“TCOM、TEXT、TPE2、TPE3、TPOS”。
选项“-P RECIPE”是选项可以完成的功能的非常强大的概括
“-F”、“-d”和“-t -a -l -y -g -c -n”。 可以重复; 值应包含
解析食谱。 它们成为“MP3::Tag”的配置项“parse_data”; 最终
该信息由 MP3::Tag::ParseData 模块处理(如果后者存在于
启发式链; 见选项“-C”)。 “食谱”被拆分为“$flags, $string,
@patterns" 在其第一个非字母数字字符上;第一个匹配的 @patterns
$string 将被执行(为了副作用)。 (参见示例:“示例:解析
规则”。)
如果指定选项“-G”,则命令行中的文件名被视为 glob
模式。 如果最大命令行长度太短,这可能很有用。 随着
选项“-R”参数可以是目录,递归搜索音频
(默认 * .mp3) 要处理的文件; 使用选项“-r”将正则表达式重置为
for(默认为“(?i:\.mp3$)”)。
选项“-E”控制转义字符的扩展。 它应该包含以下字母
插入 "\\, \n, \t" 的命令行选项; 可以附加字母
需要在分隔符“/i:”后插入“%”的“talygcn F”选项(对于
“-F”,仅插入值)。 默认值是“p/i:Fp”:只有“-p”是
“\”-内插,只有“-F”和“-p”受“%”-内插的影响。 如果所有一个
想要是 加 对于默认值,在“-E”(包含添加的选项)的值之前
“+”。 (选项“-P”值的某些部分是内插的,但这应该是
由标志控制,而不是“-E”; 做 不是 将“P”放入“-E”的“%”内插部分。)
如果给出了选项“-@”,则选项中的所有字符“@”都被替换为“%”。 这个
如果 shell 对 "%" 进行特殊处理(例如,DOSISH shell),这可能会很方便。
如果给出选项“-I”,则无需猜测 艺术家 字段在 typeout 上执行。
选项“-C CONFIG_OPT=VALUE1,VALUE2...”将“MP3::Tag”配置数据设置为相同
方式为“MP3::Tag-”配置()> 会做(回想一下,该值是一个数组;单独的元素
如果超过一个,则用逗号)。 可以重复该选项以设置多个值。 笔记
由于“ParseData”用于处理“-P”解析配方,因此最好保留
在存在“-P”的“autoinfo”配置(以及相关字段“author”等)中。
如果给出选项“-x”,则打印有关音频文件的技术信息
(MP3等级、时长、帧数、padding、版权、ID3v2帧列表
格式适合“%{...}”转义的名称)。 如果重复“-x”,则帧的内容为
也打印出来(如果重复两次以上,可能会输出不可打印的字符)。
如果给出选项“-N”,则所有“智能”都将被禁用 - 字段不规范化
发生,并且(默认情况下)不尝试从非 ID3 推断字段的值
信息完成。 此选项(当前)等效于具有“-C
autoinfo=ParseData,ID3v2,ID3v1" 作为第一个指令,没有
规范化::Text::Music_Fields.pm 出现在@INC 路径上,而不是调用 自动填充() 方法。
正常化 of 领域
(规范化模块的加载和所有后续操作可能会被禁用
选项“-N”,或通过将环境变量“MP3TAG_NORMALIZE_FIELDS”设置为 FALSE。
如果未禁止,则在目录中尝试加载模块 ~/.music_fields is
存在,或“MP3TAG_NORMALIZE_FIELDS”已设置且为真。)
如果模块“Normalize::Text::Music_Fields”加载成功,则如下
适用:
如果定义了“MP3TAG_NORMALIZE_FIELDS”的值而不是 1,则该值被分解为
目录作为路径,“Normalize::Text::Music_Fields”的加载路径设置为这个
目录列表。 然后指令 MP3::Tag(通过相应的配置
设置)使用此模块定义的“normalize_artist”(等)方法。 这些方法
可以规范化某些标签数据。 当前版本定义了“规范化”的方法
个人姓名和头衔(基于作曲家)。 这种规范化是驱动的
通过用户可编辑的配置表。
除了 MP3 标签数据的自动规范化之外,还可以使用“假 MP3 文件”来
手动访问此模块的某些功能。 为此,请使用空文件名和“-D”
选项。 例如,
mp3info2 -D -a 贝多芬 -p "%a\n" ""
mp3info2 -D -a beethoven -p "%{shP[%a]}\n" ""
mp3info2 -D -a 贝多芬 -t "奏鸣曲 #28" -p "%t\n" ""
mp3info2 -D -a beethoven -t "allegretto, Bes" -@p "@t\n" ""
mp3info2 -D -a 贝多芬 -t "op93" -@p "@t\n" ""
将打印“beethoven”的标准化人名,相应的标准化短
人名,以及作曲家“贝多芬”的“奏鸣曲#28”的标准化标题。 例如,
使用随附的标准化表,它将打印
路德维希·范·贝多芬(1770-1827)
L·凡·贝多芬
A大调第28钢琴奏鸣曲; 操作。 101 (1816)
降B大调钢琴三重奏快板; 宇 39 (1812)
F大调第八交响曲; 操作。 8 (comp. 93, fp Vienna, 1812-1814-02, cond. Beethoven; pubd. 27)
这个 秩序 of 操作
目前,操作按以下顺序完成
· 通过“-d”选项整体删除ID3v1或ID3v2;
· 设置了“-P”选项的Recipies(由插值触发);
· 通过“-a/-t/-l/-y/-g/-c/-n”选项进行设置;
· 通过“-F”选项完成的设置;
· 通过“-d”选项删除单个帧;
· 自动填充 ID3v2 (id) 帧;
· 根据“-p”和“-x”选项发出信息;
·触发“-P”的recipies(如果不是由插值触发的);
· 如果需要,更新标签。
用法 战略: 升级 of 复杂
此脚本的目的是使 ID3 标签的处理变得简单 as 可能.
在天平的一端,人们可以使用标签执行任意复杂的操作
“MP3::Tag”Perl 模块。
另一方面,用标签处理最简单的操作要方便得多
使用此脚本的选项“-t -a -l -y -g -c -n”和“-p -F -d”。 稍微多一点
复杂的任务,可能需要使用更精细的方法 解析 定位、竞价/采购和分析/优化数字媒体采购,但算法只不过是解决问题的操作和规则。,提供
通过选项“-P”到这个脚本; 规则在很大程度上取决于 插值,请参阅
MP3::Tag 中的“插值”,MP3::Tag 中的“interpolate_with_flags”。
为了简化从“最简单的操作”到“更复杂的操作”的升级,我们在这里
提供“解析规则” 同义词 到最简单的选项。 所以如果你以“-t -a -l -y”开头
-g -c -n" 和 "-p -F -d" 选项“几乎对你有用”,你很有可能成为
能够通过修改下面描述的同义词来完全实现您的目标。
(下面我们假设“-E”选项设置为其默认值,因此“-F -p”是
"%" - 插值,其他选项不是。 另请注意,如果您的 TTY 编码是
Perl 认可,强烈建议设置“-e 3”选项; 在 DOSISH 外壳上,
最好使用“-@”,并用下面的“@”替换“%”。)
“-t 值”
-P "mz/VALUE/%t"
“-a -l -y -g -c -n”
同样。
"-F" "TIT2=VALUE"
-P "mzi/VALUE/%{TIT2}"
"-F" "APIC[myDescr] < 文件"
-F "APIC[myDescr]=%{I(fimbB)FILE}"
or
-P "mzi/%{I(fimbB)FILE}/%{APIC[myDescr]}"
(删除纯文本框架的“bB”)。
"-F" "APIC[myDescr] > 文件"
-P "boi,%{APIC[myDescr]},FILE"
(删除纯文本框架的“b”); 或使用 "-e binary -p "%{APIC[myDescr]}""
使用重定向,请参阅“示例:解析规则”。
“-d”TIT2
-P "m//%{TIT2}"
"-F" "TIT2 ?< 文件"
非常棘手。 这不会设置区分空文件和不存在的文件:
-P "mzi/%{TIT2:1}0%{I(fFim)FILE}/10/10%{TIT2}/0%{U1}"
(对于非纯文本框架,将“bB”添加到“fFim”); 最后一部分可以省略
如果省略标志“m” - 它仅用于捕获错误印刷。
有关“解析规则”的详细信息,请参阅“示例:解析规则”和“描述”
MP3::Tag::ParseData。
例子: 解析 定位、竞价/采购和分析/优化数字媒体采购,但算法只不过是解决问题的操作和规则。
只有“-P”选项足够复杂,值得评论......有关的完整详细信息
解析 定位、竞价/采购和分析/优化数字媒体采购,但算法只不过是解决问题的操作和规则。,参见 MP3::Tag::ParseData 中的“描述”; 有关插值的完整详细信息,
参见 MP3::Tag 中的“interpolate”,MP3::Tag 中的“interpolate_with_flags”。
对于(愚蠢的)示例,可以将“-a Homer -t Iliad”替换为
-P mz=荷马=%a -P mz=伊利亚特=%t
一个不那么愚蠢的例子是强制通过特定的方式解析文件名
-P "im=%{d0}/%f=%a/%n %t.%e"
它被分解成
标志字符串 pattern1
"im" "%{d0}/%f" "%a/%n %t.%e"
国旗字母代表 插值, 必须匹配. 这会插入字符串
"%{d0}/%f" 并解析结果(即具有一级目录的文件名
部分保留)使用给定的模式; 因此目录名称成为艺术家,
前导数字部分 - 曲目编号和文件名的其余部分(无扩展名)
- 标题。 请注意,由于允许多个模式,因此可以类似地允许
名称的多种格式,例如
-P "im=%{d0}/%f=%a/%n %t.%e=%a/%t (%y).%e"
允许文件基名也采用“TITLE (YEAR)”形式。 另一种方式
获得相同的结果是
-P "im=%{d0}=%a" -P "im=%f=%n %t.%e=%t (%y).%e"
这对应于两个食谱:
标志字符串 pattern1 pattern2
“我”“%{d0}”“%a”
"im" "%f" "%n %t.%e" "%t (%y).%e"
当然,可以使用
"im" "%B" "%n %t" "%t (%y)"
作为第二个的替代品。
请注意,设置可能更具可读性 艺术家 通过显式分配到“%{d0}”,与
类似的论据
-E "p/i:Fpa" -a "%{d0}"
(“-E”的这个值要求“%”-除了选项“-a”的插值
默认 "\" - "-p" 的内插,以及 "-F" 和 "-p" 的 "%" - 内插; 一罐
用“-E +/i:a”快捷方式)。
举更多例子,
-P "if=%D/.comment=%c"
将从文件中读取评论 。评论 在音频文件的目录中;
-P "ifn=%D/.comment=%c"
如果文件有类似的效果 。评论 有一行评论,每首曲目一个(这假设
曲目编号可以通过其他方式找到)。
假设一个文件 零件 在 MP3 文件的目录中具有以下格式:它有一个
序言,然后每个音频文件都有一小段信息,前面是轨道
数字和点:
...
12. Rezitativ。
(皮萨罗、罗科)
13. Duett:jetzt,Alter,jetzt hat es Eile,(Pizarro,Rocco)
...
以下命令将此信息放入 ID3 标签的标题中(提供音频
文件名足以提供信息,以便 MP3::Tag 可以推断出曲目编号):
mp3info2 -u -C parse_split='\n(?=\d+\.)' -P 'fl;Parts;%=n. %t'
如果这一段信息的形式为“TITLE (COMMENT)”和“COMMENT”部分
是可选的,然后使用
mp3info2 -u -C parse_split='\n(?=\d+\.)' -P 'fl;Parts;%=n. %t (%c);%=n。 %t'
如果要删除标题末尾的点或逗号,请使用
mp3info2 -u -C parse_split='\n(?=\d+\.)' \
-P 'fl;零件;%=n. %t (%c);%=n。 %t' -P 'iR;%t;%t[.,]$'
此调用的第二个模式转换为
['iR', '%t' => '%t[.,]$']
这基本上将替换“s/(.*)[.,]$/$1/s”应用于标题。
现在假设除了 零件,我们有一个文本文件 评论 附加信息;
我们想将此信息放入评论字段 after 从“TITLE”中提取的内容
(COMMENT)"; 用空行分隔注释的这两部分:
mp3info2 -EC -C 'parse_split=\n(?=\d+\.)' -C 'parse_join=\n\n' \
-P 'f;Comment;%c' -P 'fl;Parts;%=n. %t' \
-P 'i;%t///%c;%t (%c)///%c' -P 'iR;%t;%t[.,]$'
这假设标题和评论不包含“///”作为子字符串。
说明:“-P”的第一个模式,
['f', '评论' => '%c'],
从文件“Comment”中读取注释到注释字段中; 第二,
['fl', '零件' => '%=n. %t'],
将一大块“零件”读入标题字段。 第三个
['i', '%t///%c' => '%t (%c)///%c']
重新排列标题和评论 提供 标题的格式为“TITLE (COMMENT)”。
(配置选项“parse_join”负责将两块注释分开
对应于右侧出现两次 %c。)
最后,第四种模式与前面的例子相同; 它消除了虚假
标题末尾的标点符号。
更多示例:从注释字段的开头删除字符串“with violin”(删除
如果没有留下任何东西,请完全评论):
mp3info2 -u -P 'iz;%c;with violin%c' *.mp3
设置艺术家字段而不让自动更新功能从中推断出其他字段
其他来源;
mp3info2 -C autoinfo=ParseData -a "AU Thor" *.mp3
设置注释字段,除非它已经存在:
mp3info2 -u -P 'i;%c//与钢琴;////%c' *.mp3
最后一个例子展示了如何用“-P”的语言实际编写“程序”
选项:该示例给出了一个条件赋值。 使用用户变量(如“%{U8}”)
对于临时对象,以及使用正则表达式的可能性,可以提供任意
程序逻辑。 当然,在某种程度的复杂性上,最好切换到
直接与“MP3::Tag”Perl 模块接口(使用这个 Perl 脚本的代码作为
例子!)。
这是一个典型的任务设置“高级”id3v2 帧:作曲家(“TCOM”),管弦乐队
(“TPE2”),导体(“TPE3”)。 我们假设一个目录树包含标记的 MP3 文件
遵循以下约定:“艺术家”实际上是作曲家; “评论”是其中之一
两种形式:
表演者; 乐队; 导体
乐队; 导体
要通过“-P”规则设置特定的 MP3 帧,请使用
mp3info2 -@P "mi/@a/@{TCOM}" \
-P "mi/@c/@{U1}; @{TPE2}; @{TPE3}/@{TPE2}; @{TPE3}" -R .
使用“-F”选项,这可以简化为
mp3info2 -@F "TCOM=@a" -P "mi/@c/@{U1}; @{TPE2}; @{TPE3}/@{TPE2}; @{TPE3}" -R .
or
mp3info2 -@F "composer=@a" -P "mi/@c/@{U1}; @{TPE2}; @{TPE3}/@{TPE2}; @{TPE3}" -R .
将当前目录下MP3文件的ID3标签复制到目录下的文件中 /tmp/mp3 -
扩展名 。标签 (并打印“进度报告”),使用
mp3info2 -p "@N@E\n" -@P "bODi,@{ID3v2}@{ID3v1},/tmp/mp3/@N.tag" -DNR .
由于我们没有使用“z”标志,没有标签的 MP3 文件将被跳过。
现在假设有两个并行的音频文件和歌词文件层次结构:
音频文件在 音频/目录名称/音频名称.mp3 与相应的歌词文件在
文本/目录名称/音频名称.mp3. 将歌词附加到 MP3 文件(在“COMM”框架中
用“eng”语言描述“歌词”- Free Introduction is a 非标 位置, 请点击 下面!),
呼叫
mp3info2 -@P "fim;../text/@{d0}/@B.txt;@{COMM(eng)[lyrics]}" -Ru .
目录里面 音频. (将“fim”更改为“Ffim”以忽略其音频文件
对应的文本文件不存在。)(当然,要遵循规范,
应该使用字段“%{USLT(eng)[]}”而不是“%{COMM(eng)[lyrics]}”; 看
下面的变化)。
通过一个非常简单的例子完成:所有的模式
-P 'i;%t;%t'
确实是从标题中删除尾随和前导空格(这是由其他人推导出来的)
方法)。
更多 例子
使用“-F”选项,可以将“USLT”帧设置为
mp3info2 -@F "USLT(eng)[] < ../text/@{d0}/@B.txt" -Ru .
打印出这样的框架(任何语言)
mp3info2 -@p "@{USLT[]}\n" file.mp3
同样,要打印出带有空描述的 APIC 帧,请使用
mp3info2 -e binary -@p "@{APIC[]}" file.mp3 > output_picture_file
或(描述为“封面”)
mp3info2 -@P "bOi,@{APIC[cover]},output_picture_file.jpg" loading="lazy" audio_07.mp3
从文件设置这样的框架 xxx.gif 格式 (默认“图片类型”,“封面(正面)”,
和空描述),执行以下操作之一
mp3info2 -F "APIC < xxx.gif" file.mp3
mp3info2 -@F "APIC[]=@{I(fimbB)xxx.gif}" file.mp3
"APIC" 和 "APIC[]" 的区别在于首先删除所有 "APIC" 帧,
第二个仅删除所有具有空描述的“APIC”帧 - 但任意图像
类型。 所以使用完整规范可能更合适,如“APIC(Cover
(正面))[]”。
要删除带有空描述的“APIC”帧、任意“图片类型”(和“MIME
可以通过以下方式正确计算的类型 mp3信息2例如,“TIFF/JPEG/GIF/PNG”),使用
mp3info2 -d "APIC[]" file.mp3
(请注意,这不会释放磁盘空间,除非配置强制“收缩”
变量)。 要仅对“导体”图片类型执行相同操作,请执行
mp3info2 -d "APIC(Conductor)[]" file.mp3
扫描子目录,并添加文件 cover.jpg 从文件目录作为
“默认”“APIC”框架,但仅当没有“APIC”框架并且文件存在时,才执行
mp3info2 -@F "APIC ?< @D/cover.jpg" loading="lazy" -R 。
这将删除日期的空帧“TCOP、TENC、WXXX[]、COMM(eng)[]”,并删除
当前目录中 MP0 文件的曲目编号前导 3:
mp3info2 -@ -E +/i:y -F "TCOP=@{TCOP}" -F "TENC=@{TENC}"
-F "WXXX[]=@{WXXX[]}" -F "COMM(eng)[]=@{COMM(eng)[]}"
-y "@y" -P "mi/@n/0@n/@n" *.mp3
例子 on 处理 - 破 编码
ID3 规范的主要弱点之一是它要求数据是
以“latin-1”编码提供。 由于世界上大多数语言都无法用
“latin-1”,这导致(大多数?)ID3 标签不符合标准。 较新
规格版本修复了这个缺点,但损坏已经造成。
幸运的是,这个脚本可以使用“MP3::Tag”的能力从不合格的
内容一致。
以下示例转换写入的 ID3v2 标签(不符合标准)
将“cp1251”编码为符合标准的编码。 出于本示例的目的,
假设 ID3v1 标签采用相同的编码(并且希望将它们留在
编码“cp1251”); 要处理的文件位于当前目录中,并且
(递归地)在其子目录中(DOSISH shell 的“设置”语法):
设置 MP3TAG_DECODE_V1_DEFAULT=cp1251
设置 MP3TAG_DECODE_V2_DEFAULT=cp1251
mp3info2 -C id3v2_fix_encoding_on_write=1 -u2R 。
有关详细信息,请参阅 MP3::Tag 中的“环境”、MP3::Tag 中的“配置”和
MP3::Tag 中的“自定义”。
不兼容 - mp3信息
这个工具松散地模仿了程序 mp3信息; 它“主要”向后兼容
(尤其是通过“-N”在“naive”模式下时),并允许一个非常重要的超集
功能。 已知的向后不兼容是:
-G -h -r -d -x
缺少功能:
-f -F -i
不兼容的“%”-逃逸:
%e %E - 完全不同的语义
%v - 没有尾随 0
%q - 有小数部分
%r - 是一个数字,而不是 VBR 的“变量”一词
%u - 少一个(仅存在描述符帧?)
丢失的 ”%”-逃逸:
%b %G
反斜杠转义:仅支持“\\”、“\n”、“\t”。
“-x”以不同的格式打印数据,并非所有字段都存在,以及 ID3v2 标签名称
是输出。
环境
使用 "-e" 1、2 或 3,此脚本可能会查询环境变量 "LC_CTYPE, LC_ALL,
LANG”来推导当前编码。没有其他环境变量被直接读取
这个脚本。
但是请注意,MP3::Tag 模块具有一组丰富的编码设置默认值
可通过环境变量设置; 参见 MP3::Tag 中的“环境”。 所以这些变量
影响(间接)这个脚本的工作方式。
过时 接口
如果你不明白它是关于什么的,忽略这个公告是安全的:
旧的,pre-version=1.05 方式(通过分隔符的三倍,不重复
options) 为“-F”和 <-P> 选项提供多个命令仍然受支持,但
强烈劝阻。 (与当前界面不冲突。)
使用 onworks.net 服务在线使用 mp3info2p
