foobar2000 常用内置变量
后知后觉 暂无评论

在配置 foobar2000 不可避免得要使用其内置变量

比如在配置自动转码中配置转码后的文件名,可以使用格式化序列 %tracknumber%. %artist% - %title%

常用格式化语法参考

一般字段

关键字解释
%title%音轨标题。若元数据 “title” 不存在则使用文件名代替
%artist%艺术家名。依次检查下列元数据字段: “artist”, “album artist”, “composer”, “performer”
%album artist%专辑艺术家名。依次检查下列元数据字段: “album artist”, “artist”, “composer”, “performer”。与 %artist% 不同的是 %album artist% 用于在整张专辑有不同艺术家的情况
%track artist%音轨艺术家名。仅在 %album artist% 与 %artist% 不同的时候有效。用于与 %album artist% 共同使用以指定专辑中的不同艺术家,例如: ”%album artist% - %title%[ '//' %track artist%]” ;在这种情况下,最后一部分内容仅会在有根据音轨指定的艺术家存在时才会显示
%album%专辑名。依次检查下列元数据字段: “album”, “venue”
%date%年代。使用元数据 “date” 字段
%genre%流派,使用元数据 “genre” 字段
%tracknumber%音轨号。仅在存在元数据 “tracknumber” 字段时有效
%totaltracks%合计音轨。仅在存在元数据 “totaltracks” 字段时有效
%discnumber%光盘编号。仅在存在元数据 “discnumber” 或 “disc” 字段时有效
%totaldiscs%合计光盘。仅在存在元数据 “totaldiscs” 字段时有效
%codec%编码格式名。若无法有效取得准确的编码格式,使用文件后缀
%codec_profile%关于编码设置的附加信息,并不总是有效。
%filename%文件名,不包括后缀名和目录
%filename_ext%文件名,包括后缀名但不包括目录
%directoryname%文件所处目录名
%path%文件路径,注意排序时应使用 %path_sort% 而非 %path%
%subsong%文件内的音轨编号,用于单文件支持多音轨的文件格式(例如章节和CUE)
%path_sort%结合了音轨号的文件路径,用于排序;返回值不确定,因此不应依赖其返回值
%length%长度,格式为 [HH:]MM:SS
%length_seconds%长度,单位为秒,格式是整数
%bitrate%比特率,单位为千比特每秒(kbps);支持动态 VBR 比特率
%channels%声道数(mono/stereo/etc)
%samplerate%采样率,单位为 Hz
%replaygain_track_gain%,
%replaygain_album_gain%,
%replaygain_track_peak%,
%replaygain_album_peak%
播放增益相关信息
%filesize%文件大小,单位为字节
%filesize_natural%文件大小,将根据实际情况返回如MB或KB的形式
%last_modified%返回文件最后更改时间,格式为 YYYY-MM-DD HH:MM:SS

上下文字段

关键字解释
%list_index%指定项目所在的列表编号。应用于:播放列表,由 masstagger/massrenamer 处理过的项目的列表,等等。在结果前补足0以适应列表中最大数的位数
%list_total%指定项目所在列表的总项目数。应用于:播放列表,由 masstagger/massrenamer 处理过的列表,等等
%isplaying%若当前项目正在播放则有效,例如:一个播放列表项正在播放。用于 $if() 中的条件
%ispaused%若当前项目正在播放并处于暂停状态则有效,例如:一个播放列表项已暂停。用于 $if() 中的条件
%playback_time%当前播放时间,格式为 [HH:]MM:SS。仅在某些使用播放上下文信息的地方有效,例如状态栏
%playback_time_seconds%当前播放时间,单位为秒。格式为整数。仅在某些使用播放上下文信息的地方有效,例如状态栏
%playback_time_remaining%剩余播放时间,格式为 [HH:]MM:SS。仅在某些会使用播放上下文信息的地方有效,例如状态栏。若当前播放音轨无持续时间信息则无效
%playback_time_remaining_seconds%剩余播放时间,单位为秒。格式为整数。仅在某些使用播放上下文信息的地方有效,例如状态栏。若当前播放音轨无持续时间信息则无效
%queue_index%指定项目所处队列的编号,仅对播放列表有效
%queue_indexes%指定项目所处队列的编号列表,仅对播放列表有效。当指定项目仅在队列中出现一次则与 %queue_index% 等价
%queue_total%队列的项目总数。由于技术上的原因该字段仅对属于队列中音轨有效

