3

我正在使用诱变剂尝试在我的媒体上查找歌词。当我运行以下

import mutagen.mp3

mp3 = MP3(mp3file)
print mp3.pprint()

我可以看到框架 USLT 存在,它包含:

USLT=[无法表示的数据]

我不明白为什么数据不可表示。我已将标签插入到 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" 但我可以确认这是有效的,因为我可以看到标签出现在 mp3tag 中(软件用于修改mp3标签)

所以标签存在,带有歌词。我可以在 mp3.pprint() 和 mp3tag 中看到这一点,但我无法使用以下代码查看它:

ulyrics = mp3["USLT"]
print ulyrics

我曾尝试将“USLT”更改为 u“USLT::'eng'”,但没有任何区别。我经常看到错误信息:

文件“filepath\mutagen_util.py”,第 206 行,在getitem中 返回 self.__dict[key] KeyError: 'USLT'

但我不知道这是诱变剂还是我的代码中的错误(我可以看到我需要的所有其他标签的结果)

4

1 回答 1

1

此刻,对我有用的是:

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])

重要的是要注意,没有必要使用 key "USLT::'eng'",因为lang包含在USLT对象中。

于 2020-06-23T18:27:09.153 回答