Kapitel 4. kid3-cli

Befehle

kid3-cli bietet eine Kommandozeile für Kid3. Wenn ein Ordnerpfad als Parameter verwendet wird, so wird der Ordner geöffnet. Bei einem oder mehreren Dateipfaden wird der übergeordnete Ordner geöffnet, und die Dateien werden ausgewählt. Befehle werden dann auf diese Dateien angewendet. Befehle werden mit -c Optionen angegeben, wenn mehrere vorhanden sind, so werden sie der Reihe nach ausgeführt. Falls Dateien durch die Befehle verändert werden, so werden sie am Ende gespeichert. Wenn keine Befehlsoptionen vorhanden sind, so startet kid3-cli im interaktiven Modus. Dort können Befehle eingegeben werden, welche auf die ausgewählten Dateien angewendet werden. Die folgenden Abschnitte beschreiben alle verfügbaren Befehle.

Hilfe

help [BEFEHLSNAME]

Zeigt Hilfe über die Parameter von BEFEHLSNAME oder über alle Befehle falls kein Befehlsname angegeben wird.

Zeitüberschreitung

timeout [ default | off | ZEIT ]

Überschreibt den Wert für die maximal erlaubte Ausführungszeit der Befehle. Die Befehle werden nach einer spezifischen Zeit abgebrochen, nach 10 Sekunden bei ls und albumart, 60 Sekunden bei autoimport und filter und 3 Sekunden für alle anderen Befehle. Wenn eine große Anzahl von Dateien bearbeitet wird, so können diese Maximalzeiten zu restriktiv sein. Daher kann mit diesem Befehl der Timeout für alle Befehle auf ZEIT ms gesetzt werden, gänzlich abgeschaltet werden oder auf den Voreinstellungen belassen werden.

Anwendung beenden

exit [force]

Beendet die Anwendung. Falls veränderte Dateien existieren, so muss der Parameter force mitgegeben werden.

Ordner wechseln

cd [ORDNER]

Wenn kein Ordner angegeben wird, so wird in den Benutzerordner gewechselt, sonst in den angegebenen Ordner. Bei einem oder mehreren Dateipfaden wird der übergeordnete Ordner geöffnet, und die Dateien werden ausgewählt.

Aktuellen Ordner ausgeben

pwd

Gibt den Pfad des aktuellen Ordners aus.

Ordnerliste

ls

Zeigt den Inhalt des aktuellen Ordners an. Dies entspricht der Dateiliste im Kid3 GUI. Fünf Zeichen auf der linken Seite des Dateinamens zeigen Zustandsinformationen an.

  • > Datei ist ausgewählt.

  • * Datei ist verändert.

  • 1 Datei hat ein Tag 1, sonst wird '-' angezeigt.

  • 2 Datei hat ein Tag 2, sonst wird '-' angezeigt.

  • 3 Datei hat ein Tag 3, sonst wird '-' angezeigt.

kid3-cli> ls
  1-- 01 Intro.mp3
> 12- 02 We Only Got This One.mp3
 *1-- 03 Outro.mp3

In diesem Beispiel haben alle Dateien ein Tag 1, die zweite Datei hat auch ein Tag 2 und ist ausgewählt. Die dritte Datei ist verändert.

Veränderte Dateien speichern

save

Datei wählen

select [ all | none | first | previous | next | DATEI... ]

Alle Dateien werden mit select all ausgewählt, mit select none wird die Selektion aufgehoben. Um die Dateien des aktuellen Ordners zu traversieren, wird mit select first gestartet, vorwärts geht es mit select next und rückwärts mit select previous. Dateien können über ihren Namen zur Auswahl hinzugefügt werden. Wildcards sind möglich, so werden mit select *.mp3 alle MP3-Dateien im aktuellen Ordner ausgewählt.

kid3-cli> select first
kid3-cli> ls
> 1-- 01 Intro.mp3
  12- 02 We Only Got This One.mp3
 *1-- 03 Outro.mp3
kid3-cli> select next
kid3-cli> ls
  1-- 01 Intro.mp3
> 12- 02 We Only Got This One.mp3
 *1-- 03 Outro.mp3
kid3-cli> select *.mp3
kid3-cli> ls
> 1-- 01 Intro.mp3
> 12- 02 We Only Got This One.mp3
>*1-- 03 Outro.mp3

Tag auswählen

tag [TAGNUMMERN]

