我正在使用诱变剂尝试在我的媒体上查找歌词。当我运行以下命令时
import mutagen.mp3
mp3 = MP3(mp3file)
print mp3.pprint()
我可以看到框架 USLT 存在并且它包含:
USLT=[unrepresentable data]
我不明白为什么数据不可表示。我已将标签插入到 mp3 文件中,如下所示:
tags = ID3(mp3file)
tags[u"USLT::'eng'"] = (USLT(encoding=3, lang=u'eng', desc=u'desc', text="this is a test"))
tags.save()
我真的不明白为什么我需要将标签声明为 u"USLT::'eng'"] 而不是单独使用“USLT”,但我可以确认这是有效的,因为我可以看到标 checkout 现在 mp3tag 中(用于修改mp3标签的软件)
所以标签存在,有歌词。我可以在 mp3.pprint() 和 mp3tag 中看到它,但我无法使用以下代码查看它:
ulyrics = mp3["USLT"]
print ulyrics
我曾尝试将“USLT”更改为 u“USLT::'eng'”,但没有发现任何区别。 我经常看到错误消息:
File "filepath\mutagen_util.py", line 206, in getitem return self.__dict[key] KeyError: 'USLT'
但我无法判断这是诱变剂还是我的代码中的错误(因为我可以看到我需要的所有其他标签的结果)
最佳答案
此刻,对我有用的是:
from mutagen.id3 import ID3
mp3file = "... path to mp3 file ..."
tags = ID3(mp3file)
ulyrics = tags.getall('USLT')[0]
# change the lyrics text
ulyrics.text = " An arbitrary new lyrics text..."
tags.setall('USLT', [ulyrics])
# change the lyrics object completely
ulyrics = USLT(encoding=3, lang=u'eng', desc=u'desc', text="this is a test")
tags.setall('USLT', [ulyrics])
重要的是要注意,不必使用键 "USLT::'eng'"
,因为 lang
包含在 USLT
对象。
关于python - 为什么我无法显示 USLT 歌词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551661/