2008-08-12 96 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.