MP3 ID3 tag自动转码工具

老版本ID3 tag的标准本来只支持ISO-8859-1,也就是只能用西方拉丁字母。新的ID3 tag还支持Utf-16, 所以中文啊越南文之类的都能支持了。

问题是许多网上的mp3歌曲id3 tag编码很不规范。。。拿我来说吧,我有7000多首中文mp3。。。而这些中文歌曲的Id3编码是五花八门:

Gb2312/big5/big5hkjcs 甚至utf-8都有,还有很多根本没有tag而是把作者和歌名都放在文件名上。 这样听歌的时候就比较头痛了--在播放器里不知道现在听的是什么歌, 哪个歌手、专辑等。浏览、搜索歌曲也很不方便。在windows还好点,因为许多windows上的jukebox支持GBK编码能看不少繁体字,但到了苹果的OSX上就无法忍受了:OSX只支持unicode, itunes严格只支持ISO-8859-1和UTF-16.

查了一下网上,有些工具但没法满足我的要求:或者只能一次转几个文件--我几千个文件在几百个目录里怎么搞啊,或者一次只支持一种编码的转换--这有个问题:比如用gb2312来转,会把用big5/utf-8码的文件tag弄坏了。

所以只好自己动手写个小utility了。。。

这是个简单python script, 基于一位在英国的澳洲华人写的开源pytagger library (http://www.liquidx.net/pytagger/) , 以及他的tagencoder程序。

pytagger被我稍微改动了一下增强robustness.

下载: 点击下载

用法:

–下载后把文件后缀改为 .tar.gz (或.tgz)

--系统需求:需要在机器上有python. unix/linux一般都有,windows自己去python.org下载安装就行了。

在命令行敲:

python ConvertMp3.py < 目录名>

-- 自动 将该目录下以及所有子目录下所有.mp3 和.mp2文件的ID3 tag转换成 UTF-16.

– 如果id3 tag的"title"/"artist"空白, 自动根据文件名和路径填上。

可能的enhancement: 自动根据网上的音乐识别服务鉴别mp3的信息并填写tags. 注意不是指CDDB一类识别CD tracks的,而是根据声学曲线识别音乐(acoustics recognition)的musicBrainz一类服务。但是目前musicBrainz里中文歌曲信息太少所以效果估计不好。