Blog Digitalgesellschaft Verwaltungsbetrieb Textarchiv Textarchiv Walter Kirk (✝) Impressum
Datenabfragen Online: Beets - Musiktagger
→ Vorbemerkung
→ Installation
→ Voraussetzungen prüfen und installieren
→ Virtuelle Python-Umgebung erstellen (empfohlen)
→ Beets mit Acoustic Plugin installieren
→ Grundlegende Funktionen
→ API Key
→ AcoustId
→ Google Search Custom API Key
→ Discogs-Token
→ Wichtige Plugins
→ Beispiel für eine Konfiguration
→ Ausführung
→ Umgebung aktivieren
→ Umgebung nach Abschluss deaktivieren
→ Backup
→ Aktuelles Verzeichnis
→ Backup-Verzeichnis
→ Pfad zur virtuellen Umgebung
→ Mindmap
Beets ist ein kommandozeilenbasiertes Musik-Tagging-Tool für Linux, das dazu dient, Musiksammlungen zu organisieren, fehlende oder falsche Metadaten (wie Titel, Interpret, Album, Jahr) automatisch zu korrigieren und Dateien in eine strukturierte Ordnerhierarchie zu verschieben. Es nutzt dabei öffentliche Datenbanken wie MusicBrainz, Discogs oder Beatport, um passende Informationen herunterzuladen - inklusive Cover-Bilder.
Installation von pip, python3 und python3-venv:
sudo apt updatesudo apt install python3 python3-pip python3-venvxxxxxxxxxxpython3 -m venv ~/beets-envsource ~/beets-env/bin/activateInstallation mit den erforderlichen Plugins, darunter pyacoustid für die Akustik-Identifikation:
xxxxxxxxxx(beets-env) test@testgeraet:~$ pip install beets[lyrics,lastgenre,fetchart,embedart,convert,discogs]⚠️ Hinweis: Das acoustid-Plugin wird über pyacoustid bereitgestellt. Falls pyacoustid nicht automatisch installiert wird, separat installieren. In Beets V 2.5.1 ist das Plugin acoustid selbst nicht mehr enthalten und durch pyacustid ersetzt.
xxxxxxxxxx(beets-env) test@testgeraet:~$ pip install pyacoustid bzw. python-pi3 install pyacoustidImport von Musik: Mit beet import /Pfad/zur/Musik werden Dateien in die Beets-Bibliothek aufgenommen.
Automatische Tag-Korrektur: Beets vergleicht die Dateien mit Online-Datenbanken und schlägt passende Tags vor.
Dateiorganisation: Audiodateien werden nach Schema (z. B. Künstler/Album/Tracknummer - Titel) umbenannt und verschoben.
Konfiguration: Die Datei ~/.config/beets/config.yaml (oder ~/.beetsconfig) steuert Verhalten, Pfade und Plugins.
Für die Nutzung von Fingerprints (plugin: pyacoustid) und für das Herunterladen von Texten (plugin: lyrics) sind jeweils ein API key erforderlich:
https://acoustid.org/login?return_url=https://acoustid.org/api-key
Um einen Google Search API-Schlüssel zu erhalten, müssen Sie zunächst ein Projekt in der Google Cloud Console erstellen und die Custom Search JSON API aktivieren. Danach können Sie über den Bereich "Credentials" einen API-Schlüssel erstellen.
Schritt-für-Schritt-Anleitung:
Gehen Sie zu https://console.cloud.google.com und melden Sie sich mit Ihrem Google-Konto an.
Erstellen Sie ein neues Projekt oder wählen Sie ein bestehendes aus.
Navigieren Sie zu API & Services > Libraries, suchen Sie nach "Custom Search JSON API" und aktivieren Sie sie.
Gehen Sie zu API & Services > Credentials und klicken Sie auf "Create Credentials" > "API Key".
Kopieren Sie den generierten API-Schlüssel (z. B. AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe).
Wer auch Discogs nutzen will, sollte einen Discogs-Token generieren. Damit lässt sich die Begrenzung der Abfragen umgehen. Um einen Discogs-Token zu generieren, befolgen Sie diese Schritte:
Melden Sie sich bei Ihrem Discogs-Konto an.
Klicken Sie rechts oben auf Ihr Profilbild und gehen Sie zu „Einstellungen“.
Wählen Sie den Reiter „Entwickler“ (Developers).
Klicken Sie auf die Schaltfläche „Generate new token“ (Neues Token generieren).
Kopieren Sie das angezeigte User Token und verwenden Sie es für die API-Authentifizierung.
Hinweis: Das Token ermöglicht den Zugriff auf Ihre eigenen Kontodaten über die Discogs-API. Bewahren Sie es sicher auf und teilen Sie es nicht.
fetchart: Lädt Albumcover herunter.
lastgenre: Fügt Genre-Informationen aus Last.fm hinzu.
chroma: Nutzt akustisches Fingerprinting für präzisere Erkennung.
replaygain: Normalisiert die Lautstärke der Titel.
Beets eignet sich besonders für Nutzer, die ihre Musiksammlung präzise und automatisiert verwalten möchten - ganz ohne grafische Oberfläche.
Unter ~/.config im Ordner beets (ggf. erstellen) die Konfigurationsdatei config.yaml erstellen. Das folgende Beispiel ist für die automatische Verarbeitung eingerichtet, wobei gefundene Titel verarbeitet und auch zweifelhafte Treffer in das Musikverzeichnis verschoben werden:
xdirectory~/<Eigener Musikordner>library~/<Ordner für Library>/beets.db
import timidno # keine interaktiven Nachfragen quiet_fallbackskip # unsichere Treffer überspringen moveyes # Dateien ins Zielverzeichnis verschieben copyno # nicht kopieren (nur verschieben) writeyes # Tags in die Dateien schreiben autotagyes # automatisches Tagging aktiv resumeyes # abgebrochene Imports fortsetzen threadedyes coloryes log~/<Ordner für Log-Datei>/beetslog.txt pluginschromalastgenrelyricsfetchartembedartconvertacoustidinlinescrubdiscogs # optional
acoustid:apikey<Eigener Key>
discogs# optional user_token<Eigener Token>
lyrics google_API_key<Eigener Key> google_engine_ID009217259823014548361lndtuqkycfu sourcesgoogle musixmatch paths default%lower$albumartists_sort/%lower$album/$track - $title replace ',''' # ersetzt das Komma durch Leerzeichen ' ''-' # ersetzt Leerzeichen durch Bindestrich Beispiel für die Verzeichnisstruktur:
xxxxxxxxxx ── adams-oleta └── the-very-best-of-oleta-adams ├── 01---Rhythm-of-Life.mp3 ├── 02---Get-Here.mp3 ├── 03---Window-of-Hope.mp3 ├── usw. └── cover.jpgDie Kleinschreibung der Ordnernamen und mit Bindestrich erfolgt durch die Einstellung in pahts: und replace:
Die Ordnerstruktur lässt sich unter paths: den eigenen Vorstellungen anpassen. Beispielsweise ergibt
xxxxxxxxxxpaths: default: %lower{$albumartist_sort}-%lower{$album}%aunique{}%lower{}/$track $titlediese Struktur
xxxxxxxxxxadams-oleta-the-very-best-of-oleta-adams├── 01-Rhythm-of-Life.mp3├── 02-Get-Here.mp3├── 03-Window-of-Hope.mp3├── usw.└── cover.jpgHier wird ein Verzeichnis je Album erstellt und die Dateien sind direkt dort gespeichert.
Zur Ausführung in den Musik-/Albumordner wechseln und in einem Terminal ausführen:
xxxxxxxxxx# Umgebung aktivierensource ~/beets-env/bin/activate # Pfad zum eigenen Environmentbeet import . # Verzeichnis, ggf. mit Unterordnern oderbeet import ~/pfad-zum-Album # einzelnes Album oderbeet import -p . # Testlauf ohne Änderungen oderbeet import -A . # automatisches Verarbeiten# Umgebung nach Abschluss deaktivierendeactivateBeets verfügt über keine eigene Sicherungsfunktion. Bei umfangreichen Musiksammlungen ist es ratsam, die Originaldateien zu sichern. Der Import verbunden mit einem Backup lässt sich vereinfacht ausführen:
xxxxxxxxxxset -e
# Aktuelles VerzeichnisSOURCE_DIR="$(pwd)"
# Backup-VerzeichnisBACKUP_DIR="$HOME/beets-backups/backup_$(date +%Y-%m-%d_%H-%M-%S)"
# Pfad zur virtuellen UmgebungBEETS_ENV="$HOME/beets-env"
echo "Arbeitsverzeichnis: $SOURCE_DIR"echo "Backup-Verzeichnis: $BACKUP_DIR"
mkdir -p "$BACKUP_DIR"
echo "Erstelle Backup der MP3-Dateien ..."
rsync -av \ --include="*/" \ --include="*.mp3" \ --exclude="*" \ "$SOURCE_DIR/" "$BACKUP_DIR/"
echo "Backup abgeschlossen."
echo "Aktiviere beets-env ..."source "$BEETS_ENV/bin/activate"
echo "Starte beets Import ..."beet import -A "$SOURCE_DIR"
echo "Deaktiviere Umgebung ..."deactivate
echo "Fertig."
Wolfgang Kirk Veröffentlicht: 2026-01-25, 10:00 Uhr

