Playlist

虽然很少听歌,但还是收集了几十首mp3。投靠Linux阵营之后,一般使用xmms播放,偶尔也用mplayer,效果都还不错,唯一的遗憾是播放列表不能正常显示。

上个周末闲来无事,浏览CPAN,发现了几个操作mp3标签的module,顺手装上玩了一下,写了两个小程序,分别把id3v1和id2v2两种标签内容的编码从GBK转到UTF-8。第一个变化是在nautilus里面鼠标右键=>属性=>音频tab页上能够正确显示标签内容,其次,在totem和bmp里面也能正确显示,xmms还是没搞定。由于totem退出时总是报异常出来,我就选择bmp了。

奇怪的是,在公司的电脑上只有bmp能正常显示,其它的都不行了。所以,如果您要尝试这两个脚本,最好先备份您的mp3,本人不对任何运行结果负责!:-(

由于前面有使用Encode的经验,这次主要是学习mp3标签的知识以及相应module的使用方法。两个脚本的功能如下:

getmp3info
显示id3v1格式的标签,并(可选的)能够将其内容的编码从GBK转为UTF-8。使用MP3::Info
mp3tagconvert
显示id3v2格式的标签,以及编码转换。使用MP3::Tag

两个程序的选项是一样的,用法如下:(仅以getmp3info为例)

# 查看id3v1格式标签,如能正常显示,说明编码为UTF-8。
$ getmp3info 1.mp3
# 查看id3v1格式标签,如能正常显示,说明编码为GBK
$ getmp3info --gbk 1.mp3
# 遇到混合编码,可以使用x选项禁止对某个或某些内容做编码转换。
$ getmp3info --gbk --x TITLE --x ARTIST 1.mp3
# 编码转换
$ getmp3info --convert --x TITLE --x ARTIST 1.mp3

其实,播放列表对我这种不常听歌(而且很少更新)的人作用不大,就那几首老歌,熟门熟路的。对于歌迷来说,作用也有限,新歌混熟了之后谁还需要这玩意?!可在某些情况下,它却成了像我这样的End User选择播放软件的重要标准!bmp就这样胜出了,至少是在我的机器上。然而,这样的选择标准是不是不够专业呢?作为一名程序员,我也会觉得用户有时的需求很怪异,为什么要把注意力放在一些无关紧要的事情上呢?处在不同的位置,会有不同的想法,典型的屁股决定脑袋!:-)

Building block

随手写个小程序还是容易的,毕竟有那么多开源的程序、库和语言。可是,要在我们开发的产品上实现一个哪怕是简单的想法,都不容易,因为什么都要从头写起,甚至是解析命令行参数这样的基本功能。