Viele Befehle haben einen optionalen TAGNUMMERN Parameter, welcher festlegt, ob der Befehl auf Tag 1, 2 oder 3 wirkt. Wenn dieser Parameter weggelassen wird, so werden die standardmäßigen Tagnummern verwendet, welche mit dem Befehl tag festgelegt werden können. Voreingestellt ist ein Wert von 12, was bedeutet, dass Informationen vom Tag 2 geholt werden, falls es vorhanden ist, sonst vom Tag 1. Änderungen werden am Tag 2 durchgeführt. Die TAGNUMMERN können auf 1, 2 oder 3 gesetzt werden, damit nur das entsprechende Tag verwendet wird. Wird kein Parameter angegeben, so wird die momentane Einstellung angezeigt.

Tag-Element holen

get [ all | ELEMENTNAME ] [TAGNUMMERN]

Dieser Befehl kann dazu benutzt werden, den Wert eines bestimmten Tag-Elements zu lesen oder um Informationen über alle Tag-Elemente zu holen (wenn kein Parameter vorhanden ist oder all verwendet wird). Veränderte Elemente werden mit einem '*' markiert.

kid3-cli> get
Datei: MPEG 1 Layer 3 192 kbps 44100 Hz Joint Stereo
  Name: 01 Intro.mp3
Tag 1: ID3v1.1
  Titel         Intro
  Interpret     One Hit Wonder
  Album         Let's Tag
  Datum         2013
  Stücknummer   1
  Genre         Pop
kid3-cli> get title
Intro

Ein Bild kann in einer Datei gespeichert werden.

get picture:'/pfad/zu/folder.jpg'

Synchronisierter Liedtext wird im LRC-Format exportiert.

get SYLT:'/pfad/zu/lyrics.lrc'

Es können auch nur bestimmte Felder abgefragt werden, beispielsweise kann das Email-Feld eines Popularimeter-Frames mit get POPM.Email ausgegeben werden. Wenn eine Datei mehrere Frames des gleichen Typs enthält, so kann der Index in eckigen Klammern angegeben werden. So kriegt man beispielsweise den ersten Musiker aus einem Vorbis-Tag mit get performer[0], den zweiten mit get performer[1].

Der Pseudo-Feldname "selected" kann verwendet werden um zu prüfen, ob ein Frame selektiert ist, z.B. liefert get artist.selected dann 1 zurück, wenn der Interpret ausgewählt ist, sonst 0.

Das Pseudo-Element "ratingstars" kann verwendet werden, um den Wert des "rating" Elements als Anzahl Sterne (0 bis 5) zu kriegen. Bei der Verwendung von "rating" wird der interne Wert zurückgegeben.

Tag-Element setzen

set {ELEMENTNAME} {ELEMENTWERT} [TAGNUMMERN]

Dieser Befehl setzt den Wert eines bestimmten Tag-Elements. Wenn ELEMENTWERT leer ist, so wird das Element gelöscht.

kid3-cli> set remixer 'O.H. Wonder'

Um den Inhalt eines Bild-Elements aus einer Datei zu befüllen, verwendet man

set picture:'/pfad/zu/folder.jpg' 'Bildbeschreibung'

Synchronisierter Liedtext kann aus einer LRC-Datei importiert werden.

set SYLT:'/pfad/zu/lyrics.lrc' 'Beschreibung'

Um ein bestimmtes Feld eines Frames zu setzen, kann der Feldname nach einem Punkt angegeben werden, z.B. für das Zähler-Feld des Popularimeter-Frames.

set POPM.Counter 5

Eine Anwendung für das Setzen spezifischer Felder ist der Fall, dass man ein TXXX-Frame mit "rating" als Beschreibung möchte anstelle eines POPM Frames (dies scheint für die Anwendung gewisser Plugins nötig zu sein). Man kann ein solches TXXX-Rating-Frame mit kid3-cli erstellen, muss dazu jedoch zuerst das Frame mit der Beschreibung erstellen und dann den Wert setzen.

kid3-cli> set rating ""
kid3-cli> set TXXX.Description rating
kid3-cli> set rating 5

Der erste Befehl löscht ein allenfalls vorhandenes POPM frame, denn wenn ein solches existiert, würde set rating 5 das POPM-Frame setzen und nicht das TXXX-Frame. Eine andere Möglichkeit wäre set TXXX.Text 5, aber dies funktioniert nur, wenn kein anderes TXXX-Frame vorhanden ist.

Um mehrere Frames desselben Typs zu setzen, kann der Index in eckigen Klammern angegeben werden, z.B. mehrere Musiker in einem Vorbis-Tag.

kid3-cli> set performer[0] 'Liza don Getti (soprano)'
kid3-cli> set performer[1] 'Joe Barr (piano)'

Um nur bestimmte Frames vor dem Kopieren, Einfügen oder Entfernen auszuwählen, kann der Pseudo-Feldname "selected" verwendet werden. Normalerweise sind alle Frames ausgewählt, um alle zu deselektieren, kann set '*.selected' 0 verwendet werden, danach kann beispielsweise das Interpreten-Frame mit set artist.selected 1 ausgewählt werden.

