Не удается встроить обложку в MP3 в Python 3.5.2 - PullRequest
0 голосов
/ 26 июня 2018

У меня есть этот файл "image.jp и этот файл .mp3:

" Green Day - Когда я прихожу [Официальное музыкальное видео] .mp3 "

в каталоге" test"

Я уже успешно установил теги как Автор, Заголовок, Альбом и т. Д. С помощью библиотеки eyeD3. Затем я пытаюсь установить обложку.

Я пробовал две возможности, но ни однойиз них сработало: Первый: Мутаген :

from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error

complete_file_path = "test\\"+"Green Day - When I Come Around [Official Music Video].mp3"
path_to_thumb_wf = "test\\"+"image.jpg"

audio = MP3(complete_file_path, ID3=ID3)
# add ID3 tag if it doesn't exist
try:
    audio.add_tags()
except error:
    pass

print(path_to_thumb_wf)

audio.tags.add(
    APIC(
        encoding=3, # 3 is for utf-8
        mime='image/jpg', # image/jpeg or image/png
        type=3, # 3 is for the cover image
        desc=u'Cover',
        data=open(path_to_thumb_wf, 'rb').read()
    )
)
audio.save(v2_version=3)

И решение с использованием eyeD3

audiofile = eyed3.load(complete_file_path)


# read image into memory
imagedata = open(path_to_thumb_wf,"rb").read()

# append image to tags
audiofile.tag.images.set(3,imagedata,"image/jpeg", u"you can put a description here")

audiofile.tag.save()

Я использую Python 3.5.2 в Windows 10. И я не знаю, может ли это повлиять на результат, но я все равно скажу, что в песне уже есть обложка, которую я хотел бы изменить.

1 Ответ

0 голосов
/ 26 июня 2018

Как объяснено в разделе ID3v2.3 на APIC:

Может быть несколько изображений, прикрепленных к одному файлу, каждое в отдельном кадре "APIC",но только один с тем же дескриптором контента.Может быть только одно изображение с типом изображения, объявленным как тип изображения $ 01 и $ 02 соответственно.

В v2.3, IIRC, «дескриптор контента» фактически нигде не задокументирован, поэтому разные клиенты могутделайте здесь немного разные вещи, но большинство инструментов будут обрабатывать его либо как тип изображения плюс строка описания, либо как весь заголовок (кодировка текста, тип MIME, тип изображения и закодированное описание) как двоичный двоичный объект.(А некоторые инструменты просто игнорируют его и позволяют хранить изображения с совершенно одинаковыми заголовками кадров, но я не думаю, что это актуально для Mutagen.)

В любом случае это означает, что вы, вероятно, просто добавляете другойCover (front) изображение с именем 'Cover' вместо замены существующего.


Вы не объяснили, как вы смотрите на файл.Но я предполагаю, что вы пытаетесь открыть его в проигрывателе Windows Media, iTunes или каком-либо другом проигрывателе или просмотреть в проводнике Windows (который, я думаю, просто просит WMP прочитать тег), или что-то в этом роде?

Почти все такие инструменты, когда сталкиваются с несколькими изображениями, просто показывают вам первый.(Некоторые из них даже не различаются по типу изображения и показывают вам первое изображение любого типа, даже если это значок файла 32x32…)

В некоторых есть способпосмотрите другие картинки, однако.Например, в iTunes, если вы Get Info или Properties на дорожке, а затем перейдете на вкладку Cover Art или аналогичную (извините за нечеткость, но названия изменились в разных версиях), вы можете увидеть всекартинки в теге.


В любом случае, если вы хотите заменить APIC на другой, вам нужно либо точно соответствовать дескриптору (и, опять же, это может означать, что разные вещи по-разномубиблиотеки…) или, проще говоря, просто удалите старую и добавьте новую.


Еще одна вещь, на которую следует обратить внимание: обложка iTunes и WMP кеша, и предположим, чтоон никогда не изменится после импорта файла.Кроме того, в WMP есть различные вещи, которые могут переопределять изображение в файле, например, обложка с должным UUID-изображением в той же директории.

...