Python读取MP3封面文件

时间:2019-06-22 06:18:49

标签: python-3.x mp3 cover mutagen apic

我正在尝试使用以下代码从MP3文件中读取封面。

import tkinter as tk
from PIL import Image, ImageTk
from io import BytesIO
import mutagen
from mutagen.id3 import APIC

root = tk.Tk()
image_bytes = mutagen.File('/Users/id3-sample.mp3')['APIC:'].data 
image_stream = BytesIO(image_bytes)
img = ImageTk.PhotoImage(Image.open(image_stream))
tk.Label(root, image = img).pack() 

但是我收到以下错误消息:

File  "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mutagen/_util.py", line 536, in __getitem__
return self.__dict[key]
builtins.KeyError: 'APIC:'

2 个答案:

答案 0 :(得分:0)

您可以使用Mutagen的文件,图片类。 通过foosion签出此答案。

答案 1 :(得分:0)

当您使用语法KeyError尝试访问以下类型的对象时,类型__getitem__的对象的dict方法引发的异常类型dictionary[key]读取未存储在字典中的键的值。

在您的代码中,正如@Thierry Lathuille在注释中指出的那样,您正在执行此错误。您正在尝试访问以读取键APIC:的值,该值没有存储到支持通过mutagen.File方法进行属性检索的__getitem__类型的对象中(如字典一样)。正确的密钥应为APIC

...
image_bytes = mutagen.File('/Users/id3-sample.mp3')['APIC'].data 
...