Das Pseudo-Element "ratingstars" kann verwendet werden, um den Wert des "rating" Elements auf den Wert zu setzen, welcher für das entsprechende Format der Anzahl Sterne (0 bis 5) entspricht. Bei der Verwendung von "rating" wird der interne Wert gesetzt.

Das gleichzeitige Setzen von "ratingstars" auf mehreren Dateien mit unterschiedlichem Tag-Format funktioniert nicht weil der interne Wert, welcher der Anzahl Sterne entspricht, für die erste Datei berechnet wird und dann für alle Dateien verwendet wird. Daher sollte man anstelle von kid3-cli -c "set ratingstars 2" * besser for f in *; do kid3-cli -c "set ratingstars 2" "$f"; done verwenden.

Änderungen rückgängig machen

revert

Macht alle Änderungen an den ausgewählten Dateien rückgängig (oder an allen Dateien, falls keine selektiert sind).

Von Datei importieren

import {DATEI} {FORMATNAME} [TAGNUMMERN]

Die Tags werden aus DATEI importiert im Format FORMATNAME (z.B. "CSV unquoted", siehe Importieren).

Falls für DATEI tags angegeben wird, so wird aus anderen Tags importiert. Anstelle von FORMATNAME werden dann QUELLE und EXTRAKTION als Parameter verlangt, siehe Importieren von Tags. Um das Importieren aus Tags auf die selektierten Dateien anzuwenden, kann tagsel statt tags verwendet werden. Hiermit kann auch mit einer EXTRAKTION von %{__return}(.+) der extrahierte Wert ausgegeben werden.

Automatisch importieren

autoimport [PROFILNAME] [TAGNUMMERN]

Es wird automatisch importiert unter Verwendung des Profils PROFILNAME (siehe Automatisch importieren, "All" wird benutzt, falls kein Profil angegeben wird).

Cover-Bilder herunterladen

albumart {URL} [all]

Setzt das Albumcover mit einem von URL heruntergeladenen Bild. Die Regeln zur Umwandlung einer allgemeinen URL (z.B. von Amazon) zu einer Bild-URL werden verwendet, diese können im Nach Cover-Bildern suchen Dialog definiert werden. Um das Albumcover mit einer lokalen Datei zu setzen kann der set Befehl verwendet werden.

kid3-cli> albumart
http://www.amazon.com/Versus-World-Amon-Amarth/dp/B000078DOC

In Datei exportieren

export {DATEI} {FORMATNAME} [TAGNUMMERN]

Tags werden in die Datei DATEI exportiert im Format FORMATNAME (z.B. "CSV unquoted", siehe Exportieren).

Stückliste erstellen

playlist

Erstellt eine Stückliste in dem in der Konfiguration gesetzten Format, siehe Stückliste erstellen.

Dateinamenformat anwenden

filenameformat

Wendet das Dateinamenformat an, welches in der Konfiguration gesetzt ist, siehe Dateinamenformat anwenden.

Tag-Format anwenden

tagformat

Wendet das Tag-Format an, welches in der Konfiguration gesetzt ist, siehe Tag-Format anwenden.

Textkodierung anwenden

textencoding

Wendet die Textkodierung an, welche in der Konfiguration gesetzt ist, siehe Textkodierung anwenden.

Ordner umbenennen

renamedir [FORMAT] [ create | rename | dryrun ] [TAGNUMMERN]

Mit diesem Befehl werden Ordner umbenannt oder neu erstellt anhand der Werte in den Tags nach einem bestimmten FORMAT (z.B. %{artist} - %{album}, siehe Ordner umbenennen), wenn kein Format angegeben wird, so wird dasjenige verwendet, welches im Ordner umbenennen Dialog gesetzt ist. Normalerweise wird der Modus rename verwendet; um neue Ordner zu erstellen, muss create explizit angegeben werden. Die zum Umbenennen nötigen Aktionen werden sofort ausgeführt, um bloß eine Vorschau über diese Aktionen zu sehen, kann die dryrun Option verwendet werden.

Stücke nummerieren

numbertracks [TRACKNUMMER] [TAGNUMMERN]

Nummeriert die ausgewählten Dateien beginnend mit TRACKNUMMER (1 wenn nichts angegeben wird).

Filter

filter [ FILTERNAME | FILTERFORMAT ]

Filtert die Dateien, so dass nur Dateien angezeigt werden, welche dem FILTERFORMAT entsprechen. Der Name eines vordefinierten Filterausdrucks (z.B. "Filename Tag Mismatch") kann anstelle eines Filterausdrucks verwendet werden, siehe Filter.

