我將 PyDev 與 Eclipse 一起使用。Mutagen 通過 Anaconda 安裝。我有 C 語言經驗,但決定嘗試一下 Python。不知道為什么這不起作用,而且 Mutagen 的例子并不多。這是一個簡單的 mp3,我正在嘗試從中讀取標簽。我檢查了 Mutagen 規范,GEOB 類確實存在。但我不明白我錯過了什么。這是我的 python 文件:import mutagenfrom mutagen.id3 import ID3audio = ID3("Test.mp3") #path: path to filetitleData = audio.get('TIT2')print(titleData)tagData = audio.get('GEOB') # returns None as a defaultprint(tagData) print("Done!")這是輸出:Stupid SongNoneDone!我使用文件 Test.mp3 作為我的測試用例。如果我用十六進制編輯器打開,我會看到實際上有一個 GEOB 標簽:所以我希望看到“無”以外的輸出。任何幫助表示贊賞!
2 回答

紫衣仙女
TA貢獻1839條經驗 獲得超15個贊
我既不知道 mutagen 也不知道 Python,但根據手冊,任何文本框架(即您的TIT2
)都是基于mutagen.id3.TextFrame類,具有一個.text
屬性。所以當你發出:
titleData?=?audio.get('TIT2')
...你實際上是這樣做的:
titleData?=?audio.get('TIT2').text
考慮到這一點,現在看看mutagen.id3.GEOB:它沒有任何這樣的屬性。這取決于你選擇你想要得到什么——也許吧.desc
?

藍山帝景
TA貢獻1843條經驗 獲得超7個贊
要獲取具有給定標識符的所有幀,方法調用是“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
- 2 回答
- 0 關注
- 214 瀏覽
添加回答
舉報
0/150
提交
取消