Linux脚本将FLAC(ID3)标签从FLAC传输到MP3

对于我的媒体服务器,我正在寻找将标签从FLAC文件传输到MP3的方法。

在一个bash脚本中,我可以使用metaflac提取标签到本地variables,但是当用id3v2标记mp3时,我似乎失去了国家字符(猜测它必须是unicode?)

另外,我需要能够设置重播增益标签和专辑封面(全部出现在FLAC中)。

我正在寻找一个脚本解决scheme来运行无人值守。

尝试这个工具eyed3 。 它支持专辑封面,文本编码latin1,utf8,utf16-BE和utf16-LE。 但是不支持重放增益。 据我所知,这并没有得到广泛的支持。

如果您对Python解决方案感兴趣,诱变库看起来非常好。

它可以像以下一样简单:

from mutagen.flac import FLAC from mutagen.easyid3 import EasyID3 flacfile = FLAC("flacfile.flac") mp3file = EasyID3("mp3file.mp3") for tag in flacfile: if tag in EasyID3.valid_keys.keys(): mp3file[tag] = flacfile[tag] mp3file.save() 

我发现这个解决方案将mp3 id3标签复制到FLAC文件中。

维克多的解决方案告诉我的方式。 但是,如果将标签复制到刚刚转换的文件(例如从flac到mp3),则可能会失败。 也就是说,如果您正在复制标签的文件没有任何标签,则将会失败。

所以你可能需要首先填入目标文件,给它的手段有标签。

 from mutagen import File from mutagen.flac import FLAC from mutagen.easyid3 import EasyID3 from mutagen.id3 import ID3, ID3NoHeaderError def convert_tags(f1,f2): # f1: full path to file copying tags from # f2: full path to file copying tags to # http://stackoverflow.com/questions/8873364/linux-script-to-transfer-id3-tags-from-flac-to-mp3 # http://stackoverflow.com/a/18369606/2455413 try: meta = EasyID3(f2) except ID3NoHeaderError: meta = File(f2, easy=True) meta.add_tags() meta.save() from_f = FLAC(f1) to_f = EasyID3(f2) for tag in from_f: if tag in EasyID3.valid_keys.keys(): to_f[tag] = from_f[tag] to_f.save() return