Cover-Art für die MuPiBox meiner Tochter hinzufügen
Cover-Art für die MuPiBox meiner Tochter hinzufügen
Meine Tochter liebt ihren MuPiBox-Medienserver, der voll mit ihren Lieblings-Hörbüchern und -Musikstücken ist. Vor Kurzem habe ich beschlossen, ihr Erlebnis zu verbessern, indem ich jedem Album ein Cover-Art hinzufüge. Es ist eine kleine Sache, aber die Album-Cover zu sehen macht das Stöbern für sie angenehmer und optisch ansprechender. So habe ich die cover.jpg-Dateien zu ihrem MuPiBox-Medienserver hinzugefügt.
Verwendete Tools und Bibliotheken
Dafür habe ich Python zusammen mit einigen praktischen Bibliotheken verwendet:
- os für die Interaktion mit dem Betriebssystem.
- glob für das Musterabgleichen von Dateinamen.
- mutagen für den Umgang mit Audio-Metadaten, einschließlich der Extraktion von Cover-Art.
Ich habe ein Python-Skript geschrieben, das die Extraktion und Speicherung von Cover-Art aus den MP3-Dateien in der MuPiBox-Bibliothek automatisiert.
Schritt-für-Schritt-Anleitung
Schritt 1: Das Skript einrichten
Zuerst habe ich die benötigten Bibliotheken mit pip installiert:
pip install mutagen
Dann habe ich ein Python-Skript namens add_cover_art.py erstellt:
import os
import glob
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC
def extract_and_save_cover_art(mp3_file, output_file):
audio = MP3(mp3_file, ID3=ID3)
# Check if the MP3 file contains an image
for tag in audio.tags.values():
if isinstance(tag, APIC):
with open(output_file, 'wb') as img:
img.write(tag.data)
print(f'Cover artwork successfully saved to {output_file}.')
return
print('No cover artwork found in the MP3 file.')
def delete_existing_images(album_dir):
image_files = glob.glob(os.path.join(album_dir, "*.[jJpP][pPnNgG]*"))
for image_file in image_files:
os.remove(image_file)
print(f'{image_file} has been deleted.')
def process_artist_directory(artist_dir):
for album_dir in os.listdir(artist_dir):
full_album_path = os.path.join(artist_dir, album_dir)
if os.path.isdir(full_album_path):
cover_file = os.path.join(full_album_path, "cover.jpg")
if os.path.exists(cover_file):
print(f'Skipping {full_album_path}, cover.jpg already exists.')
continue
mp3_files = sorted(glob.glob(os.path.join(full_album_path, "*.mp3")))
if mp3_files:
first_mp3_file = mp3_files[0]
delete_existing_images(full_album_path)
extract_and_save_cover_art(first_mp3_file, cover_file)
def process_music_library(base_dir):
for artist_dir in os.listdir(base_dir):
if not "Pippi" in artist_dir:
continue
full_artist_path = os.path.join(base_dir, artist_dir)
if os.path.isdir(full_artist_path):
process_artist_directory(full_artist_path)
# Example call
music_library_path = '/Volumes/media/music/Hörbücher'
process_music_library(music_library_path)
Schritt 2: Das Skript ausführen
Nachdem das Skript fertig war, habe ich es ausgeführt und dabei auf das Basisverzeichnis der MuPiBox-Medienbibliothek verwiesen. Das Skript durchsuchte die Verzeichnisse, identifizierte MP3-Dateien und extrahierte deren Cover-Art, um sie als cover.jpg in den jeweiligen Ordnern zu speichern.
Schritt 3: Die Ergebnisse überprüfen
Nachdem das Skript fertig durchgelaufen war, habe ich den MuPiBox-Medienserver durchstöbert. Es war befriedigend zu sehen, dass nun neben jedem Album die neuen cover.jpg-Dateien vorhanden waren und meiner Tochter ein ansprechenderes und visuell schöneres Stöbererlebnis bieten.
Fazit
Das Hinzufügen von Cover-Art zum MuPiBox-Medienserver war eine unkomplizierte, aber wirkungsvolle Verbesserung. Das Python-Skript machte den Prozess effizient und automatisiert, was mir eine Menge Zeit gespart hat. Wer einen Medienserver betreibt und dem Nutzererlebnis etwas mehr Feinschliff verleihen möchte, dem kann ich diese Methode nur empfehlen.
Viel Spaß beim Hören!