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()
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
5条答案
按热度按时间r9f1avp51#
如果您对Python解决方案感兴趣,那么诱变剂库看起来真的很不错。
它可以像这样简单:
我发现这个解决方案复制mp3 id3标签到FLAC文件。
7uhlpewt2#
试试这个工具eyed3。它支持专辑封面嵌入,文本编码在latin 1,utf8,utf 16-BE和utf 16-LE。但不支持重放增益。据我所知,它不是广泛支持。
3xiyfsfu3#
维克托的解决方案给我指明了方向。但是,如果将标签复制到刚转换过的文件(例如,从flac转换为mp3),它可能会失败。也就是说,如果要将标签复制到的文件没有任何标签,它将失败。
因此,您可能需要首先启动目标文件,使其具有标记的方法。
hl0ma9xz4#
下面是另一个使用ffmpeg的解决方案。例如,只需要在$HOME/.bashrc中定义一个bash函数:
xytpbqjk5#
Quod Libet附带了一个名为operon的命令行工具,可执行以下操作及更多操作:
由于Quod Libet是基于Mutagen构建的,它知道一堆晦涩难懂的标签,以及如何在各种标签格式之间转换它们,这对一些工作流很重要。我注意到的唯一怪癖是它不会复制空值标签,但这并不困扰我。