分享

foobar2000搜索规则代码的常见问题与解答

 温柔一哮 2011-04-02

搜索规则代码的常见问题与解答

本帖最后由 karevos 于 2011-2-15 08:57 编辑

  下面这篇 QA 面向的读者应该是对 fb2k 的界面布局、标题格式化语句有初步了解的朋友们,这些内容适用于几乎所有具备搜索功能的封面显示组件,例如 WSH Cover、ELPlaylist、Album Art Panel、CUI 的 Artwork View 等掌握它将对你很有益处。
  • 如果你看不懂我写的是什么,并且不希望接触代码,那么请忽略这篇 QA。
  • 如果你有学习的意愿,希望了解标题格式化,请看这里
  • 如果你愿意更进全面的学习标题格式化,请看这里
  • 学习代码最好的方式就是不断练习实践,如果你想测试你的代码是否正确,CUI 全局变量可以帮助你。
  • 如果你是初学者,想实践你的想法,我建议你从 foo_uie_albumart 开始,虽然这个插件有点老,但它有相对完整的 WIKI 和友善的操作界面,易于自学。




Q: 这是什么?
A: 呃……这是一个以标题格式化函数 $replace() 的使用为模板,关于专辑图片搜索代码规则的常见问题解答,面向新手。

Q: 我的专辑图片与歌曲在同一个文件夹下,名为front.jpg,该怎么写?
A: $replace(%path%,%filename_ext%,)front.jpg

Q: 那么front.png呢?
A: $replace(%path%,%filename_ext%,)front.png

Q: 如果我有很多专辑文件夹,有的文件夹下是front.png,而有的是front.jpg,怎么办?
A: $replace(%path%,%filename_ext%,)front.*p*g

Q: 如果有的文件夹内还有cover.jpg和folder.png,怎么办?
A: 好办,那就再加两行,按顺序搜索:
  $replace(%path%,%filename_ext%,)front.*p*g
  $replace(%path%,%filename_ext%,)cover.*p*g
  $replace(%path%,%filename_ext%,)folder.*p*g

Q: 我重命名了图片名,与歌曲文件名一致,怎么写?
A: $replace(%path%,%filename_ext%,)%filename%.*p*g

Q: 与歌曲标签中的标题名称一致,怎么写?
A: $replace(%path%,%filename_ext%,)%title%.*p*g

Q: 要是与歌曲标签中的专辑名称一致呢?
A: $replace(%path%,%filename_ext%,)%album%.*p*g

Q: 如果有更多不同名字的图片,怎么办?
A: 代码不宜过多,为了提高搜索效率,改名吧!

Q: 对于歌曲文件所在文件夹的子文件夹内的图片,如何处理?例如“xxx\心跳\BK\front.jpg”
A: $replace(%path%,%filename_ext%,BK\)front.*p*g

Q: 我的歌曲位于“xxx\王力宏\心跳”这个文件夹下,但是图片位于“xxx\王力宏\BK”这个文件夹下,该怎么写?
A: $replace(%path%,%directoryname%\%filename_ext%,BK\)front.*p*g
  或者写成下面这样,结构更清晰(感谢版主 realhaiy 补充):
  $replace($directory_path(%path%),%directoryname%,BK\)front.*p*g

Q: 有的子文件夹是BK,有的是booklet,还有的是jacket等等,怎么办?
A: 改名!

Q: 如果我所有不同歌曲的图片是集中在同一个文件夹中,该怎么办呢?
A: 不建议这样做,命名、搜索可能会遇到更多的问题。

Q: 可是我已经这样做了,并且,我的专辑图片集中存放在 M:\Music\Art 目录中,它们与各自对应的歌曲文件同名,我该如何书写搜索代码?
A: M:\Music\Art\%filename%.*p*g

Q: 我的专辑图片集中存放在 M:\Music\Art 目录中,它们与各自对应的歌曲文件所在的目录同名,我该如何书写搜索代码?
A: M:\Music\Art\%directoryname%

Q: 上面说了这么多,到底在哪里设置啊?
A: 如果你使用了 CUI 的 Artwork view,可以在 "Preferences-->Display-->Column UI-->Artwork" 设置,仅用于 CUI;如果是 WSH Cover,一般在右键属性里有设置的地方;如果是 Album Art Panel (foo_uie_albumart),请参考它的 WIKI;如果是 ELPlaylist……哦,我的天,怎么这么多如果,你需要查阅它们的手册,或者咨询界面配置的作者。

Q: 哪里能找到关于$replace语句更详细的资料呢?
A: 这里

Q: 你用的$replace语句好麻烦啊,我有更简单的写法。
A: 那就烦请您不吝赐教,我来改进咯。

Q: jensen 版主提出用$directory_path(%path%)来替代$replace,看起来可以缩短代码长度,具体怎么操作呢?
A: 以“xxx\心跳\BK\front.jpg”为例,可以写成$directory_path(%path%)\BK\front.*p*g,其他情况下 的用法请以此类推。

Q: 我的歌曲标签不全,没有album字段,可以使用了$replace(%path%,%filename_ext%,)%album%.*p*g这样的句 式吗?
A: 不可以!这样会导致显示不正确的图片。

Q: 我的歌曲很多,并非所有歌曲都没有album字段,但我确实很喜欢用$replace(%path%,%filename_ext%,) %album%.*p*g这个句式。
A: 用条件语句吧,对没有album字段的歌曲进行区别对待,可以写成类似下面这样:
  $if(%album%,$replace(%path%,%filename_ext%,)%album%.*p*g,...)...

Q: 凡事总有例外,我们平时在听歌时会发现,有些 Artist 的名字中会含有非法字符,尤其是国外歌手,比如 AC/DC, *Nsync, Sixx:A.M. (他们可能不懂计算机语言^-^,起这么怪的名字)。很显然,Windows 是不允许在文件名中出现 /, \, *, :, ? ,>, <, |, " 这些非法字符的,所以我们不得不使用一些合法字符来替代它们,例如下划线 "_"。那么搜索代码该怎么写呢?
A: replace 是什么意思?不就是 “替代” 嘛!在搜索的时候我们可以这样写(感谢版友 嘉 荣 补充):
  $replace(%artist%,'/','_','*','_','?','_','>','_','<','_'...,)...

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多