Python 3.8 Mutagen 无法读取 GEOB 标签

我将 PyDev 与 Eclipse 一起使用。Mutagen 通过 Anaconda 安装。


我有 C 语言经验,但决定尝试一下 Python。不知道为什么这不起作用,而且 Mutagen 的例子并不多。这是一个简单的 mp3,我正在尝试从中读取标签。我检查了 Mutagen 规范,GEOB 类确实存在。但我不明白我错过了什么。


这是我的 python 文件:


import mutagen


from mutagen.id3 import ID3


audio = ID3("Test.mp3") #path: path to file


titleData = audio.get('TIT2')

print(titleData)


tagData = audio.get('GEOB')  # returns None as a default

print(tagData)

    

 

print("Done!")

这是输出:


Stupid Song

None

Done!

我使用文件 Test.mp3 作为我的测试用例。如果我用十六进制编辑器打开,我会看到实际上有一个 GEOB 标签:

https://img1.sycdn.imooc.com/654cdb1b00017c3306530509.jpg

所以我希望看到“无”以外的输出。任何帮助表示赞赏!



不负相思意
浏览 152回答 2
2回答

紫衣仙女

我既不知道 mutagen 也不知道 Python,但根据手册,任何文本框架(即您的TIT2)都是基于mutagen.id3.TextFrame类,具有一个.text属性。所以当你发出:titleData = audio.get('TIT2')...你实际上是这样做的:titleData = audio.get('TIT2').text考虑到这一点,现在看看mutagen.id3.GEOB:它没有任何这样的属性。这取决于你选择你想要得到什么——也许吧.desc?

蓝山帝景

要获取具有给定标识符的所有帧,方法调用是“getall”而不是“get”。以下方法返回歌曲标题和所有 GEOB 帧。def get_tags_mutagen(filepath):    audio = ID3(filepath) #path: path to file        titleData = audio.getall('TIT2')    print("Song Title: ", titleData)    tagData = audio.getall('GEOB')  # returns None as a default    for i in tagData:        print(i)    return tagData
打开App,查看更多内容
随时随地看视频慕课网APP