python - 为什么我无法显示 USLT 歌词

标签 python python-2.7 mutagen

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

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/

相关文章:

python - 费马分解不起作用(python)

python - 带有 dill 的模块中的 Pickle 类定义

python - 带有 Python3 和 Mutagen 的 iTunes MP4 标签/元数据

c++ - 如何找到指向结构的指针的地址并将其转换为 CFFI 中的 void**

python - 如何在 python LDAP 中组合搜索过滤器?

python - 什么是 "TPE1"KeyError?

django - 在表单的清理方法中读取文件数据

python - Python 中跨平台的 Kivy 和 Toga(Beeware 项目)的区别

python - from import 语法丢弃以 _(下划线)开头的属性

python - 'ascii' 编解码器无法解码字节 0xef 的位置