2008-08-12 94 views

回答

1

This toolkit可能會做你所需要的。我不能說它是否是「最好的」,但是真的,如果它滿足你的需要,那只是重要的,對吧?

HTH

7

從書中深入Python工程確定爲我一個簡單的例子,this是下載鏈接,這個例子fileinfo.py。不知道這是否是最好的,但它可以做基本的工作。

整本書在線提供here

+2

這個例子有點過時,現在,無論是在Python版本方面以及在ID3版本而言... – Bex 2014-01-14 16:33:48

+0

兩個鏈接都不再工作。 (我知道答案是9歲)如果你正在尋找在線書籍「潛入Python」,這裏是當前的[鏈接](http://www.diveintopython.net/) – 2017-11-25 08:33:57

1

除了閱讀元數據之外,它可以完全依賴於您想要執行的操作。如果它只是您需要的比特率/名稱等,而沒有別的,輕量級的東西可能是最好的。

如果您操縱的是過去的PyMedia,可能適合。

有很多,不管你做什麼,都要確保在大量樣品介質上進行測試。特別是有幾個不同版本的ID3標籤,所以請確保它不會過時。

就我個人而言,我用這個小小的MP3Info類運氣不錯。雖然這已經很老了。

http://www.omniscia.org/~vivake/python/MP3Info.py

12

什麼你追求的是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 
+11

只是一個說明。此模塊非常陳舊(2002),並且不支持ID3標籤的V2 – 2008-11-28 10:52:18

33

我用mutagen前編輯媒體文件的標籤。有關誘變劑的好處是它可以處理其他格式,如mp4,FLAC等。我已經使用此API編寫了幾個成功的腳本。

+0

http://code.google.com/p/quodlibet/ – zgoda 2008-09-17 20:25:26

88

我前幾天用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() 
5

我看了上面的答案,發現它們不適合我的項目,因爲GPL的許可問題。

而且我發現了這一點:PyID3Lib,而特別Python綁定發佈日期是舊的,它採用了ID3Lib,這本身是最新的。

值得一提的是,兩者都是LGPL,並且很好去。

8

檢查這一個:

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() 
5

只是附加信息來你們:

請參閱PythonInMusic頁面中的「MP3資料和元數據編輯器」部分。

0

經過一些初步研究,我認爲songdetails可能適合我的用例,但它不處理.m4b文件。誘變劑。請注意,儘管一些人已經(合理地)考慮到了Mutagen的格式原生鍵的表面問題,這些鍵在格式和格式(TIT2的mp3,標題的ogg,\ xa9nam的mp4,標題的WMA等),mutagen.File )有一個(new?)easy = True參數,該參數提供EasyMP3/EasyID3標籤,該標籤具有一致但儘管有限的一組密鑰。到目前爲止,我只進行了有限的測試,但使用easy = True時,常見的鍵,如專輯,藝術家,albumartist,流派,曲目編號,discnumber等都存在且對於.mb4和.mp3文件而言是相同的。非常方便我的目的。

11

eyed3的問題在於它會爲普通MP3文件丟棄NotImplementedError("Unable to write ID3 v2.2")

根據我的經驗,mutagenEasyID3的工作更可靠。例如:

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中找到。

3

最簡單的方法是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.