kid3-cli> filter '%{title} contains "tro"'
Begonnen
  /home/urs/One Hit Wonder - Let's Tag
+ 01 Intro.mp3
- 02 We Only Got This One.mp3
+ 03 Outro.mp3
Fertig
kid3-cli> ls
  1-- 01 Intro.mp3
  1-- 03 Outro.mp3
kid3-cli> filter All
Begonnen
  /home/urs/One Hit Wonder - Let's Tag
+ 01 Intro.mp3
+ 02 We Only Got This One.mp3
+ 03 Outro.mp3
Fertig
kid3-cli> ls
  1-- 01 Intro.mp3
  12- 02 We Only Got This One.mp3
  1-- 03 Outro.mp3

ID3v2.3 nach ID3v2.4 konvertieren

to24

ID3v2.4 nach ID3v2.3 konvertieren

to23

Dateiname von Tag

fromtag [FORMAT] [TAGNUMMERN]

Setzt die Dateinamen der ausgewählten Dateien anhand der Werte in den Tags, z.B. fromtag '%{track} - %{title}' 1. Wenn kein Format angegeben wird, wird dasjenige verwendet, welches im GUI gesetzt ist.

Tag von Dateiname

totag [FORMAT] [TAGNUMMERN]

Setzt die Tag-Elemente anhand der Dateinamen, z.B. totag '%{albumartist} - %{album}/%{track} %{title}' 2. Wenn kein Format angegeben wird, wird dasjenige verwendet, welches im GUI gesetzt ist. Falls der Dateiname nicht diesem Format entspricht, werden noch einige andere, gängige Formate ausprobiert.

Tag zu anderem Tag

syncto {TAGNUMMER}

Kopiert die Tag-Elemente von einem Tag zum anderen Tag, um beispielsweise das ID3v2 Tag anhand der Werte im ID3v1 Tag zu setzen, wird syncto 2 verwendet.

Kopieren

copy [TAGNUMMER]

Kopiert die Tag-Elemente der selektierten Datei in die interne Ablage. Sie können dann in einer anderen Datei mit dem paste Befehl gesetzt werden.

Um nur ein paar ausgewählte Frames zu kopieren, kann der set Befehl mit dem Pseudo-Feldnamen "selected" verwendet werden. Um beispielsweise nur die CD-Nummer- und Copyright-Frames zu kopieren, verwende man

set '*.selected' 0
set discnumber.selected 1
set copyright.selected 1
copy

Einfügen

paste [TAGNUMMER]

Setzt die Tag-Elemente gemäß dem Inhalt der copy Ablage in den ausgewählten Dateien.

Entfernen

remove [TAGNUMMER]

Entfernt ein Tag.

Es ist möglich, nur bestimmte Frames zu entfernen, indem man sie auswählt wie beim copy Befehl beschrieben.

Kid3 einrichten

config [OPTION] [WERT]

Konfigurationseinstellung lesen oder setzen

Die OPTION besteht aus einem Gruppennamen und einem Eigenschaftsnamen, getrennt durch einen Punkt. Wenn keine OPTION mitgegeben wird, so werden alle verfügbaren Gruppennamen aufgelistet. Wenn nur ein Gruppenname angegeben wird, so werden die Eigenschaften der Gruppe angezeigt. Für eine Gruppe mit Eigenschaft wird der aktuelle Wert ausgegeben. Um einen neuen Wert zu setzen, kann dieser als zweites Argument angegeben werden.

Wenn der Wert für eine Einstellung aus einer Liste besteht, so müssen alle Listenelemente als Argumente angegeben werden. Um also ein neues Element zu einer bestehenden Liste hinzuzufügen, müssen alle existierenden Elemente angegeben werden, gefolgt vom neuen Element. In solch einem Fall ist es einfacher, den JSON-Modus zu verwenden, denn dort kann die bestehende Liste einfach kopiert und durch das neue Element ergänzt werden.

Programm oder QML-Skript ausführen

execute [@qml] {DATEI} [ARGS]

Führe ein QML-Skript oder eine Programmdatei aus.

Ohne @qml wird eine Programmdatei mit Argumenten ausgeführt. Wenn das erste Argument @qml ist, sind die folgenden Argumente das QML-Skript und seine Argumente. Beispielsweise können die Tags eines Ordners mit dem folgenden Befehl in eine Datei export.csv exportiert werden.

kid3-cli -c "execute @qml
/usr/share/kid3/qml/script/ExportCsv.qml export.csv"
/pfad/zu/ordner/

Hier ist export.csv das Argument für das ExportCsv.qml Skript, während /pfad/zu/ordner/ das DATEI-Argument für kid3-cli ist.