在python中獲取mp3元數據的最佳方式是什麼?我已經看到了幾個框架,但我不確定哪個最適合使用....任何想法?使用Python訪問mp3元數據
回答
This toolkit可能會做你所需要的。我不能說它是否是「最好的」,但是真的,如果它滿足你的需要,那只是重要的,對吧?
HTH
除了閱讀元數據之外,它可以完全依賴於您想要執行的操作。如果它只是您需要的比特率/名稱等,而沒有別的,輕量級的東西可能是最好的。
如果您操縱的是過去的PyMedia,可能適合。
有很多,不管你做什麼,都要確保在大量樣品介質上進行測試。特別是有幾個不同版本的ID3標籤,所以請確保它不會過時。
就我個人而言,我用這個小小的MP3Info類運氣不錯。雖然這已經很老了。
什麼你追求的是ID3模塊。這非常簡單,並會準確地給你你需要的東西。就在ID3.py文件複製到您的站點包目錄,你就可以做一些類似如下:
from ID3 import *
try:
id3info = ID3('file.mp3')
print id3info
# Change the tags
id3info['TITLE'] = "Green Eggs and Ham"
id3info['ARTIST'] = "Dr. Seuss"
for k, v in id3info.items():
print k, ":", v
except InvalidTagError, message:
print "Invalid ID3 tag:", message
只是一個說明。此模塊非常陳舊(2002),並且不支持ID3標籤的V2 – 2008-11-28 10:52:18
如果您可以使用IronPython,那就是TagLibSharp。 It can be used from any .NET language。
我前幾天用eyeD3取得了很大的成功。我發現它可以添加藝術品到ID3標籤,我看到的其他模塊不能。您必須下載tar並從源文件夾執行python setup.py install
。
本網站的相關示例如下。
讀取的MP3文件的含有任一V1或V2標籤信息的內容:
import eyeD3
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
print tag.getArtist()
print tag.getAlbum()
print tag.getTitle()
閱讀一個mp3文件(軌道長度,比特率等。)和訪問它的標籤:
if eyeD3.isMp3File(f):
audioFile = eyeD3.Mp3AudioFile(f)
tag = audioFile.getTag()
特定標記的版本可供選擇:
tag.link("/some/file.mp3", eyeD3.ID3_V2)
tag.link("/some/file.mp3", eyeD3.ID3_V1)
tag.link("/some/file.mp3", eyeD3.ID3_ANY_VERSION) # The default.
或者你可以遍歷原始幀:
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
for frame in tag.frames:
print frame
一旦標籤被鏈接到它可以被修改和保存:
tag.setArtist(u"Cro-Mags")
tag.setAlbum(u"Age of Quarrel")
tag.update()
如果鏈接的標籤是v2和你想將其保存爲V1:
tag.update(eyeD3.ID3_V1_1)
在閱讀標籤,並從文件中刪除:
tag.link("/some/file.mp3")
tag.remove()
tag.update()
添加一個新的標籤:
tag = eyeD3.Tag()
tag.link('/some/file.mp3') # no tag in this file, link returned False
tag.header.setVersion(eyeD3.ID3_V2_3)
tag.setArtist('Fugazi')
tag.update()
檢查這一個:
https://github.com/Ciantic/songdetails
用例:
>>> import songdetails
>>> song = songdetails.scan("data/song.mp3")
>>> print song.duration
0:03:12
保存更改:
>>> import songdetails
>>> song = songdetails.scan("data/commit.mp3")
>>> song.artist = "Great artist"
>>> song.save()
只是附加信息來你們:
請參閱PythonInMusic頁面中的「MP3資料和元數據編輯器」部分。
經過一些初步研究,我認爲songdetails可能適合我的用例,但它不處理.m4b文件。誘變劑。請注意,儘管一些人已經(合理地)考慮到了Mutagen的格式原生鍵的表面問題,這些鍵在格式和格式(TIT2的mp3,標題的ogg,\ xa9nam的mp4,標題的WMA等),mutagen.File )有一個(new?)easy = True參數,該參數提供EasyMP3/EasyID3標籤,該標籤具有一致但儘管有限的一組密鑰。到目前爲止,我只進行了有限的測試,但使用easy = True時,常見的鍵,如專輯,藝術家,albumartist,流派,曲目編號,discnumber等都存在且對於.mb4和.mp3文件而言是相同的。非常方便我的目的。
eyed3
的問題在於它會爲普通MP3文件丟棄NotImplementedError("Unable to write ID3 v2.2")
。
根據我的經驗,mutagen
類EasyID3
的工作更可靠。例如:
from mutagen.easyid3 import EasyID3
audio = EasyID3("example.mp3")
audio['title'] = u"Example Title"
audio['artist'] = u"Me"
audio['album'] = u"My album"
audio['composer'] = u"" # clear
audio.save()
所有其他標籤可以這樣訪問並保存,這將用於大多數目的。更多信息可在Mutagen Tutorial中找到。
最簡單的方法是songdetails ..
用於讀取數據
import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
print song.artist
同樣的編輯
import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
song.artist = u"The Great Blah"
song.save()
不要忘了名字之前加上ü,直到你知道中國語言。
u能閱讀和使用python水珠模塊
EX在大批量編輯。
import glob
songs = glob.glob('*') // script should be in directory of songs.
for song in songs:
// do the above work.
- 1. 使用Python訪問MP3音樂數據
- 2. Python:我如何使用Python訪問mp3文件的元數據?
- 3. 如何使用IPropertyStore在Windows中使用C++訪問mp3元數據?
- 4. 訪問python蛋自己的元數據
- 5. 在mp3元數據中使用python添加專輯封面
- 6. 在Windows 7中使用Python操作.mp3元數據
- 7. 使用python請求訪問ASANA數據
- 8. 使用python訪問mongodb數據庫
- 9. 如何使用Python訪問文件元數據?
- 10. 閱讀mp3的元數據
- 11. 訪問python數據結構
- 12. 如何使用Python訪問並從數據庫獲取數據?
- 13. 訪問ADO.NET元數據
- 14. 訪問PNG元數據
- 15. 訪問使用python
- 16. 訪問數據庫元數據
- 17. 使用訪問數據庫
- 18. 訪問數組中的元素Python
- 19. 訪問MP3文件信息
- 20. 問題使用來自Arduino數據的Python腳本播放mp3文件
- 21. 在Python中的文件類對象上編輯MP3元數據?
- 22. Python元素訪問性能
- 23. 使用jquery訪問speicific數組元素
- 24. 獨立於ID3標籤訪問MP3音頻數據?
- 25. 如何訪問並將數據推送到Mp3幀的LSB?
- 26. 訪問/使用元組列表中的元素python 3.x
- 27. 使用AudioStreamer獲取MP3 ID3元數據和歌曲時長
- 28. 如何獲取使用mp3存儲的元數據的URI?
- 29. 使用Swiftyjson從數組訪問數據
- 30. 使用請求訪問數值數據
這個例子有點過時,現在,無論是在Python版本方面以及在ID3版本而言... – Bex 2014-01-14 16:33:48
兩個鏈接都不再工作。 (我知道答案是9歲)如果你正在尋找在線書籍「潛入Python」,這裏是當前的[鏈接](http://www.diveintopython.net/) – 2017-11-25 08:33:57