函数

关键字解释示例
$abbr(X)返回参数 X 的缩写$abbr(%album%)
$abbr(X,Y)若 X 的长度不大于 Y,则返回 X 的缩写,否则返回 X$abbr(%album%,5)
$ansi(X)返回字符串 X 中属于当前代码页的部分,否则替换为相应最适合的字符。一般用于清理文件名与外部一些对Unicode支持不好的软件交互$ansi(%title%),<br>$ansi(%filename%)
$ascii(X)返回字符串 X 中属于ASCII表部分,否则替换为相应最适合的字符。一般用于与外部一些对Unicode支持不好的软件交互$ascii(%title%),<br>$ascii(%filename%)
$lower(X), $upper(X)将 X 转换到小写/大写$upper(%title%)
$num(X,Y)显示数字 X 并在前补足0使其长度不小于 Y (用于音轨号等)$num(%tracknumber%,3)
$caps(X)将所有单词的第一个字母转换为大写,所有其他字母转换为小写,例如: “blah BLAH” ⇒ “Blah Blah”$caps(%title%)
$caps2(X)类似于 $caps,但是不改变已为大写的字母,例如: “blah BLAH” ⇒ “Blah BLAH”$caps2(%title%)
$if(X,Y,Z)若 X 包含了至少一个有效字段,则执行/显示 Y, 否则执行/显示 Z$if(%artist%,%artist%,unknown artist)
$if2(X,Y)与 $if(X,X,Y) 相同/
$if3(X,Y,Z,..)返回首先包含至少一个有效字段的参数/
$ifgreater(A,B,C,D)若数字 A 大于 B, 则执行/返回 C,否则执行/返回 D/
$iflonger(A,B,C,D)若字符串 A 长度大于 B,则执行/返回 C,否则执行/返回 D/
$ifequal(A,B,C,D)若数字 A 等于 B,则执行/返回 C,否则执行/返回 D/
$longest(A,B,C,….)比较字符串 A,B,C,…并返回最大长度的字符串$longest(%title%,%filename%)
$len(X)返回字符串 X 的长度/
$pad(X,Y)对字符串 X 前补足空格使其长度不小于 Y/
$pad_right(X,Y)对字符串 X 后补足空格使其长度不小于 Y/
$pad(X,Y,Z),<br>$pad_right(X,Y,Z)对字符串 X 前/后补足字符 Z 使其长度不小于 Y/
$cut(X,Y)截取 X 使其长度为 Y/
$padcut(X,Y)对字符串 X 前补足空格,并截取结果使其长度不大于 Y
$padcut_right(X,Y)对字符串 X 后补足空格,并截取结果使其长度不大于 Y
$insert(A,B,N)向字符串 A 中 N 个字符后插入字符串 B
$add(X,Y)数学运算,加
$sub(X,Y)数学运算,减
$mul(X,Y)数学运算,乘
$div(X,Y)数学运算,除
$mod(X,Y)数学运算,取模
$min(X,Y)数学运算,最小值
$max(X,Y)数学运算,最大值
$left(X,Y)返回字符串 X 的头 Y 个字符
$right(X,Y)返回字符串 X 的后 Y 个字符
$and(X,Y)逻辑运算符,与(用于与 $if() 协作)
$or(X,Y)逻辑运算符,或
$xor(X,Y)逻辑运算符,异或
$not(X)逻辑运算符,非
$fix_eol(x[,y])截取多行字符串,在字符串尾添加 ” (…)” (第一个版本) 或 y (第二个版本,可选参数)
$meta(X)返回元数据字段 X 的值$meta(artist)
$meta_sep(X,Y,[Z])返回元数据字段 X 中的值,对于多值情况,加上自定义分隔符$meta(artist,', ',' and ') ⇒ “artist1, artist2 and artist3”
$meta_num(X)返回元数据字段 X 中值的数目
$info(X)返回名为 X 的技术信息$info(bitrate)
$char(X)插入编号为 X 的 Unicode 字符$char(9674)
$strcmp(X,Y)当字符串 X 和 Y 相同时返回 “1”,否则返回空字符串,用于与 $if() 协同使用
$stricmp(X,Y)$strcmp(X,Y) 的不区分大小写版本
$directory(X,[N])从文件路径 X 中提取目录名,附加选项指定提取上 N 级目录名$directory(%path%,2)
$directory_path(X)从文件路径 X 中获取相应目录路径$directory_path(%path%)
$greater(X,Y)比较两个整数,检测是否 X > Y,用于与 $if() 和 逻辑运算符共同使用
$longer(X,Y)比较两个字符串,检测是否 X 长度大于 Y,用于与 $if() 和 逻辑运算符共同使用
$strchr(X,Y)查找字符串 X 中字符 Y 首先出现位置
$strrchr(X,Y)查找字符串 X 中字符 Y 最后出现位置
$strstr(X,Y)查找字符串 X 中字符串 Y 中首先出现位置
$progress2(A,B,C,D,E)创建进度条(版本2)$progress2(%playback_time_seconds%,%length%,20,’#’,’=’) ⇒ ”#####===============”
$select(N,A,B,C,….)返回从 A,B,C... 的第 N 个参数
$repeat(X,N)重复 X N 次
$ext(X)从文件名/路径 X 中提取后缀名$ext(%path%)
$substr(A,B,C)返回 A 的子串,从第 B 个字符到 第C 个字符$substr(blah,1,2) ⇒ “bl”
$trim(A)移除字符串 A 中首/尾空白字符$trim(%title%)
$tab()生成一个制表符,等同于 $char(9)。参见下面 “Tab(制表符)” 以获取详尽信息
$stripprefix(X)将前缀 “A” 和 “The” 从X中移除$strippefix(%artist%) ⇒ “The Prodigy” 变为 “Prodigy”
$stripprefix(X,prefix1,prefix2,…)将指定前缀从 X 中移除$stripprefix(%artist%,a,the) ⇒ “The Prodigy” 变为 “Prodigy”
$swapprefix(X)将前缀 “A” 和 “The” 移动到 X 尾$swapprefix(%artist%) ⇒ “The Prodigy” 变为 “Prodigy, The”
$swapprefix(X,prefix1,prefix2,…)将指定前缀移动到 X 尾$swapprefix(%artist%,a,the) ⇒ “The Prodigy” 变为 “Prodigy, The”
$year(time)从时间/日期字符串中得到“年”(格式为4位数字)$year(%last_modified%)
$month(time)从时间/日期字符串中得到“月”(格式为2位数字)$month(%last_modified%)
$day_of_month(time)从时间/日期字符串中得到月中的第几天(格式为2位数字)$day_of_month(%last_modified%)
$date(time)从时间/日期字符串中得到日期信息(格式为 YYYY-MM-DD)$date(%last_modified%)
$time(time)从时间/日期字符串中得到时间信息(格式为 HH:MM:SS 或 HH:MM)$time(%last_modified%)

变量操作

关键字解释示例
$put(name,text)设置名为 name 的变量的值为 text 并且返回 text“$put(x,blah)” 设置变量 x 为 “blah” 并且返回 “blah”
$puts(name,text)$put() 的静默版本。与 $put(name,text) 作用相同,但返回空字符串
$get(name)返回名为 name 的值,若变量不存在,返回空字符串“$puts(x,blah)$get(x)$get(x)” 返回 “blahblah”

其它

关键字解释示例
[ … ]若字段不存在引用则丢弃方括号中的所有内容。主要用于创建部分仅在相关字段有效时的格式化脚本%artist% - [%album% / ]%title%
' (单引号)插入指定文本忽略语法处理;允许有特殊字符比如"%"、"$"、"["和"]"。若需要在文本中插入单引号,可以使用 '' (两个单引号)
//注释,仅能用于行首;注释后的文本从行首到行尾不会被解析
EOL (结束字符)忽略 可以使你的脚本拆分为多行以增加可读性,而不会影响结果
Tab (制表符)用于对特定上下文文本进行对齐,例如状态栏。参见: $tab()%title%$tab()%length%
< > (颜色控制)用于控制文本颜色的深浅,现在可用于播放列表和状态栏.深浅都有3个级别,可通过重复颜色控制字符控制级别<浅> >深< >>更深<<

附录

参考链接

如果遇到问题或者对文章内容存疑,请在下方留言,博主看到后将及时回复,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。