在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