Wie kann man ein Albumcover bei einer .mp3 mit Python hinzufügen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Es gibt Bibliotheken wie eyed3 (images-Property im eyed3.id3.tag-Modul) oder mutagen (Beispiel), mit denen du die ID3-Tags einer Audiodatei ändern kannst. Die würde ich für dieses Vorhaben nutzen.

Hanibal545 
Fragesteller
 26.07.2022, 17:44

Ich habe das zwar probiert, aber ich habe keine Veränderung von der .mp3 Datei festgestellt.

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

pic_file = r'Qualityland\coverimage-9783844916515-horbuchhamburg-2019-11-21.png' # pic file
audio = MP3(r'Qualityland\01 Track 1.mp3', ID3=ID3)

imagedata = open(pic_file, 'rb').read()

audio = ID3(r'Qualityland\01 Track 1.mp3')
audio.add(APIC(3, r'Qualityland\coverimage-9783844916515-horbuchhamburg-2019-11-21.png', 3, 'Front cover', imagedata))
audio.add(TT2(encoding=3, text='title'))

audio.save(v2_version=3)

Hab ich was falsch gemacht?

0
regex9  27.07.2022, 09:27
@Hanibal545

Diese Zeile:

audio = MP3(r'Qualityland\01 Track 1.mp3', ID3=ID3)

ist erst einmal unnötig, da du die Variable wenige Zeilen später wieder überschreibst.

Die APIC-Funktion erwartet als zweites Argument den MIME-Type, keinen Dateipfad. Wenn es sich bei deinem Bild wirklich um eine PNG-Datei handelt, wäre dieser image/png.

Die ID3-Framestruktur sollte TIT2 sein.

0
Hanibal545 
Fragesteller
 27.07.2022, 18:19
@regex9
ist erst einmal unnötig, da du die Variable wenige Zeilen später wieder überschreibst.

Hab ich gar nicht gesehen, da beim 1. noch ID3=ID3 dahintersteht.

als zweites Argument den MIME-Type, keinen Dateipfad

Ein Link zu dem Bild? Bei dem Bild handelt es sich um ein .webp Format, welches ich mit umbenennen behoben habe. Kann ich trotzdem das Bild verwenden?

Die ID3-Framestruktur sollte TIT2 sein.

Was meinst du damit? Wie kann man das beheben?

0
regex9  27.07.2022, 20:09
@Hanibal545

Der MIME-Type ist kein Link, sondern eine Angabe des Dateiformats. Für webp wäre das image/webp. Ob dieses Bildformat generell unterstützt wird, kann ich nicht sagen.

Wie kann man das beheben?

Indem du das I ergänzt.

1
Hanibal545 
Fragesteller
 28.07.2022, 13:46
@regex9

Ich habe image/webp ergänzt, und es mit .png und .webp dateien versucht, aber ohne Erfolg. Ich habe sowas noch nie gemacht und brauche das nur einmal, sodass ich es in meinen Code einbinden kann (will nämlich, dass es automatisch den Namen der Musikdatei ausliest --> auf google image geht --> das erste Bild runterlädt und es als neues Albumcover verwenden. Alles funktioniert schon, außer das Einbinden des bilds)

from mutagen.id3 import ID3, APIC, TT2

pic_file = r'Music\coverimage-9783844916515-horbuchhamburg-2019-11-21.webp' # pic file

imagedata = open(pic_file, 'rb').read()

audio = ID3(r'Music\01 Track 1.mp3')
audio.add(APIC(3, 'image/webp', 3, 'Front cover', imagedata))
audio.add(TT2(encoding=3, text='title'))

audio.save(v2_version=3)

Könntest du vielleicht nochmals drüberschauen und schauen, was ich da falsch gemacht habe.

LG

0
regex9  29.07.2022, 00:00
@Hanibal545

Ich würde es einmal mit einem anderen Bild (JPG) probieren.

Als Randbemerkung: Beachte bei deinen Bildern, dass ein bloßes Ändern der Dateiendung nicht den Dateityp ändert. Es findet höchstens eine andere Verknüpfung mit installierten Programmen statt, über die die Datei standardmäßig geöffnet wird. Wenn du bspw. den MIME-Typ image/jpeg angibst, muss die Bilddatei auch ein tatsächliches JPG-Format beinhalten.

Des Weiteren müsste einmal geschaut werden, ob sich die Datei überhaupt ändert oder nicht. Zum einen müsste der Tag über mutagen wieder auslesbar sein, zum anderen kann ein Tag-Reader wie Mp3tag beim Testen helfen (vielleicht ist dein bisheriges Testverfahren nicht vertrauenswürdig).

1