在python中检索mp3元数据的最佳方法是什么?我已经看到了几个框架,但我不确定哪个框架最好用......哪有想法?
我前几天使用eyeD3取得了很大的成功.我发现它可以在ID3标签上添加艺术品,而我看到的其他模块则不能.您必须python setup.py install
从源文件夹下载tar并执行.
该网站的相关示例如下.
读取包含v1或v2标签信息的mp3文件的内容:
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()
我以前用过mutagen来编辑媒体文件中的标签.mutagen的优点在于它可以处理其他格式,例如mp4,FLAC等.我已经编写了几个使用此API取得了很大成功的脚本.
一个问题eyed3
是它会抛出NotImplementedError("Unable to write ID3 v2.2")
常见的MP3文件.
根据我的经验,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教程中找到.
您所追求的是ID3模块.它非常简单,可以满足您的需求.只需将ID3.py文件复制到您的site-packages目录中,您就可以执行以下操作:
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
检查一下:
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()
"Dive Into Python"一书中的一个简单例子对我来说没问题,这是下载链接,例如fileinfo.py.不知道它是否是最好的,但它可以完成基本工作.
整本书可在网上点击这里.
我看了上面的答案,发现由于GPL的许可问题,它们对我的项目不利.
我发现了这个:PyID3Lib,虽然特定的python绑定发布日期很旧,但它使用的是ID3Lib,它本身是最新的.
值得一提的是,两者都是LGPL,并且很好.
只是给你们的其他信息:
看一下PythonInMusic页面中的"MP3内容和元数据编辑器"部分.