Python читает файл обложки MP3 - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь прочитать обложку из файла 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 голосов
/ 22 июня 2019

Тип исключения KeyError, который вы получили, вызывается методом __getitem__ объекта типа dict, когда при использовании синтаксиса dictionary[key] вы пытаетесь получить доступ для чтения значения ключа, который не хранится в словаре.

В своем коде, как указал @Thierry Lathuille в комментариях, вы совершаете эту ошибку. Вы пытаетесь получить доступ для чтения значения ключа APIC:, который не хранится в объекте типа mutagen.File, поддерживающем поиск атрибутов с помощью метода __getitem__ (как это делают словари). Правильный ключ должен быть APIC.

...
image_bytes = mutagen.File('/Users/id3-sample.mp3')['APIC'].data 
...
0 голосов
/ 22 июня 2019

Вы можете использовать Mutagen's File, Picture классы. Зацените этот ответ по foosion .

...