如何提取"编码"从使用Python的mp3元数据?

时间:2015-05-22 00:00:24

标签: python metadata mp3 eyed3

我正在尝试编写一个Python脚本来从某些mp3文件中提取元数据标签。具体来说,我希望提取"专辑" "编码为",如果我右键单击文件并查看详细信息,则可以使用这些文件:

song_details

我目前正在使用eyeD3库来解析元数据。我正在使用这个库,因为我认为它很容易完成我的任务,但我没有和它结婚。

我能够提取"专辑"很容易,但不是"编码的"领域。如果我打印出所有的歌曲标签,我看不到像"编码的#34;我需要的领域。有什么想法吗?

这是我的代码:

import eyed3

def main():
    music_file = r'G:\Music Collection\54-40\Sweeter Things A Compilation\01 Miss You - 54-40.mp3'

    audiofile = eyed3.load(music_file)
    for attribute_name in dir(audiofile.tag):
        attribute_value = getattr(audiofile.tag, attribute_name)
        print attribute_name, attribute_value

if __name__ == "__main__":
    main()
    print 'done'

3 个答案:

答案 0 :(得分:1)

如果您愿意转离eyed3,那么Mutagen库值得一试。它积极维护bitbucket(https://bitbucket.org/lazka/mutagen)。

这是拉动"编码者" Mutagen中id3v2标签的字段:

from mutagen.mp3 import MP3
audio = MP3("poison-and-wine.mp3")
print "Track: " + audio.get("TIT2").text[0]
print "Encoded By: " + audio.get("TENC").text[0]

打印:

Track Poison & Wine
Encoded By JKuhn

答案 1 :(得分:1)

"由"编码标记为您在ID3 2.3 / 2.4中寻找的是TENC。是不是突然冒出来了?

答案 2 :(得分:0)

事实证明"编码由"字段隐藏在frame_set对象返回的列表中:audiofile.tag.frame_set['TENC'][0].text