'\" t .\" Title: kid3 .\" Author: Urs Fleisch .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2022-08-06 .\" Manual: Das Kid3 Handbuch .\" Source: 3.9.2 .\" Language: German .\" .TH "KID3" "1" "2022-08-06" "3.9.2" "Das Kid3 Handbuch" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" kid3, kid3-qt, kid3-cli \- Kid3 ID3 Tagger .SH "\(:UBERSICHT" .HP \w'\fBkid3\fR\ 'u \fBkid3\fR [\fB\-\-help\fR | \fB\-\-author\fR | \fB\-\-version\fR | \fB\-\-license\fR | \fB\-\-desktopfile\ \fR\fBDATEI\fR] [\fIDATEI\fR...] .HP \w'\fBkid3\-qt\fR\ 'u \fBkid3\-qt\fR [\fB\-\-portable\fR] [\fBQt\-Optionen\fR] [\fIDATEI\fR...] .HP \w'\fBkid3\-cli\fR\ 'u \fBkid3\-cli\fR [\fB\-\-portable\fR] [\fB\-\-dbus\fR] [\fB\-h\fR | \fB\-\-help\fR] [\fB\-c\ BEFEHL1\fR] [\fB\-c\ BEFEHL2\fR...] [\fIDATEI\fR...] .SH "OPTIONEN" .PP \fB\-\-portable\fR .RS 4 Speichert die Einstellungen in der Datei kid3\&.ini im Programmordner\&. .RE .PP \fIDATEI\fR .RS 4 Wenn \fIDATEI\fR der Pfad auf einen Ordner ist, so wird er ge\(:offnet\&. Wenn einer oder mehrere Datei\-Pfade gegeben werden, so wird deren gemeinsamer Ordner ge\(:offnet und die Dateien werden ausgew\(:ahlt\&. .RE .SS "kid3" .PP \fB\-\-help\fR .RS 4 Hilfe zu verf\(:ugbaren Optionen anzeigen\&. .RE .PP \fB\-\-author\fR .RS 4 Autoren\-Information anzeigen\&. .RE .PP \fB\-\-version\fR .RS 4 Versionsinformation anzeigen\&. .RE .PP \fB\-\-license\fR .RS 4 Lizenz\-Informationen anzeigen\&. .RE .PP \fB\-\-desktopfile \fR\fBDATEI\fR .RS 4 Der Basis\-Dateiname des Desktop\-Eintrags dieser Anwendung\&. .RE .SS "kid3\-qt" .PP \fBQt\-Optionen\fR .RS 4 Siehe \fBqt5options\fR(7)\&. .RE .SS "kid3\-cli" .PP \fB\-\-dbus\fR .RS 4 Aktiviert die D\-Bus Schnittstelle\&. .RE .PP \fB\-c\fR .RS 4 F\(:uhrt einen Befehl aus\&. Mehrere \fB\-c\fR Optionen sind m\(:oglich, die Befehle werden in der entsprechenden Reihenfolge ausgef\(:uhrt\&. Siehe den Abschnitt \(:uber kid3\-cli f\(:ur eine Beschreibung der verf\(:ugbaren Befehle\&. .RE .PP \fB\-h\fR|\fB\-\-help\fR .RS 4 Hilfe zu verf\(:ugbaren Optionen und Befehlen anzeigen\&. .RE .SH "EINLEITUNG" .PP Kid3 ist eine Anwendung zum effizienten Editieren von ID3v1 und ID3v2 Tags in MP3 Dateien\&. Diese Tags k\(:onnen zwar mit den meisten MP3 Player Programmen editiert werden, jedoch nicht auf eine sehr komfortable und effiziente Art\&. Dar\(:uber hinaus werden auch die Tags in Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF Dateien und Tracker Modulen (MOD, S3M, IT, XM) unterst\(:utzt\&. .PP Kid3 kann weder MP3 grabben noch codieren, es ist darauf ausgelegt, die ID3 Tags von allen Dateien eines Albums auf eine m\(:oglichst effiziente Art zu editieren, d\&.h\&. mit so wenig Mausklicks und Tastendr\(:ucken wie m\(:oglich\&. W\(:ahrend die meisten anderen Programme entweder ID3v1 oder ID3v2 Tags editieren k\(:onnen, hat Kid3 volle Kontrolle \(:uber die Tags beider Versionen, es kann zwischen den beiden Formaten konvertieren und hat Zugang zu allen ID3v2 Frames\&. Tags mehrerer Dateien k\(:onnen gleichzeitig auf dieselben Werte gesetzt werden, so beispielsweise Interpret, Album, Jahr und Genre aller Dateien eines Albums\&. Wenn die Information f\(:ur die Tags schon im Dateinamen enthalten ist, k\(:onnen die Tags automatisch aus dem Dateinamen generiert werden\&. Es ist auch m\(:oglich, den Dateinamen in einem beliebigen Format aus den Werten in den Tags zu setzen\&. .PP Das Editieren wird dar\(:uber hinaus durch automatische Ersetzung von Zeichenfolgen erleichtert, z\&.B\&. um ung\(:ultige Zeichen aus Dateinamen zu entfernen\&. Automatische Gro\(ss\- und Kleinschreibung macht es einfach, eine konsistente Namensschreibweise in allen Tags zu verwenden\&. .PP Die Tag\-Information f\(:ur ganze Alben kann \(:uber \m[blue]\fBgnudb\&.org\fR\m[]\&\s-2\u[1]\d\s+2, \m[blue]\fBMusicBrainz\fR\m[]\&\s-2\u[2]\d\s+2, \m[blue]\fBDiscogs\fR\m[]\&\s-2\u[3]\d\s+2, \m[blue]\fBAmazon\fR\m[]\&\s-2\u[4]\d\s+2 oder von anderen Quellen mit Albuminformationen importiert werden\&. Das verwendete Format ist mit regul\(:aren Ausdr\(:ucken frei konfigurierbar\&. .PP Probleme und Vorschl\(:age f\(:ur neue Funktionen k\(:onnen dem Autor gemeldet werden\&. .SH "BENUTZEN VON KID3" .SS "Funktionsmerkmale von Kid3" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Editieren von ID3v1\&.1 Tags .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Editieren von allen ID3v2\&.3 und ID3v2\&.4 Frames .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Editieren der Tags von mehreren Dateien .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Konvertieren zwischen ID3v1 und ID3v2 Tags .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Editieren von MP3, Ogg/Vorbis, Opus, DSF, FLAC, MPC, APE, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV und AIFF Tags .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Generieren der Tags aus dem Dateinamen .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Generieren der Tags aus dem Inhalt der Tagfelder .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Generieren des Dateinamens aus den Tags .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Generieren und \(:Andern des Ordnernamens aus den Tags .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Generieren von St\(:ucklisten .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Automatische Gro\(ss\-/Kleinschreibung und Zeichenersetzung .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Import von \m[blue]\fBgnudb\&.org\fR\m[]\&\s-2\u[1]\d\s+2, \m[blue]\fBMusicBrainz\fR\m[]\&\s-2\u[2]\d\s+2, \m[blue]\fBDiscogs\fR\m[]\&\s-2\u[3]\d\s+2, \m[blue]\fBAmazon\fR\m[]\&\s-2\u[4]\d\s+2 und anderen Quellen .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Export als CSV, HTML, St\(:uckliste, Kover XML oder in anderen Formaten\&. Exportierte CSV\-Dateien k\(:onnen wieder importiert werden\&. .RE .SS "Arbeiten anhand eines Beispiels" .PP Dieser Abschnitt beschreibt eine typische Sitzung mit Kid3\&. Nehmen wir an, wir haben einen Ordner mit MP3 Dateien der St\(:ucke aus dem Album "Let\*(Aqs Tag" von der Gruppe "One Hit Wonder"\&. Der Ordner ist im "Interpret \- Album" Format benannt, in unserem Fall also One Hit Wonder \- Let\*(Aqs Tag\&. Der Ordner enth\(:alt die St\(:ucke im "Nummer Titel\&.mp3" Format, was auch Sinn macht, weil die Dateinamen kurz werden (wichtig bei den kleinen Anzeigen mobiler MP3 Player) und alphabetisch in der richtigen Reihenfolge geordnet werden (wichtig falls ein Hardware MP3 Player die St\(:ucke in alphabetischer Reihenfolge abspielt oder in der Reihenfolge, wie sie auf CD gebrannt wurden \- diese Reihenfolge ist bei \fBmkisofs\fR alphabetisch)\&. Dar\(:uber hinaus sind Interpret und Album bereits im Ordnernamen enthalten und brauchen nicht im Dateinamen wiederholt zu werden\&. Doch zur\(:uck zu unserem Beispiel \- der Ordner sieht folgenderma\(ssen aus: .PP 01 Intro\&.mp3 .PP 02 We Only Got This One\&.mp3 .PP 03 Outro\&.mp3 .PP Diese Dateien haben noch keine Tags, wir werden diese mit Kid3 erzeugen\&. Wir benutzen \(:Offnen (Datei Men\(:u oder Werkzeugleiste) und w\(:ahlen eine der Dateien in diesem Ordner\&. Alle Dateien werden im Dateilistenfeld angezeigt\&. Aus Bequemlichkeit wollen wir die Tags aus den Dateinamen erzeugen\&. Daher w\(:ahlen wir alle Dateien im Listenfeld aus und klicken auf Nach: Tag 1 in der Datei Sektion\&. Dadurch werden Titel, Interpret, Album und Nummer in allen Dateien gesetzt\&. Um die Werte f\(:ur Jahr und Genre in allen Dateien zu setzen, lassen wir alle Dateien selektiert und tippen "2002" in das Feld Datum und w\(:ahlen "Pop" im Genre Auswahlfeld\&. Um einzig diese zwei Werte zu ver\(:andern, werden ihre Markierungsfelder automatisch aktiviert, und alle anderen Markierungsfelder bleiben leer\&. Wird nun durch Klick auf die erste Datei die Auswahl ver\(:andert, so sieht man, dass die Tags f\(:ur die erste Datei die korrekten Werte enthalten\&. Die Tags der anderen Dateien k\(:onnen auch \(:uberpr\(:uft werden, indem eine nach der andern selektiert wird\&. Wenn wir mit den Tags zufrieden sind, k\(:onnen die \(:Anderungen mit Speichern (Datei Men\(:u oder Werkzeugleiste) \(:ubernommen werden\&. W\(:ahlen von St\(:uckliste erstellen im Datei Men\(:u erzeugt die Datei One Hit Wonder \- Let\*(Aqs Tag\&.m3u im Ordner\&. .SH "MEN\(:UEINTR\(:AGE" .SS "Die Elemente der Benutzeroberfl\(:ache" .PP Die Kid3 Benutzeroberfl\(:ache ist in sechs Sektionen aufgeteilt: Links finden sich das Dateilistenfeld und das Ordnerlistenfeld, die rechte Seite enth\(:alt die Datei, Tag 1, Tag 2 und Tag 3 Sektionen\&. .PP Um mit der Tastatur zwischen den verschiedenen Sektionen zu navigieren, stehen verschiedene Tastaturk\(:urzel zur Verf\(:ugung\&. In den Tag\-Sektionen sind die K\(:urzel aktiv wenn nicht gerade Text bearbeitet wird oder wenn man sich in der ersten Spalte der Tabelle befindet\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Alt+Links: Gehe zu vorangehender Sektion (Command+[ auf macOS\(rg) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Alt+Rechts: Gehe zu n\(:achster Sektion (Command+] auf macOS\(rg) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Ctrl+Shift+V: Von anderem Tag .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Ctrl+C: Kopieren .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Ctrl+V: Einf\(:ugen .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Shift+Delete: Entfernen .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} F2: Bearbeiten .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Insert: Hinzuf\(:ugen .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Delete: L\(:oschen .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDateiliste\fR .RS 4 .PP Die Dateiliste enth\(:alt die Namen aller Dateien im ge\(:offneten Ordner, welche den gew\(:ahlten Dateinamenfilter (typischerweise *\&.mp3 *\&.ogg *\&.opus *\&.dsf *\&.flac *\&.mpc *\&.aac *\&.m4a *\&.m4b *\&.m4p *\&.mp4 *\&.mp2 *\&.spx *\&.tta *\&.wv *\&.wma *\&.wav *\&.aiff *\&.ape) erf\(:ullen\&. Eine einzelne oder mehrere Dateien k\(:onnen ausgew\(:ahlt werden\&. Um keine Datei auszuw\(:ahlen, kann in den leeren Bereich unterhalb der Dateieintr\(:age geklickt werden\&. Die Auswahl bestimmt die Dateien, welche durch die unten beschriebenen Operationen ver\(:andert werden\&. .PP Nebst Name k\(:onnen noch andere Spalten Gr\(:o\(sse, Typ und \(:Anderungsdatum mit Details zu den Dateien dargestellt werden\&. Eine Spalte wird angezeigt, wenn das H\(:akchen bei ihrem Namen im Kontextmen\(:u der Kopfzeile gesetzt ist\&. Die Reihenfolge der Spalten kann mittels Drag\*(Aqn\*(AqDrop ver\(:andert werden\&. Die Sortierreihenfolge kann durch Klicken auf den Spaltenkopf umgeschaltet werden\&. .PP Die Werte der Standard Tags k\(:onnen auch in Spalten der Dateiliste dargestellt und bearbeitet werden\&. .PP Links von den Namen kann ein Symbol dargestellt werden: eine Diskette, um zu zeigen, dass die Datei ver\(:andert wurde, oder Information \(:uber die Tags welche vorhanden sind (V1, V2, V1V2 oder NO TAG, wenn nichts dargestellt wird, wurde die Datei noch nicht eingelesen)\&. .PP Ordner werden mit Ordner\-Symbolen gekennzeichnet\&. Wenn ein Ordner ge\(:offnet wird, so werden seine Dateien in einem hierarchischen Baum dargestellt\&. Operationen k\(:onnen auf Dateien aus verschiedenen Ordnern angewendet werden, was n\(:utzlich ist, wenn die Musik\-Dateien so organisiert werden, dass pro Interpret ein Ordner erstellt wird, der wiederum einen Ordner f\(:ur jedes Album enth\(:alt\&. .PP Bei einem Rechtsklick in der Dateiliste \(:offnet sich ein Kontext\-Men\(:u mit folgenden Befehlen: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Alle ausklappen: Klappt alle Ordnerb\(:aume auf (nur der aktuelle Ordner, wenn die Umschalttaste gedr\(:uckt ist) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Alle einklappen: Klappt alle Ordnerb\(:aume ein .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Umbenennen: \(:Andert den Namen der Datei .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} In den Papierkorb verschieben: Verschiebt die Datei in den Papierkorb .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Wiedergabe: Spielt die Datei ab, siehe Wiedergabe\&. Wenn die ausgew\(:ahlte Datei eine Wiedergabeliste ist, so werden deren St\(:ucke abgespielt\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Bearbeiten: Bearbeitet Wiedergabeliste, siehe Wiedergabeliste bearbeiten\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Bei den weiteren Men\(:ueintr\(:agen handelt es sich um Benutzerbefehle, welche in Kid3 einrichten bei Benutzerbefehle definiert werden k\(:onnen\&. Dort kann auch die Wiedergabe von Dateien per Doppelklick aktiviert werden\&. .RE .sp .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBWiedergabeliste bearbeiten\fR .RS 4 .PP Eine Wiedergabeliste kann entweder mit den St\(:ucken eines Ordners oder leer erstellt werden, siehe hierzu St\(:uckliste erstellen\&. Die so erstellte Datei kann mittels Doppelklick oder Wahl von Bearbeiten aus dem Kontext\-Men\(:u der Dateiliste bearbeitet werden\&. Es wird ein Dialog mit den Eintr\(:agen der St\(:uckliste ge\(:offnet\&. Es k\(:onnen mehrere St\(:ucklisten gleichzeitig bearbeitet werden\&. .PP Neue Eintr\(:age k\(:onnen mit "Drag\*(Aqn\*(AqDrop" aus der Dateiliste, einem Dateimanager oder einer anderen St\(:uckliste hinzugef\(:ugt werden\&. Wenn ein Eintrag aus einer anderen St\(:uckliste hineingezogen wird, so wird der Eintrag abh\(:angig vom System verschoben oder kopiert\&. F\(:ur die jeweils andere Operation muss gleichzeitig die Umschalt\-Taste (Shift) bzw\&. die Steuerungs\-Taste (Ctrl) gedr\(:uckt werden (auf macOS muss Alt gedr\(:uckt werden, um zu kopieren statt zu verschieben)\&. Um Eintr\(:age innerhalb der St\(:uckliste zu verschieben, kann ebenfalls "Drag\*(Aqn\*(AqDrop" verwendet werden\&. Alternativ k\(:onnen Eintr\(:age mit den Tastenkombinationen Ctrl+Shift+Up und Ctrl+Shift+Down verschoben werden (auf macOS muss Command statt Ctrl gedr\(:uckt werden)\&. Um einen Eintrag zu l\(:oschen, kann Delete gedr\(:uckt werden\&. .PP Um Eintr\(:age aus der Dateiliste mittels "Drag\*(Aqn\*(AqDrop" zu ziehen, ist folgendes zu beachten: Die Eintr\(:age m\(:ussen links (bei den Icons) gezogen werden, eine entsprechende Geste im rechten Bereich f\(:uhrt zu einer Mehrfachselektion, eine solche ist somit immer noch einfach m\(:oglich\&. .PP Wenn eine St\(:uckliste modifiziert wurde, so k\(:onnen die \(:Anderungen mit Speichern \(:ubernommen oder mit Abbrechen verworfen werden\&. Beim Schlie\(ssen des Fensters erfolgt eine Sicherheitsabfrage, wenn noch ungesicherte \(:Anderungen vorhanden sind\&. .PP In einer Wiedergabeliste ausgew\(:ahlte St\(:ucke werden automatisch auch in der Dateiliste ausgew\(:ahlt, womit auch ihre Tags bearbeitet werden k\(:onnen\&. .PP Um Aktionen auf einer Wiedergabeliste auszuf\(:uhren, muss sie in der Dateiliste ausgew\(:ahlt werden\&. In deren Kontext\-Men\(:u f\(:uhrt Bearbeiten zum hier beschriebenen Dialog und Wiedergabe spielt die St\(:uckliste ab\&. Es lassen sich auch Benutzerbefehle f\(:ur Wiedergabelisten definieren, zum Beispiel Export Playlist Folder, welche die St\(:ucke einer Wiedergabeliste in einen Ordner kopiert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOrdnerliste\fR .RS 4 .PP Die Ordnerliste enth\(:alt die Unterordner sowie den aktuellen (\&.) und den \(:ubergeordneten (\&.\&.) Ordner\&. Sie erlaubt den raschen Wechsel zwischen Ordnern, ohne den Umweg \(:uber die \(:Offnen \&.\&.\&. Funktion oder "Drag\*(Aqn\*(AqDrop"\&. .PP Die Anzeige, Reihenfolge und Sortierung der Spalten kann auf dieselbe Weise eingestellt werden wie bei der Dateiliste beschrieben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDatei\fR .RS 4 .PP Zeigt Informationen \(:uber Codierung (MP3, Ogg, Opus, DSF, FLAC, MPC, APE, MP2, MP4, AAC, Speex, TrueAudio, WavPack, WMA, WAV, AIFF), Bit\- und Samplerate, Kan\(:ale und die L\(:ange der Datei an\&. .PP Das Name Editierfeld enth\(:alt den Dateiname wenn nur eine einzelne Datei ausgew\(:ahlt ist\&. Wird dieses Feld ver\(:andert, so wird die Datei umbenannt, wenn Speichern ausgef\(:uhrt wird\&. .PP Das Format Auswahl\- und Editierfeld enth\(:alt das Format, welches verwendet wird, wenn der Dateiname aus dem ersten oder zweiten Tag erzeugt wird\&. Der Dateiname kann beliebige Zeichen enthalten, es kann sogar ein Ordnerteil abgetrennt durch einen Schr\(:agstrich angegeben werden, doch dieser Ordner muss bereits existieren, damit das Umbenennen erfolgreich ist\&. Die folgenden Codes k\(:onnen verwendet werden, um Werte aus den Tags im Dateinamen einzusetzen: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %s %{title} Titel (Song) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %a %{artist} Interpret (Artist) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %l %{album} Album .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %c %{comment} Kommentar (Comment) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %y %{year} Jahr (Year) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track} Nummer (St\(:uck, z\&.B\&. 01) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track\&.n} Nummer mit Feldl\(:ange n (z\&.B\&. 001 f\(:ur %{track\&.3}) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %T %{tracknumber} Nummer (St\(:uck, ohne f\(:uhrende Null, z\&.B\&. 1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %g %{genre} Genre .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %{ignore} Wird ignoriert wenn Tags aus dem Dateinamen erzeugt werden .RE .PP Die Formatcodes sind nicht auf die oben gegebenen Beispiele beschr\(:ankt\&. Alle Framenamen k\(:onnen benutzt werden, sowohl vereinheitlichte wie \fB%{albumartist}\fR, \fB%{discnumber\&.1}\fR, \fB%{bpm}\fR als auch formatspezifische wie \fB%{popm}\fR\&. .PP Es ist m\(:oglich, zus\(:atzlichen Text vor und nach dem Wert, welcher f\(:ur einen Formatcode ersetzt wird, einzuf\(:ugen indem man diesen in Anf\(:uhrungszeichen innerhalb der geschwungenen Klammern hinzuf\(:ugt\&. Dieser Text wird nur dann eingef\(:ugt, wenn der Wert f\(:ur den Formatcode nicht leer ist\&. Als Beispiel k\(:onnte man f\(:ur einen Dateinamen, welcher sowohl den Titel als auch den Untertitel enthalten soll, \fB%{title} [%{subtitle}]\fR als Format verwenden\&. Aber dies w\(:urde im Falle von nicht vorhandenem Untertitel dazu f\(:uhren, dass der resultierende Dateinamen mit [] endet\&. Um diese leeren Klammern am Ende zu verhindern, kann \fB%{title}%{" ["subtitle"]"}\fR verwendet werden\&. Dieses Format l\(:asst die eckigen Klammern, das f\(:uhrende Leerzeichen und den Untertitel weg, wenn kein entsprechendes Element vorhanden ist\&. .PP Die Liste der verf\(:ugbaren Formate kann in dem Dialog bearbeitet werden, welcher erscheint, wenn der Knopf Dateiname von Tag im Dateien\-Reiter der Einstellungen gedr\(:uckt wird\&. .PP Ein zweites Format Auswahlfeld (mit Pfeil runter) wird verwendet, um die Tags aus dem Dateinamen zu generieren\&. Falls der Dateinamen nicht diesem Format entspricht, werden noch einige andere, g\(:angige Formate ausprobiert\&. .PP Einige h\(:aufig verwendete Dateinamen\-Formate sind bereits vordefiniert und \(:uber das Auswahlfeld verf\(:ugbar, aber es ist auch m\(:oglich, ein eigenes Format in das Eingabefeld einzutragen\&. .PP Die Liste der verf\(:ugbaren Formate kann in dem Dialog bearbeitet werden, welcher erscheint, wenn der Knopf Tag von Dateiname im Dateien\-Reiter der Einstellungen gedr\(:uckt wird\&. .PP Intern wird ein regul\(:arer Ausdruck aus den Formatcodes gebildet\&. Wenn die volle Ausdruckskraft regul\(:arer Ausdr\(:ucke gebraucht wird, ist es auch m\(:oglich, einen kompletten regul\(:aren Ausdruck mit Klammerkonstrukten, welche durch die Formatcodes eingeleitet werden, als Format f\(:ur die Extraktion der Tags aus den Dateinamen anzugeben\&. Um beispielsweise die St\(:ucknummern ohne das automatische Entfernen f\(:uhrender Nullen in die Tags zu kriegen, k\(:onnte ein Ausdruck wie "\fB/%{track}(\ed+) %{title}(\&.*)\fR" verwendet werden\&. .PP Von: Tag 1, Tag 2: Setzt den Dateinamen gem\(:a\(ss dem ausgew\(:ahlten Format und dem ersten Tag bzw\&. zweiten Tag\&. .PP Nach: Tag 1, Tag 2: Die Tags werden anhand des Dateinamens gesetzt\&. Dabei wird zuerst das in Format ausgew\(:ahlte Dateinamenformat probiert\&. Falls der vorhandene Dateinamen nicht diesem Format entspricht, werden noch folgende Formate versucht: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Interpret \- Album/Nummer Titel .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Album/Nummer \- Interpret \- Titel .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} /Interpret \- Album \- Nummer \- Titel .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Album/Interpret \- Nummer \- Titel .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Album/Interpret \- Titel .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Interpret/Album/St\(:uck Song .RE .PP Wenn eine einzelne Datei ausgew\(:ahlt wurde, werden die Eingabefelder mit den aus dem Dateinamen extrahierten Werten gef\(:ullt\&. Bei Mehrfachselektion werden die Werte direkt gem\(:a\(ss den Dateinamen gesetzt\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag 1\fR .RS 4 .PP Die Eingabefelder f\(:ur Titel, Interpret, Album, Kommentar, Datum, St\(:ucknummer und Genre werden benutzt um die entsprechenden Werte im ersten Tag der ausgew\(:ahlten Dateien zu editieren\&. Die Werte werden ver\(:andert, wenn die Dateiauswahl ge\(:andert wird oder vor Operationen wie Speichern und Beenden und wenn die entsprechenden Markierungsfelder links aktiviert sind\&. Dies ist n\(:utzlich, um nur bestimmte Werte zu ver\(:andern und die \(:ubrigen Werte nicht anzur\(:uhren\&. .PP Wenn eine einzelne Datei ausgew\(:ahlt ist, werden alle Markierungsfelder aktiviert und die Eingabefelder enthalten die Werte aus den Tags in der Datei\&. Wenn ein Tag nicht vorhanden ist, werden die leeren Werte angezeigt, d\&.h\&. eine leere Zeichenfolge f\(:ur die Felder Titel, Interpret, Album und Kommentar, 0 f\(:ur Datum und St\(:ucknummer und ein leerer Auswahleintrag bei Genre\&. Die Werte k\(:onnen editiert werden und werden f\(:ur die ausgew\(:ahlte Datei beim \(:Andern der Auswahl gesetzt, sofern das entsprechende Markierungsfeld aktiviert ist\&. Die Datei wird dann durch ein Disketten\-Symbol als modifiziert gekennzeichnet, doch die eigentliche Datei bleibt unver\(:andert, bis Speichern ausgef\(:uhrt wird\&. .PP Wenn mehrere Dateien ausgew\(:ahlt werden, dann werden nur diejenigen Werte angezeigt, welche bei allen ausgew\(:ahlten Dateien identisch sind\&. In allen \(:ubrigen Editierfeldern werden die leeren Werte (siehe oben) angezeigt\&. Alle Markierungsfelder sind inaktiv, um ungewolltes Ver\(:andern mehrerer Dateien zu verhindern\&. Soll ein Wert f\(:ur alle selektierten Dateien ver\(:andert werden, so kann er editiert werden, und das entsprechende Markierungsfeld wird gesetzt\&. Der Wert wird dann f\(:ur alle ausgew\(:ahlten Dateien ver\(:andert wenn die Auswahl ge\(:andert wird und kann mit Speichern gesichert werden\&. .PP Die Markierungsfelder bestimmen auch, auf welche Felder die meisten anderen Befehle angewendet werden\&. So werden beim Kopieren, Einf\(:ugen und Transferieren zwischen Tags 1 und 2 nur markierte Felder verwendet\&. Um die Bedienung zu vereinfachen, wenn mehrere Dateien ausgew\(:ahlt sind und daher alle Markierungsfelder inaktiv sind, verhalten sich diese Befehle wenn alle Markierungsfelder inaktiv sind gleich als w\(:aren alle markiert\&. .PP Von Tag 2: Die Tag 1 Felder werden auf die gleichen Werte gesetzt wie die entsprechenden Tag 2 Werte\&. Bei Mehrfachselektion werden die Tags der Dateien direkt gesetzt\&. .PP Kopieren: Die Kopierablage wird mit den Tag 1 Werten gef\(:ullt\&. Bei folgenden Einf\(:uge\-Operationen werden nur solche Werte gesetzt, bei welchen hier das Markierungsfeld aktiviert war\&. .PP Einf\(:ugen: F\(:ugt die Werte aus der Kopierablage in die Eingabefelder ein\&. .PP L\(:oschen: Diese Funktion setzt alle Editierfelder auf die leeren Werte, entfernt also alle Werte\&. Die gespeicherte Datei enth\(:alt dann kein Tag 1 mehr\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag 2\fR .RS 4 .PP Die Eingabefelder funktionieren gleich wie bei Tag 1 beschrieben, die L\(:ange der Zeichenfolgen ist jedoch nicht begrenzt\&. .PP Beim Genre k\(:onnen nebst den vorgegebenen auch eigene Namen verwendet werden \- eine Eingabe ins Editierfeld gen\(:ugt\&. .PP Das Tag 2 kann nicht blo\(ss dieselben Werte enthalten wie das Tag 1, das Format ist vielmehr auf flexible Art aus mehreren Elementen aufgebaut, welche wiederum aus verschiedenen Feldern bestehen\&. Die Tag 2 Tabelle zeigt alle Elemente an, welche in der ausgew\(:ahlten Datei vorhanden sind\&. .PP Bearbeiten: Ein Fenster wird ge\(:offnet, in welchem alle Felder des gew\(:ahlten Elementes editiert werden k\(:onnen\&. Wenn mehrere Dateien ausgew\(:ahlt sind, so werden die editierten Felder bei allen ausgew\(:ahlten Dateien angewendet, welche solch ein Element enthalten\&. .PP Hinzuf\(:ugen: Ein Auswahlfenster mit allen unterst\(:utzten Elementtypen wird angezeigt und ein Element des gew\(:ahlten Typs kann editiert und zu der Datei hinzugef\(:ugt werden\&. Dies funktioniert auch, wenn mehrere Dateien ausgew\(:ahlt sind; das Element wird dann bei allen ausgew\(:ahlten Dateien hinzugef\(:ugt\&. .PP L\(:oschen: L\(:oscht das ausgew\(:ahlte Element in den ausgew\(:ahlten Dateien\&. .PP Albumcover hierhin ziehen wird angezeigt wenn die Datei kein Album Cover Bild enth\(:alt\&. Bilder kann man mittels "Drag\*(Aqn\*(AqDrop" vom Browser oder Dateimanager hinzuf\(:ugen; sie werden dann hier angezeigt\&. Das Editieren oder Hinzuf\(:ugen eines Bild\-Elements kann mit einem Doppelklick ausgel\(:ost werden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag 3\fR .RS 4 .PP Einige Dateien haben mehr als zwei Tags, bei diesen ist eine dritte Tag\-Sektion sichtbar\&. Die folgenden Dateitypen haben solch eine Tag 3 Sektion: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} MP3\-Dateien k\(:onnen ein ID3v1\&.1 Tag, ein ID3v2 (2\&.3\&.0 oder 2\&.4\&.0) Tag und in der dritten Sektion ein APE\-Tag haben\&. APE\-Tags werden v\&.a\&. f\(:ur Replay\-Gain\-Informationen verwendet\&. In der Tag 3 Sektion ist diese Information sichtbar, und das APE\-Tag kann mit dem Entfernen\-Knopf gel\(:oscht werden\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Der RIFF\-INFO\-Chunk in WAV\-Dateien ist in der Tag 3 Sektion zug\(:anglich, weil die Tag 1 Sektion f\(:ur ID3v1\&.1 Tags reserviert ist und die Einschr\(:ankungen dieser Tags umfasst\&. Die Tag 2 Sektion wird wie bisher f\(:ur ID3v2\&.4\&.0 Tags verwendet\&. RIFF\-INFO\-Chunks scheinen jedoch weiter verbreitet zu sein\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} FLAC\-Dateien speichern ihre Meta\-Daten normalerweise in einem Vorbis\-Tag\&. Man trifft jedoch auch auf FLAC\-Dateien mit IDv1 und ID3v2 Tags, welche in den Sektionen Tag 1 und Tag 3 sichtbar sind\&. ID3 Tags in FLAC\-Dateien werden nur von TagLib unterst\(:utzt, daher muss das OggFlacMetadata\-Plugin im Plugins\-Reiter der Einstellungen abgeschaltet werden\&. .RE .PP Die Eingabefelder funktionieren wie bei der Tag 2 Sektion\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSynchronisierter Text und Ereignis-Zeitcodes\fR .RS 4 .PP F\(:ur zeitlich mit den Audio\-Daten synchronisierte Informationen steht ein spezieller Editor zur Verf\(:ugung\&. Diese Frames sind f\(:ur ID3v2\&.3\&.0 und ID3v2\&.4\&.0 Tags unterst\(:utzt\&. Um ein solches Frame zu erstellen, muss in der Liste, welche nach Klick auf Hinzuf\(:ugen erscheint, sein Name ausgew\(:ahlt werden \- Synchronisierter Text oder Ereignis\-Zeitcodes\&. Beide Frame\-Typen werden in einem gleichartigen Editor bearbeitet, bei den Ereignis\-Zeitcodes kann aus einer Menge vordefinierter Codes ausgew\(:ahlt werden, w\(:ahrend beim synchronisierten Text der Liedtext eingegeben werden muss\&. Im folgenden wird die Eingabe von synchronisiertem Text erkl\(:art\&. .PP Eine Datei, welche ein ID3v2 Tag enth\(:alt, wird selektiert und der Editor wird mit Hinzuf\(:ugen und Auswahl von Synchronisierter Text ge\(:offnet\&. Falls das Synchronisierter Text Frame schon existiert, wird es selektiert und auf Bearbeiten geklickt\&. Die Werkzeugleiste zum Abspielen von Audio\-Dateien wird automatisch ge\(:offnet, so dass das aktuelle St\(:uck abgespielt und angehalten werden kann, um die Texte zu synchronisieren\&. .PP Die Einstellungen im oberen Teil des SYLT Editors m\(:ussen normalerweise nicht ver\(:andert werden\&. Wenn der Text Zeichen enth\(:alt, welche nicht im Latin 1 Zeichensatz enthalten sind, so kann die Textkodierung auf UTF16 (oder UTF8 f\(:ur ID3v2\&.4\&.0) umgestellt werden\&. F\(:ur englischsprachige Texte und maximale Kompatibilit\(:at sollte ISO\-8859\-1 verwendet werden\&. .PP Der Abschnitt Text hat f\(:unf Kn\(:opfe oberhalb der Tabelle\&. Hinzuf\(:ugen erstellt einen neuen Ereigniseintrag in der Tabelle\&. Die Zeit wird von der momentanen Position der Wiedergabe genommen, so dass ein Eintrag f\(:ur die aktuelle Stelle des abgespielten St\(:ucks erzeugt wird\&. Die Eintr\(:age in der Tabelle m\(:ussen zeitlich geordnet sein, die neue Zeile wird daher entsprechend eingeordnet\&. Eintr\(:age mit ung\(:ultiger Zeit werden speziell behandelt: Wenn die aktuelle Zeile eine ung\(:ultige Zeit hat, so wird ihre Zeit durch die Wiedergabezeit ersetzt, und es wird keine neue Zeile hinzugef\(:ugt\&. Wenn die Zeit nicht ung\(:ultig ist, so wird die erste Zeile mit einer ung\(:ultigen Zeit genommen, falls eine solche vorhanden ist\&. Dieses Verhalten sollte es erleichtern, die Zeit\-Spalte auszuf\(:ullen, wenn der Text bereits in der Tabelle vorhanden ist, aber die Zeiten noch fehlen (was der Fall ist, wenn unsynchronisierte Texte importiert werden)\&. Man beachte, dass ung\(:ultige Zeiten mit 00:00\&.00 dargestellt werden, also gleich wie die Zeit ganz zu Beginn des St\(:ucks, welche nicht ung\(:ultig ist\&. Um einen Zeiteintrag ung\(:ultig zu machen, kann die Delete Taste gedr\(:uckt werden oder L\(:oschen aus dem Kontextmen\(:u verwendet werden\&. Neue Zeilen, welche mit Zeile einf\(:ugen des Kontextmen\(:us oder durch Importieren bzw\&. Von Zwischenablage erstellt werden, enthalten ebenfalls ung\(:ultige Zeiten\&. Zeilen in der Tabelle k\(:onnen mit Klick auf L\(:oschen oder dem Zeilen entfernen Kontextmen\(:u gel\(:oscht werden\&. .PP Synchronisierter Liedtext kann aus einer Datei importiert werden mit Importieren\&. Als Dateiformat wird LRC (einfach oder erweitert) erwartet\&. Wenn die ausgew\(:ahlte Datei keine eckige Klammer in der ersten Zeile enth\(:alt, so wird angenommen, dass es sich um eine einfache Textdatei mit unsynchronisiertem Liedtext handelt\&. Die Zeilen einer solchen Datei werden dann in die Text\-Spalte importiert und die Zeit\-Spalte enth\(:alt ung\(:ultige Zeiten\&. Die Zeitinformationen k\(:onnen mit Hilfe des Hinzuf\(:ugen\-Knopfs erg\(:anzt oder manuell erfasst werden\&. Es ist auch m\(:oglich, Liedtexte mittels Kopieren und Einf\(:ugen zu importieren (Von Zwischenablage)\&. Exportieren erlaubt es, synchronisierten Text in eine LRC\-Datei zu schreiben\&. Man beachte, dass nur Eintr\(:age mit g\(:ultiger Zeit exportiert werden, und dass die Eintr\(:age zeitlich sortiert werden\&. Eintr\(:age mit ung\(:ultiger Zeit werden auch nicht in das SYLT\-Frame geschrieben, man sollte daher alle Zeitinformationen eintragen, bevor man den Editor verl\(:asst\&. .PP Die \m[blue]\fBID3 Spezifikation\fR\m[]\&\s-2\u[5]\d\s+2 legt es nahe, Zeitstempel f\(:ur jede Silbe zu erfassen\&. Die meisten Player unterst\(:utzen jedoch blo\(ss eine Granularit\(:at von einer Zeile bzw\&. einem Satz\&. Um beide Anwendungsf\(:alle zu unterst\(:utzen, folgt Kid3 denselben Konventionen wie \m[blue]\fBSYLT Editor\fR\m[]\&\s-2\u[6]\d\s+2\&. Es wird angenommen, dass Text, welcher in der Tabelle eingetragen wird, eine neue Zeile startet, es sei denn, er beginnt mit einem Leerzeichen oder Bindestrich\&. Diese Regel kann au\(sser Kraft gesetzt werden, indem man den Text mit einem Unterstrich (\*(Aq_\*(Aq) beginnen l\(:asst, um eine Fortsetzung der Zeile zu erzwingen, bzw\&. mit einem Doppelkreuz (\*(Aq#\*(Aq) um eine neue Zeile auch dann zu erhalten, wenn diese mit einem Leerzeichen oder Bindestrich beginnt\&. Diese Umschaltzeichen werden nicht im SYLT\-Frame gespeichert\&. Innerhalb des Frames beginnen neue Zeilen mit einem Zeilenumbruch (das Zeichen mit Hex\-Code 0A), ansonsten handelt es sich um eine Fortsetzung der Zeile\&. Beim Lesen existierender SYLT\-Frames pr\(:uft Kid3, ob der erste Text mit einem Zeilenumbruch beginnt\&. Ist dies nicht der Fall, so wird angenommen, dass alle Texte separate Zeilen sind und keine Silbenfortsetzungen verwendet werden\&. .PP W\(:ahrend dem Abspielen einer Datei wird die aktuelle Zeile hervorgehoben, so dass die Korrektheit der Synchronisationsinformation \(:uberpr\(:uft werden kann\&. Existiert ein Versatz, so kann er mit dem Kontextmen\(:u Zeitabstand hinzuf\(:ugen korrigiert werden, wobei negative Werte die Zeit reduzieren\&. Die Funktion Zur Position springen erm\(:oglicht es, die Position der Wiedergabe an die Zeit der ausgew\(:ahlten Zeile zu setzen\&. .PP \fIEmpfohlenes Vorgehen zum Erstellen eines neuen synchronisierten Liedtextes\fR .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Unsynchronisierten Liedtext besorgen, z\&.B\&. mit Lyrics → Embed Lyrics aus dem Kontextmen\(:u der Dateiliste\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Den unsynchronisierten Liedtext in die Zwischenablage kopieren, dazu einfach in der Text\-Zeile der Tag 2 Tabelle Ctrl+C dr\(:ucken\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Element mit synchronisiertem Liedtext hinzuf\(:ugen (Hinzuf\(:ugen\&.\&.\&., Synchronisierter Text, OK), dann Von Zwischenablage klicken\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Nun sind alle Zeilen des Liedtextes in der Tabelle, die Zeitstempel sind alle ung\(:ultig (0:0:0\&.00)\&. Leere Zeilen k\(:onnen vorangehend gel\(:oscht werden\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Die Wiedergabe kann mit dem Abspiel\-Knopf ► der Wiedergabe\-Werkzeugliste, welche sich unten am Hauptfenster befindet, gestartet werden\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Wenn die n\(:achste Zeile mit ung\(:ultigem Zeitstempel wiedergegeben wird, kann Hinzuf\(:ugen geklickt oder Alt+H gedr\(:uckt werden, der Zeitstempel wird gesetzt\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Auf diese Weise fortfahren, bis alle Zeitstempel gesetzt sind\&. Falls man eine Zeile verpasst, so kann die Wiedergabe gestoppt und falsche Zeitstempel gel\(:oscht werden (Delete Taste oder mit L\(:oschen aus dem Kontextmen\(:u)\&. Um die Wiedergabe ab einem gewissen Zeitstempel zu starten, kann Zur Position springen aus dem Kontextmen\(:u verwendet werden\&. .RE .sp .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBKapitel in MP4 Dateien\fR .RS 4 .PP MP4 H\(:orb\(:ucher haben typischerweise eine \&.m4b Dateiendung und sind ziemlich gro\(ss weil alle Kapitel in einer einzigen Datei enthalten sind\&. Solche Dateien k\(:onnen Kapitel\-Markierungen enthalten, welche mit Kid3 als Pseudo\-Element "Kapitel" bearbeitet werden k\(:onnen, wobei derselbe Bearbeitungsdialog wie f\(:ur Synchronisierten Text verwendet wird\&. Diese Funktion ist nur mit demMp4v2Metadata Plugin verf\(:ugbar, man sollte also sicherstellen, dass es aktiviert und oberhalb vom TaglibMetadata Plugin ist im ReiterErweiterungen bei den Einstellungen wenn MP4 Kapitel bearbeitet werden sollen\&. .RE .SS "Das Men\(:u Datei" .PP .PP Datei → \(:Offnen\&.\&.\&. (Ctrl+O) .RS 4 Ein Ordner wird ge\(:offnet, und alle Dateien, welche den gew\(:ahlten Dateinamenfilter erf\(:ullen, werden im Dateilistenfeld angezeigt\&. Die gew\(:ahlte Datei wird selektiert\&. .RE .PP Datei → Zuletzt ge\(:offnete Dateien .RS 4 Ein k\(:urzlich ge\(:offneter Ordner wird ge\(:offnet\&. .RE .PP Datei → Ordner \(:offnen \&.\&.\&. (Ctrl+D) .RS 4 Ein Ordner wird ge\(:offnet, und alle Dateien, welche den gew\(:ahlten Dateinamenfilter erf\(:ullen, werden im Dateilistenfeld angezeigt\&. .RE .PP Datei → Neu laden (F5) .RS 4 Ordner neu einlesen\&. Ver\(:anderte Dateien m\(:ussen vorher gespeichert werden\&. Ausgeklappte Unterordner werden eingeklappt\&. .RE .PP Datei → Speichern (Ctrl+S) .RS 4 Speichert alle ver\(:anderten Dateien im Ordner\&. Die ver\(:anderten Dateien sind durch ein Diskettensymbol gekennzeichnet\&. Wenn Dateinamen ver\(:andert wurden, so werden die entsprechenden Dateien umbenannt\&. .RE .PP Datei → Zuletzt gespeicherte Fassung .RS 4 Macht die \(:Anderungen an einer oder mehreren Dateien r\(:uckg\(:angig\&. Wenn keine Dateien im Dateilistenfeld selektiert sind, so werden die \(:Anderungen an allen Dateien r\(:uckg\(:angig gemacht, ansonsten nur an den ausgew\(:ahlten Dateien\&. .RE .PP Datei → Importieren\&.\&.\&. .RS 4 Der Import Dialog wird verwendet, um Daten direkt von einem freedb\&.org Server, von einem MusicBrainz Server, von Discogs, Amazon oder anderen Quellen mit Albumtitellisten zu importieren\&. .sp Zum Importieren von einem freedb\&.org\-Server wird Von Server: gnudb\&.org gew\(:ahlt\&. Der zu suchende Interpret und der Name des Albums k\(:onnen in den zwei oberen Feldern eingegeben werden, und die gefundenen Alben werden nach Klick auf Suchen dargestellt, sobald sie von \m[blue]\fBwww\&.gnudb\&.org\fR\m[]\&\s-2\u[7]\d\s+2 empfangen werden\&. Die St\(:uckdaten eines Albums werden nach Auswahl geladen, der verwendete freedb\&.org\-Server kann gew\(:ahlt werden, ebenso der CGI Pfad\&. Die importierten Daten werden in der Vorschau des Import\-Dialogfensters dargestellt\&. Wenn man mit den Daten in der Vorschau zufrieden ist, k\(:onnen sie mit OK importiert werden\&. .sp Wenn man bereits ein Suchergebnis im Browser offen hat, kann man die URL direkt in das erste Suchfeld eingeben\&. Das Resultat erscheint dann in der Albumliste und kann direkt in Kid3 importiert werden\&. .sp Zum Importieren vom Discogs Server wird Discogs gew\(:ahlt\&. Wie bei gnudb\&.org k\(:onnen auch hier Interpret und Album eingegeben werden und es wird ebenfalls eine Liste mit Alben zur Auswahl gestellt\&. Ein Token kann eingegeben werden, um das RESTful Discogs API zu verwenden statt der Web\-Schnittstelle, welche oft ge\(:andert wird und dann funktioniert der Import\-Parser nicht mehr\&. Dazu muss man sich bei \m[blue]\fBDiscogs\fR\m[]\&\s-2\u[8]\d\s+2 registrieren und dann dort ein Token generieren (Settings/Developers, Generate new token)\&. Man sollte nicht vergessen, das Token mit Einstellungen speichern zu sichern, damit es auch f\(:ur k\(:unftige Anfragen verwendet wird\&. Wenn Standard\-Tags markiert ist, werden grundlegende Informationen importiert, so z\&.B\&. Interpret, Album und Titel\&. Wenn Zus\(:atzliche Tags markiert ist, werden mehr verf\(:ugbare Informationen importiert, z\&.B\&. Musiker, Arrangierer oder der Herausgeber\&. Wenn Cover\-Bilder markiert ist, werden Cover\-Bilder heruntergeladen, falls vorhanden\&. .sp Zum Importieren von Amazon wird Amazon gew\(:ahlt\&. Wie bei Von gnudb\&.org k\(:onnen auch hier Interpret und Album eingegeben werden und es wird ebenfalls eine Liste mit Alben zur Auswahl gestellt\&. Wenn Zus\(:atzliche Tags markiert ist, werden mehr verf\(:ugbare Informationen importiert, z\&.B\&. Musiker, Arrangierer oder der Herausgeber\&. Wenn Cover\-Bilder markiert ist, werden Cover\-Bilder heruntergeladen, falls vorhanden\&. .sp In der gleichen Art kann mit Von MusicBrainz Album auch in der Album\-Datenbank von MusicBrainz gesucht werden\&. Die Bedienung ist wie bei gnudb\&.org beschrieben\&. .sp Zum Importieren von einem MusicBrainz Server dient der Dialog, der nach Klicken auf Von MusicBrainz Fingerprint erscheint\&. Wie bei freedb kann auch hier der Server ausgew\(:ahlt werden\&. Unten ist eine Tabelle, welche die importierten St\(:uckdaten darstellt\&. Die rechte Spalte zeigt dabei den Zustand der MusicBrainz\-Abfrage, welche gleich mit dem \(:Offnen des Dialogs mit "Suche l\(:auft" beginnt\&. Es folgen dann ein Abfrage des Fingerprints und, falls diese kein Ergebnis liefert, eine Suche anhand der in der Datei vorhandenen Tags\&. F\(:ur eine erfolgreiche MusicBrainz\-Suche kann es daher hilfreich sein, vorhandene Informationen (z\&.B\&. Interpret und Album) vorangehend in den Tags zu speichern\&. Wenn ein Resultat gefunden wurde, so endet die Suche im Zustand "Erkannt", andernfalls wurde nichts gefunden oder gleich mehrere m\(:ogliche Resultate, von denen der Benutzer eines ausw\(:ahlen kann\&. OK und Anwenden \(:ubernehmen die importierten Daten, Abbrechen schlie\(sst den Dialog\&. Das Schlie\(ssen des Dialogs kann eine Weile dauern, da noch die ganze MusicBrainz\-Maschinerie runtergefahren werden muss\&. .sp Zum Importieren von Albumdaten in Textform \(:offnet man einen Unterdialog mit Von Datei/Zwischenablage\&. Dort stehen mehrere vorkonfigurierte Formate zur Verf\(:ugung\&. Die ersten zwei, "CSV unquoted" und "CSV quoted", dienen dazu, Daten welche \(:uber die Export Funktion exportiert wurden, wieder zu importieren\&. Diese Daten k\(:onnen nat\(:urlich von einer Tabellenkalkulation bearbeitet werden\&. CSV\-Daten aus einer Tabellenkalkulation m\(:ussen mit Tabulator als Trennzeichen geschrieben werden und sollten sich \(:uber "CSV quoted" einlesen lassen\&. Dieses ist flexibler als "CSV unquoted", daf\(:ur d\(:urfen die enthaltenen Felder keine Anf\(:uhrungszeichen enthalten\&. Falls nur von Kid3 exportiert und wieder importiert wird, so sollte dies problemlos mit "CSV unquoted" m\(:oglich sein\&. Im Kontextmen\(:u der Dateiliste hat es dar\(:uber hinaus die Funktionen "Export CSV" und "Import CSV", welche Skripts benutzen, um CSV\-Daten vollst\(:andiger und flexibler auszutauschen\&. .sp Das n\(:achste Format, "freedb HTML text", kann benutzt werden, um Informationen aus einer HTML\-Seite von \m[blue]\fBfreedb\&.org\fR\m[]\&\s-2\u[9]\d\s+2 zu kopieren\&. Dazu sucht man sich in freedb das Album, und wenn die gew\(:unschte Information im Browser angezeigt wird, kann sie selektiert und in die Zwischenablage kopiert werden\&. Nach einem Klick auf Von Zwischenablage werden die importierten Daten in der Tabelle angezeigt und k\(:onnen mit OK \(:ubernommen werden\&. Das Ziel (Tag 1, Tag 2 oder Tag 1 und Tag 2) kann mit einem Auswahlfeld festgelegt werden\&. Die Titel in der Dateiliste sollten in der korrekten Reihenfolge angezeigt sein um die richtigen Tags zu kriegen\&. Dies ist kein Problem, wenn sie nummeriert sind\&. .sp Das n\(:achste vorkonfigurierte Format, "freedb HTML source", kann dann benutzt werden, wenn die Import\-Daten als HTML\-Dokument vorliegen\&. Solch eine Datei kann im Datei Dialog, welcher nach Klick auf Von Datei erscheint, ausgew\(:ahlt werden\&. Nat\(:urlich k\(:onnen die Daten auch in einem Editor kopiert und dann \(:uber die Zwischenablage \(:ubernommen werden\&. Dieses Format kann f\(:ur Offline Import n\(:utzlich sein, obschon die HTML\-Datei auch von einem Browser angezeigt und im ersten Format \(:uber die Zwischenablage importiert werden kann\&. .sp Weitere vorkonfigurierte Formate, z\&.B\&. "Track Title Time" stehen zur Verf\(:ugung\&. Mit Klick auf Hinzuf\(:ugen kann ein leeres benutzerdefiniertes Format erzeugt und vom Benutzer gesetzt werden\&. Die zwei Zeilen unterhalb des Formatnamens k\(:onnen hierzu mit regul\(:aren Ausdr\(:ucken gef\(:ullt werden\&. Der erste Ausdruck wird einmal angewendet, um albumspezifische Daten wie Interpret, Album, Jahr und Genre zu extrahieren\&. Die zweite Zeile wird vom Dokumentanfang bis zum Schluss f\(:ur jeden Titel probiert, um Titeldaten zu kriegen, also Nummer und Titel\&. In den regul\(:aren Ausdr\(:ucken k\(:onnen alle von Qt unterst\(:utzten Funktionen eingesetzt werden; also das meiste von dem, was Perl bietet\&. Klammerkonstrukte "(\&.\&.)" werden ben\(:utzt, um Felddaten zu extrahieren und werden von einem Kid3\-spezifischen Feldcode eingeleitet\&. Die Codes sind dieselben wie beim Dateinamenformat, auch hier sind nebst den unten aufgelisteten Codes beliebige Framenamen m\(:oglich: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %s %{title} Titel (Song) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %a %{artist} Interpret (Artist) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %l %{album} Album .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %c %{comment} Kommentar (Comment) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %y %{year} Jahr (Year) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track} Nummer (St\(:uck) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %g %{genre} Genre .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %d %{duration} L\(:ange (Dauer) .RE .sp Beispiel: Ein regul\(:arer Ausdruck f\(:ur die zweite Zeile, um Titel aus einer \&.m3u St\(:uckliste zu holen, k\(:onnte "%{track}(\ed+)\es+%{title}(\eS[^\er\en]*)\e\&.mp3[\er\en]" sein\&. Alle Formate k\(:onnen ge\(:andert werden, indem der Name und die regul\(:aren Ausdr\(:ucke editiert werden und Einstellungen speichern gedr\(:uckt wird\&. Gespeichert werden sie in der Datei kid3rc im Konfigurationsordner\&. Diese Datei kann auch direkt ver\(:andert werden, um mehr Importformate zu haben, oder man kann sie l\(:oschen, um wieder zu den Standardeinstellungen zu kommen\&. Formate k\(:onnen mit Entfernen gel\(:oscht werden\&. .sp Genauigkeit zeigt eine Absch\(:atzung, wie gut die importierten Daten zu den St\(:ucken passen\&. Dazu werden die L\(:angen oder die Dateinamen verglichen um den Grad an \(:Ubereinstimmung in Prozent zu errechnen\&. Cover\-Bild zeigt die URL des Cover\-Bildes, welches heruntergeladen wird\&. .sp Um zu pr\(:ufen, ob die importierten St\(:ucke den vorhandenen Dateien entsprechen, k\(:onnen die L\(:angen verglichen werden\&. Diese Option kann mit dem Markierungsfeld Teste maximal erlaubten Zeitunterschied eingeschaltet werden und der maximal erlaubten Zeitunterschied kann in Sekunden eingestellt werden\&. Wird eine \(:Uberschreitung dieser Toleranzschwelle festgestellt, so wird die entsprechende L\(:ange in der Vorschau rot dargestellt\&. .sp Falls nun die vorhandenen Dateien in einer anderen Reihenfolge als die importierten St\(:ucke vorliegen, so sollte die Zuordnung korrigiert werden\&. Diese Arbeit wird durch die Zuordnen mit Kn\(:opfe L\(:ange, Nummer und Titel erleichtert, welche die St\(:ucke dem jeweiligen Feld entsprechend zuordnen\&. Sollte die Zuordnung noch manuell korrigiert werden m\(:ussen, so kann ein Track nach Dr\(:ucken der Steuerungs\-Taste (Ctrl/Strg) mit der linken Maustaste gefasst und dann an die gew\(:unschte Stelle gezogen werden\&. .sp Wenn der Import Dialog ge\(:offnet wird, enth\(:alt die Tabelle die aktuell vorhandenen Werte der Tags\&. Der Tag Typ (Tag 1, Tag 2, Tag 1 und Tag 2) kann \(:uber das Ziel Auswahlfeld selektiert werden\&. Der Knopf rechts von diesem Auswahlfeld dient dazu, die Tabelle auf die in den Tags gespeicherten Werte zur\(:uckzusetzen\&. \(:Uber die Markierungsfelder in der ersten Tabellenspalte k\(:onnen die St\(:ucke gew\(:ahlt werden, deren Tags importiert werden sollen\&. Dies kann z\&.B\&. dann n\(:utzlich sein, wenn ein Ordner alle St\(:ucke eines Doppelalbums enth\(:alt, aber blo\(ss die St\(:ucke der zweiten CD importiert werden sollen\&. .sp Um die Dateien, welche importiert werden, zu identifizieren, k\(:onnen die Dateinamen oder die vollst\(:andigen Pfade in der Tabelle dargestellt werden\&. Diese Einstellung ist \(:uber das Kontextmen\(:u, welches bei Rechtsklick auf die Kopfzeile erscheint, m\(:oglich\&. Die Werte in der Import\-Tabelle lassen sich editieren\&. Die momentan in den Tags vorhandenen Werte lassen sich mit dem R\(:uckg\(:angig\-Knopf rechts vom Ziel\-Listenfeld wiederherstellen\&. Dies ist auch dann n\(:utzlich, wenn man das Ziel ver\(:andert hat und die dort vorhandenen Werte in der Tabelle sehen m\(:ochte\&. .sp Wie in fast allen Dialogen dient der Einstellungen speichern Knopf dazu, die dialogspezifischen Optionen und die Fenstergr\(:o\(sse persistent zu speichern\&. .sp Von Tags f\(:uhrt zu einem Unterdialog, mit welchem sich Tag Frames mit dem Inhalt aus anderen Tag Frames f\(:ullen lassen\&. Dies kann dazu benutzt werden, um einfach Informationen zwischen Tags zu kopieren oder einen Teil des Inhaltes eines Tag Frames zu extrahieren und in einem anderen Tag Frame einzuf\(:ugen\&. .sp Wie beim Import von Datei/Zwischenablage stehen frei konfigurierbare Formate zur Verf\(:ugung, um verschiedene Operationen durchzuf\(:uhren\&. Vorkonfigurierte Formate erlauben es beispielsweise, den Wert des Interpreten zum Album Interpreten, Komponisten oder Leiter zu kopieren, bei Titeln, welche die St\(:ucknummer enthalten, diese zu extrahieren und im St\(:ucknummer\-Frame zu speichern\&. Ebenso l\(:asst sich ein Untertitel aus dem Titel extrahieren\&. .sp Das Erstellen eines eigenen Importformates wird im folgenden anhand eines Beispieles erkl\(:art\&. Die Information im Untertitel soll auch im Kommentar gesetzt werden\&. Dazu wird ein neues Format mit Hinzuf\(:ugen erstellt und ein neuer Name gesetzt, in diesem Beispiel also "Subtitle to Comment"\&. Nun gibt man unter Quelle "%{subtitle}" und unter Extraktion "%{comment}(\&.*)" ein und klickt Einstellungen speichern\&. .sp Der Ausdruck in Quelle kann aus Format Codes f\(:ur beliebige Tag Frames bestehen, wobei nat\(:urlich auch mehrere Codes verwendet werden k\(:onnen, um den Inhalt verschiedener Frames zu kombinieren\&. F\(:ur jedes St\(:uck wird aus den Tags und dem Quelle Format ein Text erzeugt, und auf diesen wird dann der regul\(:are Ausdruck aus Ermittlung angewendet, um neue Tag Werte zu setzen\&. Dieser regul\(:are Ausdruck enth\(:alt Klammerkonstrukte "(\&.\&.)", um Felddaten zu extrahieren, und die Klammer\-Konstrukte werden vom Format Code des Tag Frames eingeleitet\&. Es funktioniert also gleich wie bei den Formaten zum Import von Datei/Zwischenablage\&. .sp Import von Tags\&.\&.\&. ist auch direkt im Men\(:u Datei verf\(:ugbar\&. Der Unterschied zwischen diesen zwei Funktionen ist, dass der Unterdialog des Import\-Dialogs auf allen Dateien des aktuellen Ordners arbeitet, w\(:ahrend die Men\(:u\-Funktion auf die selektierten Dateien angewendet wird (welche in verschiedenen Ordnern liegen k\(:onnen)\&. Die Men\(:u\-Funktion verf\(:ugt \(:uber einen zus\(:atzlichen Format Code "%{__return}" um den extrahierten Wert zur\(:uckzugeben, was im CLI und bei der QML\-Schnittstelle n\(:utzlich sein kann\&. .RE .PP Datei → Importieren von gnudb\&.org\&.\&.\&. .RS 4 Importieren von einem freedb\&.org Server mit Album\-Suche auf gnudb\&.org\&. Dieser Men\(:upunkt \(:offnet denselben Import Dialog wie Importieren\&.\&.\&., \(:offnet jedoch direkt auch den gnudb\&.org Dialog\&. .RE .PP Datei → Importieren von Discogs\&.\&.\&. .RS 4 Importieren vom Discogs Server\&. Dieser Men\(:upunkt \(:offnet denselben Import Dialog wie Importieren\&.\&.\&., \(:offnet jedoch direkt auch den Discogs Dialog\&. .RE .PP Datei → Importieren von Amazon\&.\&.\&. .RS 4 Importieren von Amazon\&. Dieser Men\(:upunkt \(:offnet denselben Import Dialog wie Importieren\&.\&.\&., \(:offnet jedoch direkt auch den Amazon Dialog\&. .RE .PP Datei → Importieren von MusicBrainz Album\&.\&.\&. .RS 4 Importieren von der MusicBrainz Album Datenbank\&. Dieser Men\(:upunkt \(:offnet denselben Import Dialog wie Importieren\&.\&.\&., \(:offnet jedoch direkt auch den Von MusicBrainz Album Dialog\&. .RE .PP Datei → Importieren von MusicBrainz Fingerprint\&.\&.\&. .RS 4 Importieren von einem MusicBrainz Server\&. Dieser Men\(:upunkt \(:offnet denselben Import Dialog wie Importieren\&.\&.\&., \(:offnet jedoch direkt auch den Von MusicBrainz Fingerprint Dialog\&. .RE .PP Datei → Importieren von Tags\&.\&.\&. .RS 4 Wie Import von Tags, jedoch wird der Import auf die selektierten Dateien angewendet\&. .RE .PP Datei → Automatisch importieren\&.\&.\&. .RS 4 Automatisch importieren lassen sich Informationen f\(:ur mehrere Alben von verschiedenen Web\-Diensten\&. Wenn Ordner in der Dateiliste selektiert sind, so werden Metadaten f\(:ur die St\(:ucke der gew\(:ahlten Ordner importiert\&. Wenn kein Ordner ausgew\(:ahlt ist, so werden Informationen f\(:ur alle Ordner innerhalb der Dateiliste importiert\&. .sp Der Tag Typ (Tag 1, Tag 2, Tag 1 und Tag 2) kann \(:uber das Ziel Auswahlfeld selektiert werden\&. .sp Profile bestimmen, von welchen Servern die Album\-Informationen geholt werden\&. Einige Profile sind bereits vordefiniert (All, MusicBrainz, Discogs, Cover Art), eigene Profile k\(:onnen mit dem Hinzuf\(:ugen Knopf rechts von der Profil Auswahlliste erstellt werden\&. .sp Die Tabelle darunter zeigt die Server, welche benutzt werden, wenn mit dem ausgew\(:ahlten Profil importiert wird\&. Der Import\-Prozess f\(:ur ein Album wird beendet, wenn alle geforderten Informationen gefunden wurden, daher ist die Reihenfolge der Server in der Tabelle wichtig\&. Sie kann mit den Nach oben und Nach unten Kn\(:opfen ver\(:andert werden\&. Mit Bearbeiten kann ein bestehender Eintrag ver\(:andert werden\&. Die Server Auswahl stellt dieselben Server zur Verf\(:ugung wie die Import\-Funktionen\&. Standard Tags, Zus\(:atzliche Tags und Cover\-Bilder bestimmen die Informationen, welche vom Server geholt werden sollen\&. Die Genauigkeit schlie\(sslich bestimmt die minimale \(:Ubereinstimmung, welche erreicht werden muss, damit die importierten Daten akzeptiert werden\&. Ist sie ungen\(:ugend, so wird ein Import mit dem n\(:achsten Server versucht\&. Dieser Dialog mit den Server\-Eigenschaften wird auch angezeigt wenn Hinzuf\(:ugen gew\(:ahlt wird, um einen neuen Eintrag zu erstellen\&. Bestehende Zeilen k\(:onnen mit Entfernen gel\(:oscht werden\&. .sp Um einen automatischen Import mit dem ausgew\(:ahlten Profil zu beginnen wird Starten gedr\(:uckt\&. Details \(:uber den laufenden Prozess werden im Dialog oben angezeigt\&. Abbrechen f\(:uhrt zu einer vorzeitigen Beendigung des Imports\&. .RE .PP Datei → Nach Cover\-Bildern suchen\&.\&.\&. .RS 4 Der Dialog Nach Cover\-Bildern suchen hilft bei der Suche nach Album Cover\-Bildern\&. Interpret/Album werden wenn m\(:oglich aus den Tags \(:ubernommen\&. Quelle stellt eine Vielzahl von Webseiten mit Cover\-Bildern zur Verf\(:ugung\&. Unter dem Namen ist die URL mit Interpret und Album als Parametern angegeben\&. F\(:ur URL\-codierte Werte k\(:onnen dabei \fB%u{artist}\fR und \fB%u{album}\fR angegeben werden oder auch andere Werte aus den Tags, wie in Kid3 einrichten bei Benutzerbefehle beschrieben\&. Nach "Custom Source" k\(:onnen auch eigene Quellen hinzugef\(:ugt werden\&. Dazu wird "Custom Source" durch den Namen der Quelle ersetzt, dann Return gedr\(:uckt, die URL eingegeben und mit Einstellungen speichern gesichert\&. Das resultierende Browser\-Kommando wird oben im Dialog dargestellt und nach Dr\(:ucken des Browser\-Knopfes ausgef\(:uhrt\&. Der Browser, welcher in den Einstellungen konfiguriert werden kann, wird mit der gew\(:ahlten Quelle gestartet\&. Das gew\(:unschte Cover\-Bild kann dann aus dem Browser in das Kid3 Fenster gezogen werden und wird im Bild\-Feld von Tag 2 der selektierten Dateien gesetzt\&. .sp Da nicht alle Browser Drag\*(Aqn\*(AqDrop von Bildern unterst\(:utzen und h\(:aufig die Bilder auf Webseiten mit einer URL unterlegt sind, erh\(:alt Kid3 in solchen F\(:allen blo\(ss die entsprechende URL und nicht das Bild\&. Wenn die URL auf ein Bild zeigt, wird dieses heruntergeladen\&. Falls die URL jedoch auf sonst eine Webseite hinweist, so muss von dieser auf das gew\(:unschte Cover\-Bild geschlossen werden\&. Dies ist die Aufgabe der Tabelle URL\-Ersetzung\&. Die linke Spalte Vergleich enth\(:alt einen regul\(:aren Ausdruck, welcher mit der URL verglichen wird\&. Wenn eine \(:Ubereinstimmung festgestellt wird, so werden die erhaltenen Klammer\-Werte im Muster der Spalte URL des Bildes ersetzt (\e1 usw\&.)\&. Der ersetzte regul\(:are Ausdrucks enth\(:alt dann die URL des Bildes\&. Auf diese Weise k\(:onnen auch Bilder von Amazon, Google Images, usw\&. per Drag\*(Aqn\*(AqDrop importiert werden\&. Nat\(:urlich k\(:onnen auch hier eigene Ersetzungen erfasst werden\&. .RE .PP Datei → Exportieren\&.\&.\&. .RS 4 Der Export Dialog wird verwendet, um die Daten aus den Tags in einer Datei oder der Zwischenablage zu speichern\&. Das oberste Editierfeld stellt einen einfachen Editor zur Verf\(:ugung, welcher eine Vorschau der zu exportierenden Daten bietet\&. Falls die Export\-Daten Tabulatorzeichen enthalten, wird der Export in einer Tabelle dargestellt\&. Die Daten werden aus den Tags der Dateien im aktuellen Ordner generiert, und zwar gem\(:a\(ss dem unten eingestellten Format\&. .sp Diese Formateinstellung ist gleich aufgebaut wie im Import Dialog: Im obersten Feld ist der Titel (z\&.B\&. "CSV unquoted"), dann folgt der Header \- dieser wird nur am Anfang der Datei generiert\&. Nun folgt das St\(:uck\-Format, es wird f\(:ur jedes St\(:uck angewendet\&. Schlie\(sslich gibt es noch einen Trailer, welcher die Datei noch abschlie\(sst\&. .sp Die Formatfelder enthalten keine regul\(:aren Ausdr\(:ucke wie im Import Dialog, sondern blo\(ss Ausgabeformate, bei denen spezielle %\-Ausdr\(:ucke durch Werte aus den Tags ersetzt werden\&. Das ganze verh\(:alt sich also gleich wie beim Dateinamenformat, es werden auch dieselben Codes verwendet, plus ein paar zus\(:atzliche\&. Nicht nur die unten aufgelisteten Codes sind m\(:oglich, es k\(:onnen die Namen aller Tag Frames verwendet werden\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %s %{title} Titel (Song) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %a %{artist} Interpret (Artist) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %l %{album} Album .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %c %{comment} Kommentar (Comment) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %y %{year} Jahr (Year) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track} Nummer (St\(:uck, z\&.B\&. 01) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track\&.n} Nummer mit Feldl\(:ange n (z\&.B\&. 001 f\(:ur %{track\&.3}) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %T %{tracknumber} Nummer (St\(:uck, ohne f\(:uhrende Null, z\&.B\&. 1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %g %{genre} Genre .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %f %{file} Dateiname (File name) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %p %{filepath} Pfadname .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %{modificationdate} \(:Anderungsdatum .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %{creationdate} Erstellungsdatum .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %u %{url} URL .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %{dirname} Ordnername .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %d %{duration} Dauer in Minuten:Sekunden .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %D %{seconds} Dauer in Sekunden .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %n %{tracks} Anzahl St\(:ucke im Album .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %e %{extension} Dateiendung .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %O %{tag1} Das Format von Tag 1 (ID3v1\&.1 oder leer falls nicht vorhanden) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %o %{tag2} Das Format von Tag 2 (ID3v2\&.3\&.0, ID3v2\&.4\&.0, ID3v2\&.2\&.0, ID3v2\&.2\&.1, Vorbis, APE, MP4, ASF oder leer falls nicht vorhanden) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %b %{bitrate} Bitrate in kbit/s .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %v %{vbr} VBR oder leer (nur f\(:ur ID3v2\&.3 mit id3lib) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %r %{samplerate} Samplerate in Hz .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %m %{mode} Kanalmodus (Stereo oder Joint Stereo) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %h %{channels} Anzahl Kan\(:ale (1 oder 2) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %k %{codec} Codec (z\&.B\&. MPEG 1 Layer 3, MP4, Ogg Vorbis, FLAC, MPC, APE, ASF, AIFF, WAV) .RE .sp Mit diesen Formatcodes sind bereits einige Formate vordefiniert\&. "CSV unquoted" trennt die einzelnen Felder durch Tabulatoren\&. Daten in diesem Format k\(:onnen einfach wieder \(:uber das gleichnamige Importformat in Kid3 importiert werden\&. "CSV quoted" setzt die Felder zus\(:atzlich noch in Anf\(:uhrungszeichen, was den Import in Tabellenkalkulationen erleichtert\&. Daf\(:ur sollten in den Feldern keine Anf\(:uhrungszeichen vorkommen\&. "Extended M3U" und "Extended PLS" erzeugen St\(:ucklisten mit Zusatzinformationen und absoluten Pfadnamen\&. "HTML" dient dazu, eine HTML\-Seite mit verlinkten St\(:ucken zu erstellen\&. "Kover XML" generiert eine XML\-Datei, welche vom Cover\-Druck\-Programm Kover gelesen werden kann\&. "Technical Details" liefert Informationen \(:uber Bitrate, Samplerate, Kan\(:ale, usw\&. "Custom Format" schlie\(sslich ist frei f\(:ur ein eigenes Format\&. Nat\(:urlich k\(:onnen auch die anderen Formate beliebig angepasst werden, oder es k\(:onnen noch mehr Formate in der Datei kid3rc im Konfigurationsordner hinzugef\(:ugt werden\&. .sp Die Quelle der Daten (Tag 1 oder Tag 2) kann mit einem Auswahlfeld festgelegt werden\&. Ein Klick auf In Datei bzw\&. In Zwischenablage speichert die Daten in einer Datei oder der Zwischenablage\&. OK und Abbrechen beenden den Dialog, wobei OK die aktuellen Einstellungen \(:ubernimmt\&. .RE .PP Datei → St\(:uckliste erstellen\&.\&.\&. .RS 4 Erzeugt eine St\(:uckliste\&. Das Format und der Inhalt der St\(:uckliste k\(:onnen mit verschiedenen Optionen bestimmt werden\&. .sp Wie Ordnername generiert den Dateinamen der Wiedergabeliste aus dem Namen des Ordners\&. Es kann aber auch ein Format mit Werten aus den Tags benutzt werden, z\&.B\&. "\fB%{artist} \- %{album}\fR", um die Namen von Interpret und Album im Dateinamen zu haben\&. Es k\(:onnen dieselben Format Codes wie bei Exportieren verwendet werden\&. Die Liste der verf\(:ugbaren Formate kann im Bereich Formatdes Dateien Reiters in den Einstellungen bearbeitet werden\&.Erstelle neue leere St\(:uckliste erzeugt eine leere St\(:uckliste mit dem angegebenen Namen\&. Die Dateierweiterung richtet sich nach dem Format der St\(:uckliste\&. .sp Wo die Wiedergabeliste erstellt wird, kann bestimmt werden mit der Auswahlliste Erstelle in .PP Aktueller Ordner .RS 4 Die St\(:uckliste wird im aktuellen Ordner erstellt und enth\(:alt nur Dateien aus diesem Ordner\&. Der aktuelle Ordner ist der Ordner, in welchem sich die aktuelle Datei befindet\&. Wenn mehrere Dateien ausgew\(:ahlt sind, ist wahrscheinlich die zuletzt ausgew\(:ahlte Datei die aktuelle Datei\&. .RE .PP Jedem Ordner .RS 4 In jedem Ordner, welcher gelistete Dateien enth\(:alt, wird eine eigene St\(:uckliste erstellt, welche die Dateien aus dem jeweiligen Ordner enth\(:alt\&. .RE .PP Basisordner .RS 4 Nur eine einzige St\(:uckliste wird im Basisordner (d\&.h\&. dem Ordner der Dateiliste) erstellt, und sie enth\(:alt die gelisteten Dateien aus dem Basisordner und allen Unterordnern\&. .RE .sp Das Format der Wiedergabeliste kann M3U, PLS oder XSPF sein\&. .sp Nur ausgew\(:ahlte Dateien einf\(:ugen f\(:uhrt dazu, dass nur ausgew\(:ahlte Dateien in der St\(:uckliste erscheinen\&. Wenn ein Ordner ausgew\(:ahlt ist, so gelten all seine Dateien ebenfalls als selektiert\&. Wenn diese Option nicht aktiviert ist, gelangen alle Audio\-Dateien in die St\(:uckliste\&. .sp Sortiere nach Dateiname ordnet die Dateien wie \(:ublich nach dem Dateinamen in der Wiedergabeliste an\&. Mit Sortiere nach Tag\-Feld ist es m\(:oglich, eine Format\-Zeichenfolge mit Tag\-Werten f\(:ur die Sortierung zu verwenden\&. "\fB%{track\&.3}\fR" kann beispielsweise benutzt werden, um nach der St\(:ucknummer zu sortieren ("\fB\&.3\fR" wird verwendet, um 3 Stellen mit f\(:uhrenden Nullen zu kriegen, und somit korrekt nach der Nummer zu sortieren)\&. Es ist auch m\(:oglich, mehrere Codes zu verwenden, z\&.B\&. "\fB%{genre}%{year}\fR", um nach einer Zeichenfolge aus Genre und Jahr zu sortieren\&. .sp Die Eintr\(:age in der St\(:uckliste sind relative oder absolute Pfadangaben, je nachdem ob Benutze relativen Pfad f\(:ur Dateien in der Wiedergabeliste oder Benutze vollen Pfad f\(:ur Dateien in der Wiedergabeliste gesetzt ist\&. .sp Nur Liste der Dateien schreiben f\(:uhrt dazu, dass die St\(:uckliste nur die Pfade zu den Dateien enth\(:alt\&. W\(:unscht man zus\(:atzliche Informationen, so steht Schreibe Informationen mit einer Format\-Zeichenfolge zur Verf\(:ugung, und es wird eine erweiterte St\(:uckliste generiert\&. .RE .PP Datei → Beenden (Ctrl+Q) .RS 4 Beendet die Anwendung\&. .RE .SS "Das Men\(:u Bearbeiten" .PP .PP Bearbeiten → Alles ausw\(:ahlen (Alt+A) .RS 4 Selektiert alle Dateien\&. .RE .PP Bearbeiten → Abw\(:ahlen (Ctrl+Shift+A) .RS 4 Deselektiert alle Dateien\&. .RE .PP Bearbeiten → Alles im Ordner ausw\(:ahlen .RS 4 Selektiert alle Dateien im aktuellen Ordner\&. .RE .PP Bearbeiten → Vorangehende Datei (Alt+Up) .RS 4 Selektiert die vorangehende Datei\&. .RE .PP Bearbeiten → N\(:achste Datei (Alt+Down) .RS 4 Selektiert die n\(:achste Datei\&. .RE .PP Bearbeiten → Suchen\&.\&.\&. (Ctrl+F) .RS 4 Sucht Zeichenfolgen in den Dateinamen und Tags\&. Der Suchen Dialog ist eine Teilmenge des Ersetzen\-Dialogs, welcher unten beschrieben ist\&. .RE .PP Bearbeiten → Ersetzen\&.\&.\&. (Ctrl+R) .RS 4 Ein Dialog wird ge\(:offnet, mit welchem sich Zeichenfolgen in den Dateinamen und Tags suchen und ersetzen lassen\&. Die Suche kann auf bestimmte Elemente eingeschr\(:ankt werden, indem bei Alles selektieren das H\(:akchen entfernt wird und die gew\(:unschten Elemente ausgew\(:ahlt werden\&. Es sind auch Optionen vorhanden, um r\(:uckw\(:arts zu suchen, Gro\(ss\- und Kleinbuchstaben zu unterscheiden und f\(:ur regul\(:are Ausdr\(:ucke\&. .sp Abh\(:angig von der Anzahl Dateien kann die Suche etwas dauern, daher kann sie durch Schlie\(ssen des Dialogs abgebrochen werden\&. .RE .SS "Das Men\(:u Extras" .PP .PP Extras → Dateinamenformat anwenden .RS 4 Wenn Format automatisch anwenden im Konfigurationsdialog beim Dateinamenformat deaktiviert ist, kann man mit diesem Men\(:upunkt die Formatierung auf die Namen der ausgew\(:ahlten Dateien anwenden\&. Diese Funktion kann auch angewendet werden, um zu testen, ob die Dateinamen dem eingestellten Format entsprechen\&. Hierzu sollten alle Dateien gespeichert werden; nach Anwendung des Formates sind dann nur diejenigen Dateien ver\(:andert (in der Dateiliste mit einem Diskettensymbol versehen), welche nicht dem eingestellten Format entsprechen\&. Ungewollte \(:Anderungen k\(:onnen mit Zuletzt gespeicherte Fassung r\(:uckg\(:angig gemacht werden\&. .RE .PP Extras → Tag\-Format anwenden .RS 4 Wenn Format automatisch anwenden im Konfigurationsdialog beim Tag Format deaktiviert ist, kann man mit diesem Men\(:upunkt die Formatierung auf die Tags der ausgew\(:ahlten Dateien anwenden\&. Diese Funktion kann auch angewendet werden, um zu testen, ob die Tags dem eingestellten Format entsprechen\&. Hierzu sollten alle Dateien gespeichert werden; nach Anwendung des Formates sind dann nur diejenigen Dateien ver\(:andert (in der Dateiliste mit einem Diskettensymbol versehen), welche nicht dem eingestellten Format entsprechen\&. Ungewollte \(:Anderungen k\(:onnen mit Zuletzt gespeicherte Fassung r\(:uckg\(:angig gemacht werden\&. .RE .PP Extras → Textkodierung anwenden .RS 4 Setzt die Textkodierung, welche in Einstellungen/Kid3 einrichten\&.\&.\&./Tags/Tag 2 eingestellt ist, f\(:ur alle ausgew\(:ahlten Dateien\&. Wenn UTF8 eingestellt ist, so wird f\(:ur ID3v2\&.3\&.0 Tags UTF16 verwendet, denn dieses Format unterst\(:utzt UTF8 nicht\&. .RE .PP Extras → Ordner umbenennen\&.\&.\&. .RS 4 Dieser Dialog bietet die M\(:oglichkeit, automatisch den aktuellen Ordner gem\(:a\(ss den Tags umzubenennen\&. Verschiedene Formate sind vordefiniert, um Informationen \(:uber Interpret, Album und Jahr in den Ordnernamen zu \(:ubernehmen\&. Es ist auch m\(:oglich, ein eigenes Format zu definieren und die verf\(:ugbaren Formate zu bearbeiten (Knopf Bearbeiten)\&. Die folgenden Codes k\(:onnen verwendet werden, um Werte aus den Tags im Ordnernamen einzusetzen: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %s %{title} Titel (Song) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %a %{artist} Interpret (Artist) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %l %{album} Album .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %c %{comment} Kommentar (Comment) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %y %{year} Jahr (Year) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track} Nummer (St\(:uck, z\&.B\&. 01) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track\&.n} Nummer mit Feldl\(:ange n (z\&.B\&. 001 f\(:ur %{track\&.3}) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %T %{tracknumber} Nummer (St\(:uck, ohne f\(:uhrende Null, z\&.B\&. 1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %g %{genre} Genre .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %{dirname} Ordnername (z\&.B\&. %{year" "}%{dirname} f\(:ugt vorne am bestehenden Ordnernamen die Jahreszahl hinzu) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %{max\-year} Die maximale Jahreszahl, welche f\(:ur diesen Ordner gefunden wurde, es k\(:onnen auch andere Codes als "year" verwendet werden .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %{min\-year} Die minimale Jahreszahl, welche f\(:ur diesen Ordner gefunden wurde .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %{unq\-year} Die einzige Jahreszahl, welche f\(:ur diesen Ordner gefunden wurde, leer falls nicht eindeutig .RE .sp Wenn ein Ordner\-Trennzeichen "/" im Format gefunden wird, werden mehrere Ordner erstellt\&. Will man einen neuen Ordner erstellen statt den aktuellen Ordner umbenennen, so w\(:ahlt man Ordner erstellen statt Ordner umbenennen\&. Die Quelle der Tag\-Information kann zwischen Von Tag 1 und Tag 2, Von Tag 1 und Von Tag 2 ausgew\(:ahlt werden\&. Die voraussichtliche Ordnernamens\(:anderung f\(:ur die erste Datei kann in den Abschnitten Von und Nach des Dialogs gesehen werden\&. .sp Es k\(:onnen auch mehrere Ordner umbenannt werden, indem sie selektiert werden\&. .RE .PP Extras → St\(:ucke nummerieren\&.\&.\&. .RS 4 Falls die St\(:ucknummern in den Tags nicht vorhanden oder falsch sind, so lassen sich mit dieser Funktion die St\(:ucke automatisch aufsteigend nummerieren\&. Im Dialog kann die Startnummer angegeben werden\&. Falls nur ein Teil der St\(:ucke nummeriert werden soll, so sind diese im Voraus auszuw\(:ahlen\&. .sp Wenn Anzahl St\(:ucke markiert ist, wird auch die Anzahl St\(:ucke in den Tags gesetzt\&. .sp Es k\(:onnen auch die St\(:ucke \(:uber mehrere Ordner hinweg nummeriert werden\&. Dazu m\(:ussen die Ordner aufgeklappt und selektiert werden\&. .sp Wenn Z\(:ahler f\(:ur jeden Ordner zur\(:ucksetzen aktiviert ist, wird die Nummerierung bei jedem Ordner mit der Startnummer begonnen falls mehrere Ordner ausgew\(:ahlt sind\&. .sp Der Dialog kann auch dazu benutzt werden, bestehende St\(:ucknummern neu zu formatieren, ohne ihren Wert zu ver\(:andern\&. Dazu muss das H\(:akchen bei der Startnummer entfernt werden\&. Wenn Anzahl St\(:ucke markiert ist, so wird das Total hinzugef\(:ugt\&. Falls es nicht erw\(:unscht ist, die Anzahl St\(:ucke in allen ausgew\(:ahlten Dateien zu setzen, muss auch diese Option deaktiviert werden\&. .RE .PP Extras → Filter\&.\&.\&. .RS 4 Der Filter kann dazu verwendet werden, nur diejenigen Dateien anzeigen, welche gewisse Eigenschaften erf\(:ullen\&. Dies kann dann n\(:utzlich sein, wenn man die Tags oder Dateinamen in einer gr\(:o\(sseren Sammlung bereinigen m\(:ochte, jedoch nur diejenigen Dateien bearbeiten m\(:ochte, welche nicht dem gew\(:unschten Schema entsprechen\&. Der Ausdruck, der bestimmt, welche Dateien angezeigt werden, benutzt dieselben Formatcodes, welche auch beim Dateinamenformat, Importieren und Exportieren verwendet werden\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %s %{title} Titel (Song) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %a %{artist} Interpret (Artist) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %l %{album} Album .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %c %{comment} Kommentar (Comment) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %y %{year} Jahr (Year) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track} Nummer (St\(:uck, z\&.B\&. 01) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track\&.n} Nummer mit Feldl\(:ange n (z\&.B\&. 001 f\(:ur %{track\&.3}) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %T %{tracknumber} Nummer (St\(:uck, ohne f\(:uhrende Null, z\&.B\&. 1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %g %{genre} Genre .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %f %{file} Dateiname (File name) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %p %{filepath} Absoluter Pfadname .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %e %{extension} Dateiendung .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %O %{tag1} Das Format von Tag 1 (ID3v1\&.1 oder leer falls nicht vorhanden) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %o %{tag2} Das Format von Tag 2 (ID3v2\&.3\&.0, ID3v2\&.4\&.0, ID3v2\&.2\&.0, ID3v2\&.2\&.1, Vorbis, APE, MP4, ASF oder leer falls nicht vorhanden) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %b %{bitrate} Bitrate in kbit/s .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %v %{vbr} VBR oder leer (nur f\(:ur ID3v2\&.3 mit id3lib) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %r %{samplerate} Samplerate in Hz .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %m %{mode} Kanalmodus (Stereo oder Joint Stereo) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %h %{channels} Anzahl Kan\(:ale (1 oder 2) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %k %{codec} Codec (z\&.B\&. MPEG 1 Layer 3, MP4, Ogg Vorbis, FLAC, MPC, APE, ASF, AIFF, WAV) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %w %{marked} Markiert, ist 1 wenn die Datei markiert ist (z\&.B\&. weil Felder abgeschnitten wurden oder wegen einer Verletzung des ID3v2 Standards), ansonsten leer .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %1a %1{artist}, \&.\&.\&. Der Pr\(:afix 1 wird benutzt, um Werte von Tag 1 zu erhalten .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %2a %2{artist}, \&.\&.\&. Der Pr\(:afix 2 wird benutzt, um Werte von Tag 2 zu erhalten .RE .sp Diese Codes werden mit dem Wert f\(:ur die Datei ersetzt und die resultierenden Zeichenfolgen k\(:onnen mit folgenden Operatoren verglichen werden: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} s1 equals s2: wahr wenn s1 und s2 gleich sind\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} s1 contains s2: wahr wenn s2 in s1 enthalten ist\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} s matches re: wahr wenn s den regul\(:aren Ausdruck re erf\(:ullt\&. .RE .sp Wahre Ausdr\(:ucke werden durch 1 ersetzt, falsche durch 0\&. Wahre Werte repr\(:asentieren nebst 1 auch true, on und yes, falsche Werte entsprechend 0, false, off und no\&. Diese Wahrheitwerte k\(:onnen durch die logischen Operatoren not, and und or verkn\(:upft werden (die Priorit\(:at ist in dieser Reihenfolge), und mit Klammern gruppiert werden\&. .sp Einige Filterregeln sind bereits vordefiniert und k\(:onnen als Beispiele f\(:ur eigene Ausdr\(:ucke dienen: .PP All .RS 4 Wenn die Dateiliste gefiltert ist \- dies wird mit "[Gefiltert]" in der Titelzeile angezeigt \- und man m\(:ochte wieder alle Dateien anzeigen, kann das Filtern mit diesem Filter r\(:uckg\(:angig gemacht werden\&. Es wird ein leerer Ausdruck verwendet, ein Wahrheitswert wie true h\(:atte aber denselben Effekt\&. .RE .PP Filename Tag Mismatch .RS 4 \fBnot (%{filepath} contains "%{artist} \- %{album}/%{track} %{title}") \fR .sp Testet, ob ein Dateipfad dem Dateinamenformat entspricht\&. Diese Regel wird automatisch angepasst, wenn sich das Dateinamenformat \(:andert\&. .RE .PP No Tag 1 .RS 4 \fB%{tag1} equals "" \fR .sp Es werden nur Dateien ohne Tag 1 angezeigt\&. .RE .PP No Tag 2 .RS 4 \fB%{tag2} equals "" \fR .sp Es werden nur Dateien ohne Tag 2 angezeigt\&. .RE .PP ID3v2\&.3\&.0 Tag .RS 4 \fB%{tag2} equals "ID3v2\&.3\&.0" \fR .sp Es werden nur Dateien mit ID3v2\&.3\&.0 Tag angezeigt\&. .RE .PP ID3v2\&.4\&.0 Tag .RS 4 \fB%{tag2} equals "ID3v2\&.4\&.0" \fR .sp Es werden nur Dateien mit ID3v2\&.4\&.0 Tag angezeigt\&. .RE .PP Tag 1 != Tag 2 .RS 4 \fBnot (%1{title} equals %2{title} and %1{album} equals %2{album} and %1{artist} equals %2{artist} and %1{comment} equals %2{comment} and %1{year} equals %2{year} and %1{track} equals %2{track} and %1{genre} equals %2{genre}) \fR .sp Es werden Dateien mit Unterschieden zwischen Tag 1 und Tag 2 angezeigt\&. .RE .PP Tag 1 == Tag 2 .RS 4 \fB%1{title} equals %2{title} and %1{album} equals %2{album} and %1{artist} equals %2{artist} and %1{comment} equals %2{comment} and %1{year} equals %2{year} and %1{track} equals %2{track} and %1{genre} equals %2{genre} \fR .sp Es werden Dateien mit identischen Tag 1 und Tag 2 angezeigt\&. .RE .PP Incomplete .RS 4 \fB%{title} equals "" or %{artist} equals "" or %{album} equals "" or %{year} equals "" or %{tracknumber} equals "" or %{genre} equals "" \fR .sp Es werden nur Dateien angezeigt, welche leere Standard\-Tag\-Werte haben (Titel, Interpret, Album, Datum, St\(:ucknummer, Genre)\&. .RE .PP No Picture .RS 4 \fB%{picture} equals "" \fR .sp Es werden nur Dateien ohne Bild angezeigt\&. .RE .PP Marked .RS 4 \fBnot (%{marked} equals "") \fR .sp Es werden nur Dateien angezeigt, die markiert sind weil sie den ID3v2 Standard verletzen, weil Felder abgeschnitten wurden oder ein Bild zu gro\(ss ist\&. .RE .PP Custom Filter .RS 4 Dieser Eintrag kann verwendet werden, um einen eigenen Filter hinzuzuf\(:ugen\&. Um beispielsweise nur Dateien anzuzeigen, deren Interpret mit "The" beginnt, ersetzt man "Custom Filter" durch einen Namen wie "The Bands" und dr\(:uckt die Enter Taste\&. Dann f\(:ugt man folgenden Ausdruck in das Eingabefeld ein: .sp \fB%{artist} matches "The\&.*" \fR .sp Gespeichert wird mit Einstellungen speichern\&. Die Dateien werden mit Anwenden gefiltert\&. Alle bearbeiteten Dateien werden im Textfeld angezeigt, mit einem "+" vor solchen, die den Filterausdruck erf\(:ullen, und einem "\-" vor den anderen\&. Wenn das Filtern fertig ist, werden nur noch diejenigen Dateien angezeigt, deren Interpret mit "The" beginnt, und in der Titelzeile wird "[Gefiltert]" angezeigt\&. .RE .RE .PP Extras → ID3v2\&.3 nach ID3v2\&.4 konvertieren .RS 4 Wenn in den ausgew\(:ahlten Dateien ID3v2\&.3 Tags vorhanden sind, so werden sie zu ID3v2\&.4 Tags konvertiert\&. Frames, welche von TagLib nicht unterst\(:utzt sind, werden verworfen\&. Nur Dateien ohne ungesicherte \(:Anderungen werden konvertiert\&. .RE .PP Extras → ID3v2\&.4 nach ID3v2\&.3 konvertieren .RS 4 Wenn in den ausgew\(:ahlten Dateien ID3v2\&.4 Tags vorhanden sind, so werden sie zu ID3v2\&.3 Tags konvertiert\&. Nur Dateien ohne ungesicherte \(:Anderungen werden konvertiert\&. .RE .PP Extras → Wiedergabe .RS 4 Damit \(:offnet sich eine einfache Werkzeugleiste zum Abspielen von Audio\-Dateien\&. Sie enth\(:alt Kn\(:opfe f\(:ur die grundlegenden Operationen (Wiedergabe/Pause, Wiedergabe stoppen, Zur\(:uck, Vorw\(:arts, Schlie\(ssen), Regler f\(:ur Position und Lautst\(:arke und eine Anzeige der aktuellen Position\&. Abgespielt werden die selektierten St\(:ucke bei Mehrfachselektion bzw\&. alle St\(:ucke wenn eine oder keine Datei selektiert ist\&. .RE .SS "Das Men\(:u Einstellungen" .PP .PP Einstellungen → Werkzeugleiste anzeigen .RS 4 Schaltet die Anzeige der Werkzeugleiste ein und aus\&. .RE .PP Einstellungen → Statusleiste anzeigen .RS 4 Schaltet die Anzeige der Statusleiste, welche l\(:angere Aktionen wie \(:Offnen und Speichern eines Ordners anzeigt, ein und aus\&. .RE .PP Einstellungen → Bild anzeigen .RS 4 Schaltet die Anzeige des Cover\-Bildes ein und aus\&. .RE .PP Einstellungen → Tags automatisch ausblenden .RS 4 Wenn diese Option aktiv ist, werden leere Tags automatisch ausgeblendet\&. Manuell lassen sich die Datei, Tag 1 und Tag 2 Sektionen durch Druck auf die entsprechenden \- bzw\&. + Schaltfl\(:achen zu\- und aufklappen\&. .RE .PP Einstellungen → Kurzbefehle festlegen\&.\&.\&. .RS 4 \(:Offnet einen Dialog, um den meisten Programm\-Funktionen ein Tastatur\-K\(:urzel zuzuordnen\&. Es gibt sogar einige Funktionen ohne entsprechenden Men\(:upunkt oder Knopf, z\&.B\&. n\(:achste Datei, vorangehende Datei, alles ausw\(:ahlen\&. .RE .PP Einstellungen → Kid3 einrichten\&.\&.\&. .RS 4 \(:Offnet den Konfigurationsdialog, der aus verschiedenen Seiten besteht, mit Optionen f\(:ur Tags, Dateien, Benutzerbefehle und Netzwerk\&. .sp Optionen f\(:ur Tags sind auf der Seite Tags zu finden, welche ihrerseits in vier Reiter unterteilt ist f\(:ur Tag 1, Tag 2, Tag 3 und Alle Tags\&. .sp Wenn Markiere abgeschnittene Felder aktiv ist, werden abgeschnittene ID3v1\&.1 Felder rot markiert\&. Die Textfelder in ID3v1\&.1 Tags haben blo\(ss 30 Zeichen, der Kommentar nur 28 Zeichen\&. Auch Genre und Nummer sind Beschr\(:ankungen unterworfen, so dass Felder gek\(:urzt werden k\(:onnen, wenn sie importiert oder von ID3v2 konvertiert werden\&. Abgeschnittene Felder und ihre Datei werden rot markiert; die Markierung wird entfernt, nachdem das Feld editiert worden ist\&. .sp Mit Text Codierung f\(:ur ID3v1 kann die Codierung, welche f\(:ur ID3v1 Tags verwendet wird, eingestellt werden\&. Standardm\(:a\(ssig wird hier ISO\-8859\-1 erwartet, daher wird empfohlen, diese Einstellung so zu lassen\&. Da jedoch Tags mit anderer Codierung anzutreffen sind, kann hier eine andere Codierung gew\(:ahlt werden, so dass dann die ID3v1 Tags nach ID3v2 transferiert werden k\(:onnen, welches Unicode Zeichen unterst\(:utzt\&. .sp Das Markierungsfeld Format Nummer/Anzahl St\(:ucke benutzen bewirkt, dass im St\(:ucknummer\-Feld bei den ID3v2 Tags nicht blo\(ss die St\(:ucknummer gespeichert wird, sondern auch die Gesamtzahl der St\(:ucke im Ordner\&. .sp Wenn Genre als Text statt als Nummer aktiviert ist, werden alle Genres als Text gespeichert, auch wenn ein ID3v1\-Code f\(:ur das Genre existiert\&. Ohne diese Einstellungen werden solche Genres als die Nummer des entsprechenden ID3v1\-Codes gespeichert (in Klammern f\(:ur ID3v2\&.3)\&. Das Genre Metal wird also abh\(:angig von dieser Option entweder als "Metal" oder als "(9)" gespeichert\&. Genres, f\(:ur welche kein ID3v1\-Code existiert, werden immer als Text gespeichert\&. Der Sinn dieser Option ist es, die Kompatibilit\(:at mit Ger\(:aten zu verbessern, welche die Codes nicht korrekt interpretieren\&. .sp Wenn WAV\-Dateien mit id3 Block in Kleinbuchstaben aktiviert ist, wird "id3 " statt "ID3 " als Name f\(:ur die RIFF Chunks verwendet, in welchen ID3v2 Tags f\(:ur WAV\-Dateien gespeichert werden\&. Normalerweise akzeptieren Kid3 und andere Programme, welche TagLib verwenden, beim Lesen von WAV\-Dateien sowohl die Variante mit Kleinbuchstaben als auch die Variante mit Gro\(ssbuchstaben, geschrieben wird aber immer "ID3 "\&. Weil Applikationen existieren, welche nur "id3 " akzeptieren (z\&.B\&. JRiver Media Center und foobar2000), k\(:onnen mit dieser Einstellung Tags geschrieben werden, welche auch von solchen Applikationen gelesen werden k\(:onnen\&. .sp Wenn Standardverletzungen markieren aktiviert ist, werden ID3v2 Felder, welche den Standard verletzen, rot markiert\&. Details \(:uber die Verletzung werden in Tooltips angezeigt: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Darf nur einmal vorkommen .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Neue Zeile ist verboten .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Wagenr\(:ucklauf ist verboten .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Besitzer darf nicht leer sein .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Muss numerisch sein .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Muss numerisch sein oder Nummer/Anzahl .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Format ist DDMM .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Format ist HHMM .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Format ist YYYY .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Muss mit einem Jahr und einem Leerzeichen beginnen .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Muss ISO\-8601 Zeitstempel sein .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Muss eine Tonart sein, 3 Zeichen, A\-G, b, #, m, o .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Muss ein ISO 639\-2 Sprachcode sein, 3 Kleinbuchstaben .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Muss eine ISRC Kennung sein, 12 Zeichen .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Muss eine Liste von Zeichenfolgen sein, getrennt durch \*(Aq|\*(Aq .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Hat \(:ubersch\(:ussige Leerzeichen .RE .sp Die ID3\-Standard\-Dokumente sind online verf\(:ugbar: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \m[blue]\fBID3 tag version 2\&.3\&.0\fR\m[]\&\s-2\u[10]\d\s+2 .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \m[blue]\fBID3 tag version 2\&.4\&.0 \- Main Structure\fR\m[]\&\s-2\u[11]\d\s+2 .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \m[blue]\fBID3 tag version 2\&.4\&.0 \- Native Frames\fR\m[]\&\s-2\u[5]\d\s+2 .RE .sp Text Codierung bestimmt die Codierung von ID3v2 Elementen und kann auf ISO\-8859\-1, UTF16 oder UTF8 gesetzt werden\&. UTF8 ist f\(:ur ID3v2\&.3\&.0 nicht g\(:ultig; wenn dieser Wert gesetzt ist, wird stattdessen UTF16 verwendet\&. F\(:ur ID3v2\&.4\&.0 sind alle drei Codierungen m\(:oglich\&. .sp Version f\(:ur neue Tags legt fest, ob neue ID3v2 Tags mit der Version 2\&.3\&.0 oder 2\&.4\&.0 erzeugt werden\&. .sp Anzahl der Stellen in St\(:ucknummer bestimmt die Zahl der Dezimalstellen in den St\(:ucknummer\-Feldern\&. Die Nummern werden mit f\(:uhrenden Nullen auf die eingestellte Anzahl Stellen erweitert\&. Beispielsweise wird mit dem Wert 2 die St\(:ucknummer 5 als "05" gesetzt\&. .sp Das Auswahlfeld Name des Kommentar\-Feldes ist f\(:ur Ogg/Vorbis und FLAC\-Dateien relevant und bestimmt den Namen des Feldes, welches f\(:ur Kommentare verwendet wird\&. Hier scheinen verschiedene Anwendungen unterschiedliche Namen zu verwenden, "COMMENT" wird beispielsweise von XMMS benutzt, w\(:ahrend Amarok "DESCRIPTION" verwendet\&. .sp Das Format von Bildern in Ogg/Vorbis\-Dateien wird bestimmt durch Name des Bild\-Feldes und kann METADATA_BLOCK_PICTURE oder COVERART sein\&. Das erstere ist der offizielle Standard und benutzt dasselbe Format wie Bilder in FLAC\-Dateien\&. Bei COVERART handelt es sich um eine fr\(:uhere, inoffizielle Methode, um Bilder in Vorbis\-Tags zu codieren\&. Manche Player benutzen dieses Feld\&. .sp Wenn das H\(:akchen bei Markieren wenn gr\(:o\(sser als gesetzt ist, so werden Dateien mit Bildern, welche die angegebene Gr\(:o\(sse \(:uberschreiten, rot markiert\&. Damit k\(:onnen Dateien mit \(:ubergro\(ssen Bildern, welche von gewissen Applikationen und Playern nicht akzeptiert werden, aufgesp\(:urt werden\&. Der vorgegebene Limit ist 131072 Bytes (128 KB)\&. .sp Eigene Genres kann zur Definition von Genres benutzt werden, welche nicht in der Standard\-Liste enthalten sind, so z\&.B\&. "Gothic Metal"\&. Solche Genres sind dann im Genre Auswahlfeld von Tag 2 verf\(:ugbar\&. F\(:ur ID3v1\&.1 Tags k\(:onnen nur die vordefinierten Genres verwendet werden\&. .sp Die Liste mit den eigenen Genres kann auch dazu verwendet werden, die Anzahl der im Genre Auswahlfeld angebotenen Eintr\(:age auf diejenigen zu reduzieren, welche man braucht\&. Falls die Musiksammlung haupts\(:achlich aus Metal, Gothic Metal, Ancient und Hard Rock Nummern besteht, so kann man diese Genres eingeben und Nur eigene Genres anzeigen markieren\&. Das Tag 2 Genre Auswahlfeld enth\(:alt dann nur noch diese vier Genres, und man braucht nicht mehr die ganze lange Liste nach ihnen zu durchsuchen\&. Bei dieser Beispielkonfiguration sind im Tag 1 Genre Auswahlfeld nur noch Metal und Hard Rock verf\(:ugbar, denn diese zwei Eintr\(:age sind Standard Genres\&. Wenn Nur eigene Genres anzeigen nicht markiert ist, so werden die eigenen Genres am Ende der Auswahlliste aufgef\(:uhrt\&. .sp In Eigene Elemente k\(:onnen bis zu acht Namen definiert werden, welche dann wie die vereinheitlichten Elemente verwendet werden k\(:onnen, z\&.B\&. in den Schnellzugriff\-Elementen\&. .sp Schnellzugriff\-Elemente bestimmt, welche Frametypen immer bei Tag 2 angezeigt werden\&. Solche Frames k\(:onnen dann hinzugef\(:ugt werden, ohne zuerst den Hinzuf\(:ugen Knopf zu dr\(:ucken\&. Die Reihenfolge dieser Schnellzugriff\-Elemente kann durch Ziehen und Loslassen der Elemente ver\(:andert werden\&. .sp Das Auswahlfeld Name des St\(:ucknummer\-Feldes ist f\(:ur RIFF INFO relevant und bestimmt den Namen des Feldes, welches f\(:ur St\(:ucknummern verwendet wird\&. St\(:ucknummern sind im RIFF Standard nicht spezifiziert, einige Anwendungen verwenden "ITRK", andere "IPRT"\&. .sp Tag Format enth\(:alt Einstellungen f\(:ur das Format der Tags\&. Wenn Format automatisch anwenden aktiviert ist, wird die Eingabe w\(:ahrend dem Editieren automatisch formatiert\&. \(:Uberpr\(:ufung aktiviert die Validation in Eingabefeldern mit St\(:ucknummer/Total\- und Datum/Zeit\-Werten\&. Gro\(ss/Kleinschreibung kann auf Keine \(:Anderungen, Alles Kleinbuchstaben, Alles Gro\(ssbuchstaben, Den ersten Buchstaben gro\(ss oder Alle ersten Buchstaben gro\(ss gesetzt werden\&. Um die Eigenheiten einer Sprache bei der Konversion zwischen Klein\- und Gro\(ssbuchstaben zu ber\(:ucksichtigen, kann eine Sprache in der darunterliegenden Auswahlliste gew\(:ahlt werden\&. Die Zeichen ersetzen Liste kann mit beliebigen Zuordnungen von Zeichenfolgen gef\(:ullt werden\&. Eine neue Zuordnung kann hinzugef\(:ugt werden, indem in der Von Zelle einer Zeile der zu ersetzende Text eingegeben wird und dann in der Nach Spalte der Ersetzungstext\&. Wenn der zu ersetzende Text mit einem Schr\(:agstrich ("/") beginnt und endet, so wird ein regul\(:arer Ausdruck verwendet\&. Enth\(:alt der regul\(:are Ausdruck Erfassungsgruppen, so werden \e1, \e2, \&.\&.\&. in Nach mit der entsprechend erfassten Zeichenfolge ersetzt\&. Zum L\(:oschen einer Zuordnung wird die Von Zelle auf einen leeren Wert gesetzt (z\&.B\&. indem man zuerst einen Leerschlag eingibt und diesen dann wieder l\(:oscht)\&. Einf\(:ugen und L\(:oschen von Zeilen ist auch \(:uber das Kontext\-Men\(:u m\(:oglich, welches erscheint, wenn man die rechte Maustaste dr\(:uckt\&. Ersetzungen werden nur durchgef\(:uhrt, wenn das Zeichen ersetzen Markierungsfeld aktiviert ist\&. .sp Die Tabelle in Bewertung enth\(:alt die Zuordnungen zwischen der Anzahl Sterne und den effektiv in den Tags gespeicherten Werten\&. Die Frames mit Bewertungsinformationen sind in der Zeile Bewertung der Frame\-Liste aufgef\(:uhrt\&. In diesen Frames kann eine Bewertung mit 1 bis 5 Sternen gesetzt werden\&. Verschiedene Tag\-Formate und unterschiedliche Applikationen benutzen unterschiedliche Werte um die Anzahl Sterne im Tag zu speichern\&. Um die korrekte Anzahl Sterne darzustellen schaut Kid3 in dieser Tabelle nach, und zwar nach einem Schl\(:ussel aus dem Frame\-Namen, z\&.B\&. "RATING" f\(:ur Vorbis\-Tags oder "IRTD" f\(:ur RIFF INFO\&. F\(:ur ID3v2\-Tags wird als Schl\(:ussel zur Frame\-ID "POPM" noch der Wert des "Email"\-Feldes hinzugef\(:ugt, getrennt durch einen Punkt\&. Folglich k\(:onnen f\(:ur ID3v2 unterschiedliche Zuordnungen verwendet werden, z\&.B\&. "POPM\&.Windows Media Player 9 Series" f\(:ur die Werte, welche beim Windows Media Player und Explorer verwendet werden, oder blo\(ss "POPM" f\(:ur POPM\-Frames mit leerem "Email"\-Feld\&. Da mehrere Eintr\(:age f\(:ur "POPM" existieren k\(:onnen, ist deren Reihenfolge wichtig\&. Wenn Kid3 ein neues POPM\-Frame hinzuf\(:ugt, wird der erste "POPM"\-Eintrag benutzt, um den Wert des "Email"\-Feldes zu bestimmen\&. Dieser Wert entscheidet dann \(:uber die Zuordnung der Werte zur Anzahl Sterne\&. Der erste Eintrag wird auch benutzt, wenn kein passender Schl\(:ussel gefunden wurde, stellt also den Standardwert dar\&. .sp Nebst der Spalte Name f\(:ur die Schl\(:ussel gibt es noch die Spalten 1 bis 5 f\(:ur die Werte, welche gespeichert werden, wenn die entsprechende Anzahl Sterne gesetzt wird\&. Andersherum werden diese Werte dazu benutzt um zu bestimmen, wie viele Sterne f\(:ur einen im Tag gespeicherten Wert dargestellt werden sollen\&. Der Eintrag in der Tabelle unten enth\(:alt beispielsweise die Werte 1, 64, 128, 196 und 255\&. Die Schwellwerte f\(:ur die anzuzeigende Anzahl Sterne liegen dazwischen und sind so gew\(:ahlt, dass sie kompatibel mit dem Windows Explorer sind\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .B Tabelle 1. Eintrag in Bewertungs\-Tabelle .TS allbox tab(:); lB lB lB lB lB lB. T{ Name T}:T{ 1 T}:T{ 2 T}:T{ 3 T}:T{ 4 T}:T{ 5 T} .T& l l l l l l l l l l l l. T{ POPM T}:T{ 1 T}:T{ 64 T}:T{ 128 T}:T{ 196 T}:T{ 255 T} T{ Bereich T}:T{ 1\-31 T}:T{ 32\-95 T}:T{ 96\-159 T}:T{ 160\-223 T}:T{ 224\-255 T} .TE .sp 1 Auf der Seite Dateien bestimmt das Markierungsfeld Zuletzt ge\(:offnete Dateien laden, ob Kid3 beim n\(:achsten Start wieder die zuletzt gew\(:ahlte Datei \(:offnet und selektiert\&. Mit Datei\-Zeitstempel nicht ver\(:andern kann eingestellt werden, dass die Modifikationszeit der Datei nicht ver\(:andert wird\&. Dateiname f\(:ur Cover setzt den Namen, welcher vorgeschlagen wird, wenn ein eingebettetes Bild als Datei exportiert wird\&. Mit Textkodierung (Export, St\(:uckliste) l\(:asst sich die Codierung einstellen, welche beim Schreiben von Dateien verwendet wird\&. Die Voreinstellung System kann ver\(:andert werden wenn beispielsweise St\(:ucklisten auf einem anderen Ger\(:at verwendet werden sollen\&. .sp Wenn \(:Anderungen markieren aktiviert ist, werden ver\(:anderte Felder markiert, indem der Hintergrund des Namens grau gesetzt wird\&. .sp Der Abschnitt Dateiliste bestimmt, welche Dateien in der Dateiliste angezeigt werden\&. Mit einem Filter k\(:onnen die in dieser Liste angezeigten Elemente auf Dateien mit unterst\(:utzter Dateiendung eingeschr\(:ankt werden\&. Um explizit anzugeben, welche Ordner in der Dateiliste erscheinen sollen oder bestimmte Ordner zu unterdr\(:ucken, k\(:onnen die Felder Ordner einschlie\(ssen und Ordner ausschlie\(ssen verwendet werden\&. Sie k\(:onnen Dateinamen\-Platzhalter enthalten, beispielsweise */Musik/* um nur den Musik\-Ordner anzuzeigen, oder */iTunes/* um den iTunes\-Ordner auszublenden\&. Wenn mehrere solche Ausdr\(:ucke verwendet werden, so k\(:onnen sie durch Leerzeichen oder Strichpunkte getrennt werden\&. .sp Die Kn\(:opfe Dateiname von Tag und Tag von Dateiname im Abschnitt Format \(:offnen Dialoge, um die Formate zu bearbeiten, welche in den Format Auswahlfeldern (mit Pfeilen rauf und runter) des Abschnittes Datei im Hauptfenster verf\(:ugbar sind\&. .sp \(:Uber den Knopf St\(:uckliste k\(:onnen die Dateinamen\-Formate bearbeitet werden, welche im Dialog St\(:uckliste erstellen verf\(:ugbar sind\&. .sp Dateinamen Format enth\(:alt Einstellungen f\(:ur das Format der Dateinamen\&. Dabei sind die selben Optionen wie bei Tag Format m\(:oglich\&. .sp Zus\(:atzlich kann die Maximale L\(:ange f\(:ur Dateinamen gesetzt werden\&. Die meisten modernen Dateisysteme haben eine Begrenzung auf 255 Zeichen, aber wenn man die Dateien auf CD brennen m\(:ochte, sollte man die L\(:ange auf 64 Zeichen begrenzen\&. Wenn F\(:ur Wiedergabelisten und Ordnernamen verwenden aktiviert ist, dann wird das Dateinamenformat auch beim Erzeugen von Wiedergabelisten und beim Umbenennen von Ordnern verwendet\&. .sp Die Seite Benutzerbefehle enth\(:alt eine Tabelle mit Befehlen, welche \(:uber das Kontext Men\(:u der Dateiliste ausgew\(:ahlt werden k\(:onnen\&. Bei kritischen Operationen, beispielsweise dem L\(:oschen von Dateien, empfiehlt es sich, Nachfragen zu markieren, damit vor dem Ausf\(:uhren des Befehls eine Best\(:atigung verlangt wird\&. Ausgabe kann markiert werden, um die Ausgabe von Konsolen\-Applikationen zu sehen (Standard und Fehler\-Ausgabe)\&. Name ist der Text, welcher im Kontext Men\(:u dargestellt wird\&. Befehl schlie\(sslich ist die auszuf\(:uhrende Kommandozeile\&. Argumente k\(:onnen mit den folgenden Codes \(:ubergeben werden: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %F %{files} Dateipfad (eine Liste wenn mehrere Dateien selektiert sind) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %f %{file} Pfad einer einzelnen Datei .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %uF %{urls} URLs (eine Liste wenn mehrere Dateien selektiert sind) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %uf %{url} URL zu einer einzelnen Datei .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %d %{directory} Ordner .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %s %{title} Titel (Song) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %a %{artist} Interpret (Artist) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %l %{album} Album .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %c %{comment} Kommentar (Comment) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %y %{year} Jahr (Year) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track} Nummer (St\(:uck, z\&.B\&. 01) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %t %{track\&.n} Nummer mit Feldl\(:ange n (z\&.B\&. 001 f\(:ur %{track\&.3}) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %T %{tracknumber} Nummer (St\(:uck, ohne f\(:uhrende Null, z\&.B\&. 1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %g %{genre} Genre .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %b %{browser} Kommando zum Starten des Web Browsers .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} %q %{qmlpath} Basisordner der mitgelieferten QML\-Dateien .RE .sp Der Code \fB@separator\fR kann verwendet werden, um eine Trennlinie in das Benutzerbefehle\-Kontextmen\(:u einzuf\(:ugen\&. Men\(:upunkte k\(:onnen in Untermen\(:us gruppiert werden, indem man sie mit \fB@beginmenu\fR und \fB@endmenu\fR Befehlen umgibt\&. Der Name des Untermen\(:us wird durch die Spalte Name des \fB@beginmenu\fR Befehls definiert\&. .sp Zum Ausf\(:uhren von QML Skripten wird als Befehl \fB@qml\fR verwendet\&. Danach wird der Pfad zum QML\-Skript angegeben\&. Die mitgelieferten Skripte liegen im Ordner %{qmlpath}/script/ (unter Linux typischerweise /usr/share/kid3/qml/script/, bei Windows in qml/script/ innerhalb des Installationsordners, und bei macOS im App\-Ordner kid3\&.app/Contents/Resources/qml/script/)\&. Eigene Skripte k\(:onnen aber auch in einem beliebigen anderen Ordner gespeichert werden\&. Wenn der QML\-Code grafische Elemente innerhalb eines Fensters \(:offnet, so muss \fB@qmlview\fR anstelle von \fB@qml\fR verwendet werden\&. Weitere Parameter werden dem QML\-Skript \(:ubergeben und sind dort \(:uber die Funktion \fBgetArguments()\fR verf\(:ugbar\&. Eine \(:Ubersicht einiger in QML verf\(:ugbarer Funktionen und Eigenschaften findet sich im Anhang QML Schnittstelle\&. .sp Das Kommando, welches mit %{browser} eingef\(:ugt werden kann, wird oberhalb der Tabelle im Eingabefeld Web Browser definiert\&. Damit lassen sich leicht Webseiten mit Informationen zu den Audiodateien aufrufen\&. Zum Beispiel startet .sp .if n \{\ .RS 4 .\} .nf \fB%{browser} http://lyricwiki\&.org/%u{artist}:%u{title}\fR .fi .if n \{\ .RE .\} .sp eine Anfrage in \m[blue]\fBLyricWiki\fR\m[]\&\s-2\u[12]\d\s+2 mit Interpret und Titel\&. Das "u" in %u{artist} und %u{title} bewirkt, dass Interpret %{artist} und Titel %{title} URL\-codiert werden\&. In gleicher Weise lassen sich auch leicht andere Abfragen definieren, z\&.B\&. eine Bildsuche bei \m[blue]\fBGoogle\fR\m[]\&\s-2\u[13]\d\s+2: .sp .if n \{\ .RS 4 .\} .nf \fB%{browser} http://images\&.google\&.com/images?q=%u{artist}%20%u{album}\fR .fi .if n \{\ .RE .\} .sp Um dem Tag 2 Album Cover Bilder hinzuzuf\(:ugen, kann man mit den oben beschriebenen Benutzerbefehlen \(:uber Google Images oder Amazon nach Bildern suchen\&. Die Bilder k\(:onnen mit "Drag\*(Aqn\*(AqDrop" hinzugef\(:ugt werden\&. Bilder k\(:onnen auch mit Hinzuf\(:ugen eines Bild Elementes und Importieren einer Datei oder Einf\(:ugen aus der Zwischenablage in ein Tag gebracht werden\&. Unterst\(:utzt sind Bilder f\(:ur ID3v2, MP4, FLAC, Ogg und ASF Tags\&. .sp Zum L\(:oschen und Hinzuf\(:ugen von Eintr\(:agen steht in der Tabelle ein Kontext Men\(:u zur Verf\(:ugung\&. .sp Die Netzwerk Seite enth\(:alt blo\(ss ein Textfeld f\(:ur die Adresse des Netzwerk Proxys und optional der Portnummer, abgetrennt durch einen Doppelpunkt\&. Dieser Proxy wird f\(:ur den Import von einem Internet Server verwendet, wenn das K\(:astchen davor markiert ist\&. .sp Die verf\(:ugbaren Plugins k\(:onnen in der Seite Erweiterungen ein\- bzw\&. ausgeschaltet werden\&. Die Plugins sind in zwei Listen unterteilt\&. Metadaten Plugins & Priorit\(:at enth\(:alt Plugins, welche Audio\-Datei\-Formate unterst\(:utzen\&. Die Reihenfolge der Eintr\(:age ist entscheidend, denn sie werden der Reihe nach durchprobiert\&. Gewisse Formate werden von mehreren Plugins unterst\(:utzt, daher werden Dateien durch das erste Plugin, welches sie unterst\(:utzt, ge\(:offnet\&. TaglibMetadata unterst\(:utzt die meisten Formate; wenn es zuoberst in der Liste ist, wird es die meisten Dateien \(:offnen\&. Um ein anderes Plugin zu verwenden, muss es vor TaglibMetadata in der Liste stehen\&. Details \(:uber die Metadaten Plugins und Gr\(:unde, warum man sie statt TagLib verwenden m\(:ochte, folgen\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Id3libMetadata: Benutzt \m[blue]\fBid3lib\fR\m[]\&\s-2\u[14]\d\s+2 f\(:ur ID3v1\&.1 und ID3v2\&.3 Tags in MP3, MP2 und AAC Dateien; unterst\(:utzt einige Frame\-Typen mehr als TagLib\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} OggFlacMetadata: Benutzt \m[blue]\fBlibogg\fR\m[]\&\s-2\u[15]\d\s+2, \m[blue]\fBlibvorbis und libvorbisfile\fR\m[]\&\s-2\u[16]\d\s+2 f\(:ur Ogg Dateien und zus\(:atzlich \m[blue]\fBlibFLAC++ und libFLAC\fR\m[]\&\s-2\u[17]\d\s+2 f\(:ur FLAC Dateien\&. Dies sind die offiziellen Bibliotheken dieser Formate\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} TaglibMetadata: Benutzt \m[blue]\fBTagLib\fR\m[]\&\s-2\u[18]\d\s+2, welche viele Datei\-Formate unterst\(:utzt und f\(:ur alle Audio\-Dateien verwendet werden kann, welche Kid3 unterst\(:utzt\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Mp4v2Metadata: \m[blue]\fBmp4v2\fR\m[]\&\s-2\u[19]\d\s+2 wurde urspr\(:unglich von Kid3 f\(:ur M4A\-Dateien verwendet\&. Kann bei Problemen mit der M4A\-Unterst\(:utzung von TagLib verwendet werden\&. .RE .sp Verf\(:ugbare Erweiterungen listet die verbleibenden Plugins auf\&. Ihre Reihenfolge ist unwichtig, sie k\(:onnen \(:uber die K\(:astchen links ein\- oder ausgeschaltet werden\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} AmazonImport: Benutzt f\(:ur die Importieren von Amazon\&.\&.\&. Funktion\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} DiscogsImport: Benutzt f\(:ur die Importieren von Discogs\&.\&.\&. Funktion\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} FreedbImport: Benutzt f\(:ur die Funktion Importieren von gnudb\&.org\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} MusicBrainzImport: Benutzt f\(:ur die Importieren von MusicBrainz\-Album\&.\&.\&. Funktion\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} AcoustidImport: Benutzt f\(:ur die Importieren von MusicBrainz\-Fingerprint\&.\&.\&. Funktion, welche von den Bibliotheken \m[blue]\fBChromaprint\fR\m[]\&\s-2\u[20]\d\s+2 und \m[blue]\fBlibav\fR\m[]\&\s-2\u[21]\d\s+2 abh\(:angig ist\&. .RE .sp Deaktivierte Erweiterungen werden nicht geladen, damit l\(:asst sich also der Speicherverbrauch und die Ladezeit optimieren\&. Die Einstellungen auf dieser Seite werden aber erst nach einem Neustart von Kid3 aktiv\&. .RE .SS "Das Men\(:u Hilfe" .PP .PP Hilfe → Handbuch zu Kid3 .RS 4 \(:Offnet dieses Handbuch\&. .RE .PP Hilfe → \(:Uber Kid3 .RS 4 Zeigt eine kurze Information \(:uber Kid3 an\&. .RE .SH "KID3\-CLI" .SS "Befehle" .PP \fBkid3\-cli\fR bietet eine Kommandozeile f\(:ur Kid3\&. Wenn ein Ordnerpfad als Parameter verwendet wird, so wird der Ordner ge\(:offnet\&. Bei einem oder mehreren Dateipfaden wird der \(:ubergeordnete Ordner ge\(:offnet, und die Dateien werden ausgew\(:ahlt\&. Befehle werden dann auf diese Dateien angewendet\&. Befehle werden mit \fB\-c\fR Optionen angegeben, wenn mehrere vorhanden sind, so werden sie der Reihe nach ausgef\(:uhrt\&. Falls Dateien durch die Befehle ver\(:andert werden, so werden sie am Ende gespeichert\&. Wenn keine Befehlsoptionen vorhanden sind, so startet \fBkid3\-cli\fR im interaktiven Modus\&. Dort k\(:onnen Befehle eingegeben werden, welche auf die ausgew\(:ahlten Dateien angewendet werden\&. Die folgenden Abschnitte beschreiben alle verf\(:ugbaren Befehle\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBHilfe\fR .RS 4 .HP \w'\fBhelp\fR\ 'u \fBhelp\fR [\fIBEFEHLSNAME\fR] .PP Zeigt Hilfe \(:uber die Parameter von \fIBEFEHLSNAME\fR oder \(:uber alle Befehle falls kein Befehlsname angegeben wird\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZeit\(:uberschreitung\fR .RS 4 .HP \w'\fBtimeout\fR\ 'u \fBtimeout\fR [default | off | \fIZEIT\fR] .PP \(:Uberschreibt den Wert f\(:ur die maximal erlaubte Ausf\(:uhrungszeit der Befehle\&. Die Befehle werden nach einer spezifischen Zeit abgebrochen, nach 10 Sekunden bei \fBls\fR und \fBalbumart\fR, 60 Sekunden bei \fBautoimport\fR und \fBfilter\fR und 3 Sekunden f\(:ur alle anderen Befehle\&. Wenn eine gro\(sse Anzahl von Dateien bearbeitet wird, so k\(:onnen diese Maximalzeiten zu restriktiv sein\&. Daher kann mit diesem Befehl der Timeout f\(:ur alle Befehle auf \fIZEIT\fR ms gesetzt werden, g\(:anzlich abgeschaltet werden oder auf den Voreinstellungen belassen werden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAnwendung beenden\fR .RS 4 .HP \w'\fBexit\fR\ 'u \fBexit\fR [force] .PP Beendet die Anwendung\&. Falls ver\(:anderte Dateien existieren, so muss der Parameter \fIforce\fR mitgegeben werden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOrdner wechseln\fR .RS 4 .HP \w'\fBcd\fR\ 'u \fBcd\fR [\fIORDNER\fR] .PP Wenn kein \fIOrdner\fR angegeben wird, so wird in den Benutzerordner gewechselt, sonst in den angegebenen Ordner\&. Bei einem oder mehreren Dateipfaden wird der \(:ubergeordnete Ordner ge\(:offnet, und die Dateien werden ausgew\(:ahlt\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAktuellen Ordner ausgeben\fR .RS 4 .HP \w'\fBpwd\fR\ 'u \fBpwd\fR .PP Gibt den Pfad des aktuellen Ordners aus\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOrdnerliste\fR .RS 4 .HP \w'\fBls\fR\ 'u \fBls\fR .PP Zeigt den Inhalt des aktuellen Ordners an\&. Dies entspricht der Dateiliste im Kid3 GUI\&. F\(:unf Zeichen auf der linken Seite des Dateinamens zeigen Zustandsinformationen an\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} > Datei ist ausgew\(:ahlt\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} * Datei ist ver\(:andert\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 1 Datei hat ein Tag 1, sonst wird \*(Aq\-\*(Aq angezeigt\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 2 Datei hat ein Tag 2, sonst wird \*(Aq\-\*(Aq angezeigt\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 3 Datei hat ein Tag 3, sonst wird \*(Aq\-\*(Aq angezeigt\&. .RE .sp .if n \{\ .RS 4 .\} .nf kid3\-cli> \fBls\fR 1\-\- 01 Intro\&.mp3 > 12\- 02 We Only Got This One\&.mp3 *1\-\- 03 Outro\&.mp3 .fi .if n \{\ .RE .\} .PP In diesem Beispiel haben alle Dateien ein Tag 1, die zweite Datei hat auch ein Tag 2 und ist ausgew\(:ahlt\&. Die dritte Datei ist ver\(:andert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBVer\(:anderte Dateien speichern\fR .RS 4 .HP \w'\fBsave\fR\ 'u \fBsave\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDatei w\(:ahlen\fR .RS 4 .HP \w'\fBselect\fR\ 'u \fBselect\fR [all | none | first | previous | next | \fIDATEI\fR...] .PP Alle Dateien werden mit \fBselect all\fR ausgew\(:ahlt, mit \fBselect none\fR wird die Selektion aufgehoben\&. Um die Dateien des aktuellen Ordners zu traversieren, wird mit \fBselect first\fR gestartet, vorw\(:arts geht es mit \fBselect next\fR und r\(:uckw\(:arts mit \fBselect previous\fR\&. Dateien k\(:onnen \(:uber ihren Namen zur Auswahl hinzugef\(:ugt werden\&. Wildcards sind m\(:oglich, so werden mit \fBselect *\&.mp3\fR alle MP3\-Dateien im aktuellen Ordner ausgew\(:ahlt\&. .sp .if n \{\ .RS 4 .\} .nf kid3\-cli> \fBselect first\fR kid3\-cli> \fBls\fR > 1\-\- 01 Intro\&.mp3 12\- 02 We Only Got This One\&.mp3 *1\-\- 03 Outro\&.mp3 kid3\-cli> \fBselect next\fR kid3\-cli> \fBls\fR 1\-\- 01 Intro\&.mp3 > 12\- 02 We Only Got This One\&.mp3 *1\-\- 03 Outro\&.mp3 kid3\-cli> \fBselect *\&.mp3\fR kid3\-cli> \fBls\fR > 1\-\- 01 Intro\&.mp3 > 12\- 02 We Only Got This One\&.mp3 >*1\-\- 03 Outro\&.mp3 .fi .if n \{\ .RE .\} .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag ausw\(:ahlen\fR .RS 4 .HP \w'\fBtag\fR\ 'u \fBtag\fR [\fITAGNUMMERN\fR] .PP Viele Befehle haben einen optionalen \fITAGNUMMERN\fR Parameter, welcher festlegt, ob der Befehl auf Tag 1, 2 oder 3 wirkt\&. Wenn dieser Parameter weggelassen wird, so werden die standardm\(:a\(ssigen Tagnummern verwendet, welche mit dem Befehl \fBtag\fR festgelegt werden k\(:onnen\&. Voreingestellt ist ein Wert von 12, was bedeutet, dass Informationen vom Tag 2 geholt werden, falls es vorhanden ist, sonst vom Tag 1\&. \(:Anderungen werden am Tag 2 durchgef\(:uhrt\&. Die \fB\fITAGNUMMERN\fR\fR k\(:onnen auf \fB1\fR, \fB2\fR oder \fB3\fR gesetzt werden, damit nur das entsprechende Tag verwendet wird\&. Wird kein Parameter angegeben, so wird die momentane Einstellung angezeigt\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag-Element holen\fR .RS 4 .HP \w'\fBget\fR\ 'u \fBget\fR [all | \fIELEMENTNAME\fR] [\fITAGNUMMERN\fR] .PP Dieser Befehl kann dazu benutzt werden, den Wert eines bestimmten Tag\-Elements zu lesen oder um Informationen \(:uber alle Tag\-Elemente zu holen (wenn kein Parameter vorhanden ist oder \fBall\fR verwendet wird)\&. Ver\(:anderte Elemente werden mit einem \*(Aq*\*(Aq markiert\&. .sp .if n \{\ .RS 4 .\} .nf kid3\-cli> \fBget\fR 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\*(Aqs Tag Datum 2013 St\(:ucknummer 1 Genre Pop kid3\-cli> \fBget title\fR Intro .fi .if n \{\ .RE .\} .PP Ein Bild kann in einer Datei gespeichert werden\&. .sp .if n \{\ .RS 4 .\} .nf \fBget picture:\*(Aq/pfad/zu/folder\&.jpg\*(Aq\fR .fi .if n \{\ .RE .\} .PP Synchronisierter Liedtext wird im LRC\-Format exportiert\&. .sp .if n \{\ .RS 4 .\} .nf \fBget SYLT:\*(Aq/pfad/zu/lyrics\&.lrc\*(Aq\fR .fi .if n \{\ .RE .\} .PP Es k\(:onnen auch nur bestimmte Felder abgefragt werden, beispielsweise kann das Email\-Feld eines Popularimeter\-Frames mit \fBget POPM\&.Email\fR ausgegeben werden\&. Wenn eine Datei mehrere Frames des gleichen Typs enth\(:alt, so kann der Index in eckigen Klammern angegeben werden\&. So kriegt man beispielsweise den ersten Musiker aus einem Vorbis\-Tag mit \fBget performer[0]\fR, den zweiten mit \fBget performer[1]\fR\&. .PP Der Pseudo\-Feldname "selected" kann verwendet werden um zu pr\(:ufen, ob ein Frame selektiert ist, z\&.B\&. liefert \fBget artist\&.selected\fR dann 1 zur\(:uck, wenn der Interpret ausgew\(:ahlt ist, sonst 0\&. .PP 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\(:uckgegeben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag-Element setzen\fR .RS 4 .HP \w'\fBset\fR\ 'u \fBset\fR {\fIELEMENTNAME\fR} {\fIELEMENTWERT\fR} [\fITAGNUMMERN\fR] .PP Dieser Befehl setzt den Wert eines bestimmten Tag\-Elements\&. Wenn \fIELEMENTWERT\fR leer ist, so wird das Element gel\(:oscht\&. .sp .if n \{\ .RS 4 .\} .nf kid3\-cli> \fBset remixer \*(AqO\&.H\&. Wonder\*(Aq\fR .fi .if n \{\ .RE .\} .PP Um den Inhalt eines Bild\-Elements aus einer Datei zu bef\(:ullen, verwendet man .sp .if n \{\ .RS 4 .\} .nf \fBset picture:\*(Aq/pfad/zu/folder\&.jpg\*(Aq \*(AqBildbeschreibung\*(Aq\fR .fi .if n \{\ .RE .\} .PP Synchronisierter Liedtext kann aus einer LRC\-Datei importiert werden\&. .sp .if n \{\ .RS 4 .\} .nf \fBset SYLT:\*(Aq/pfad/zu/lyrics\&.lrc\*(Aq \*(AqBeschreibung\*(Aq\fR .fi .if n \{\ .RE .\} .PP Um ein bestimmtes Feld eines Frames zu setzen, kann der Feldname nach einem Punkt angegeben werden, z\&.B\&. f\(:ur das Z\(:ahler\-Feld des Popularimeter\-Frames\&. .sp .if n \{\ .RS 4 .\} .nf \fBset POPM\&.Counter 5\fR .fi .if n \{\ .RE .\} .PP Eine Anwendung f\(:ur das Setzen spezifischer Felder ist der Fall, dass man ein TXXX\-Frame mit "rating" als Beschreibung m\(:ochte anstelle eines POPM Frames (dies scheint f\(:ur die Anwendung gewisser Plugins n\(:otig 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\&. .sp .if n \{\ .RS 4 .\} .nf kid3\-cli> \fBset rating ""\fR kid3\-cli> \fBset TXXX\&.Description rating\fR kid3\-cli> \fBset rating 5\fR .fi .if n \{\ .RE .\} .sp Der erste Befehl l\(:oscht ein allenfalls vorhandenes POPM frame, denn wenn ein solches existiert, w\(:urde \fBset rating 5\fR das POPM\-Frame setzen und nicht das TXXX\-Frame\&. Eine andere M\(:oglichkeit w\(:are \fBset TXXX\&.Text 5\fR, aber dies funktioniert nur, wenn kein anderes TXXX\-Frame vorhanden ist\&. .PP Um mehrere Frames desselben Typs zu setzen, kann der Index in eckigen Klammern angegeben werden, z\&.B\&. mehrere Musiker in einem Vorbis\-Tag\&. .sp .if n \{\ .RS 4 .\} .nf kid3\-cli> \fBset performer[0] \*(AqLiza don Getti (soprano)\*(Aq\fR kid3\-cli> \fBset performer[1] \*(AqJoe Barr (piano)\*(Aq\fR .fi .if n \{\ .RE .\} .PP Um nur bestimmte Frames vor dem Kopieren, Einf\(:ugen oder Entfernen auszuw\(:ahlen, kann der Pseudo\-Feldname "selected" verwendet werden\&. Normalerweise sind alle Frames ausgew\(:ahlt, um alle zu deselektieren, kann \fBset \*(Aq*\&.selected\*(Aq 0\fR verwendet werden, danach kann beispielsweise das Interpreten\-Frame mit \fBset artist\&.selected 1\fR ausgew\(:ahlt werden\&. .PP Das Pseudo\-Element "ratingstars" kann verwendet werden, um den Wert des "rating" Elements auf den Wert zu setzen, welcher f\(:ur das entsprechende Format der Anzahl Sterne (0 bis 5) entspricht\&. Bei der Verwendung von "rating" wird der interne Wert gesetzt\&. .PP Das gleichzeitige Setzen von "ratingstars" auf mehreren Dateien mit unterschiedlichem Tag\-Format funktioniert nicht weil der interne Wert, welcher der Anzahl Sterne entspricht, f\(:ur die erste Datei berechnet wird und dann f\(:ur alle Dateien verwendet wird\&. Daher sollte man anstelle von \fBkid3\-cli \-c "set ratingstars 2" *\fR besser \fBfor f in *; do kid3\-cli \-c "set ratingstars 2" "$f"; done\fR verwenden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fB\(:Anderungen r\(:uckg\(:angig machen\fR .RS 4 .HP \w'\fBrevert\fR\ 'u \fBrevert\fR .PP Macht alle \(:Anderungen an den ausgew\(:ahlten Dateien r\(:uckg\(:angig (oder an allen Dateien, falls keine selektiert sind)\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBVon Datei importieren\fR .RS 4 .HP \w'\fBimport\fR\ 'u \fBimport\fR {\fIDATEI\fR} {\fIFORMATNAME\fR} [\fITAGNUMMERN\fR] .PP Die Tags werden aus \fIDATEI\fR importiert im Format \fIFORMATNAME\fR (z\&.B\&. \fB"CSV unquoted"\fR, siehe Importieren)\&. .PP Falls f\(:ur \fIDATEI\fR \fBtags\fR angegeben wird, so wird aus anderen Tags importiert\&. Anstelle von \fIFORMATNAME\fR werden dann \fIQUELLE\fR und \fIEXTRAKTION\fR als Parameter verlangt, siehe Importieren von Tags\&. Um das Importieren aus Tags auf die selektierten Dateien anzuwenden, kann \fBtagsel\fR statt \fBtags\fR verwendet werden\&. Hiermit kann auch mit einer \fIEXTRAKTION\fR von \fB%{__return}(\&.+)\fR der extrahierte Wert ausgegeben werden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAutomatisch importieren\fR .RS 4 .HP \w'\fBautoimport\fR\ 'u \fBautoimport\fR [\fIPROFILNAME\fR] [\fITAGNUMMERN\fR] .PP Es wird automatisch importiert unter Verwendung des Profils \fIPROFILNAME\fR (siehe Automatisch importieren, \fB"All"\fR wird benutzt, falls kein Profil angegeben wird)\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBCover-Bilder herunterladen\fR .RS 4 .HP \w'\fBalbumart\fR\ 'u \fBalbumart\fR {\fIURL\fR} [all] .PP Setzt das Albumcover mit einem von \fIURL\fR heruntergeladenen Bild\&. Die Regeln zur Umwandlung einer allgemeinen URL (z\&.B\&. von Amazon) zu einer Bild\-URL werden verwendet, diese k\(:onnen im Nach Cover\-Bildern suchen Dialog definiert werden\&. Um das Albumcover mit einer lokalen Datei zu setzen kann der set Befehl verwendet werden\&. .sp .if n \{\ .RS 4 .\} .nf kid3\-cli> \fBalbumart http://www\&.amazon\&.com/Versus\-World\-Amon\-Amarth/dp/B000078DOC\fR .fi .if n \{\ .RE .\} .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBIn Datei exportieren\fR .RS 4 .HP \w'\fBexport\fR\ 'u \fBexport\fR {\fIDATEI\fR} {\fIFORMATNAME\fR} [\fITAGNUMMERN\fR] .PP Tags werden in die Datei \fIDATEI\fR exportiert im Format \fIFORMATNAME\fR (z\&.B\&. \fB"CSV unquoted"\fR, siehe Exportieren)\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSt\(:uckliste erstellen\fR .RS 4 .HP \w'\fBplaylist\fR\ 'u \fBplaylist\fR .PP Erstellt eine St\(:uckliste in dem in der Konfiguration gesetzten Format, siehe St\(:uckliste erstellen\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDateinamenformat anwenden\fR .RS 4 .HP \w'\fBfilenameformat\fR\ 'u \fBfilenameformat\fR .PP Wendet das Dateinamenformat an, welches in der Konfiguration gesetzt ist, siehe Dateinamenformat anwenden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag-Format anwenden\fR .RS 4 .HP \w'\fBtagformat\fR\ 'u \fBtagformat\fR .PP Wendet das Tag\-Format an, welches in der Konfiguration gesetzt ist, siehe Tag\-Format anwenden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTextkodierung anwenden\fR .RS 4 .HP \w'\fBtextencoding\fR\ 'u \fBtextencoding\fR .PP Wendet die Textkodierung an, welche in der Konfiguration gesetzt ist, siehe Textkodierung anwenden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOrdner umbenennen\fR .RS 4 .HP \w'\fBrenamedir\fR\ 'u \fBrenamedir\fR [\fIFORMAT\fR] [create | rename | dryrun] [\fITAGNUMMERN\fR] .PP Mit diesem Befehl werden Ordner umbenannt oder neu erstellt anhand der Werte in den Tags nach einem bestimmten \fIFORMAT\fR (z\&.B\&. \fB%{artist} \- %{album}\fR, siehe Ordner umbenennen), wenn kein Format angegeben wird, so wird dasjenige verwendet, welches im Ordner umbenennen Dialog gesetzt ist\&. Normalerweise wird der Modus \fBrename\fR verwendet; um neue Ordner zu erstellen, muss \fBcreate\fR explizit angegeben werden\&. Die zum Umbenennen n\(:otigen Aktionen werden sofort ausgef\(:uhrt, um blo\(ss eine Vorschau \(:uber diese Aktionen zu sehen, kann die \fBdryrun\fR Option verwendet werden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSt\(:ucke nummerieren\fR .RS 4 .HP \w'\fBnumbertracks\fR\ 'u \fBnumbertracks\fR [\fITRACKNUMMER\fR] [\fITAGNUMMERN\fR] .PP Nummeriert die ausgew\(:ahlten Dateien beginnend mit \fITRACKNUMMER\fR (1 wenn nichts angegeben wird)\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBFilter\fR .RS 4 .HP \w'\fBfilter\fR\ 'u \fBfilter\fR [\fIFILTERNAME\fR | \fIFILTERFORMAT\fR] .PP Filtert die Dateien, so dass nur Dateien angezeigt werden, welche dem \fIFILTERFORMAT\fR entsprechen\&. Der Name eines vordefinierten Filterausdrucks (z\&.B\&. \fB"Filename Tag Mismatch"\fR) kann anstelle eines Filterausdrucks verwendet werden, siehe Filter\&. .sp .if n \{\ .RS 4 .\} .nf kid3\-cli> \fBfilter \*(Aq%{title} contains "tro"\*(Aq\fR Begonnen /home/urs/One Hit Wonder \- Let\*(Aqs Tag + 01 Intro\&.mp3 \- 02 We Only Got This One\&.mp3 + 03 Outro\&.mp3 Fertig kid3\-cli> \fBls\fR 1\-\- 01 Intro\&.mp3 1\-\- 03 Outro\&.mp3 kid3\-cli> \fBfilter All\fR Begonnen /home/urs/One Hit Wonder \- Let\*(Aqs Tag + 01 Intro\&.mp3 + 02 We Only Got This One\&.mp3 + 03 Outro\&.mp3 Fertig kid3\-cli> \fBls\fR 1\-\- 01 Intro\&.mp3 12\- 02 We Only Got This One\&.mp3 1\-\- 03 Outro\&.mp3 .fi .if n \{\ .RE .\} .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBID3v2.3 nach ID3v2.4 konvertieren\fR .RS 4 .HP \w'\fBto24\fR\ 'u \fBto24\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBID3v2.4 nach ID3v2.3 konvertieren\fR .RS 4 .HP \w'\fBto23\fR\ 'u \fBto23\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDateiname von Tag\fR .RS 4 .HP \w'\fBfromtag\fR\ 'u \fBfromtag\fR [\fIFORMAT\fR] [\fITAGNUMMERN\fR] .PP Setzt die Dateinamen der ausgew\(:ahlten Dateien anhand der Werte in den Tags, z\&.B\&. \fBfromtag \*(Aq%{track} \- %{title}\*(Aq 1\fR\&. Wenn kein Format angegeben wird, wird dasjenige verwendet, welches im GUI gesetzt ist\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag von Dateiname\fR .RS 4 .HP \w'\fBtotag\fR\ 'u \fBtotag\fR [\fIFORMAT\fR] [\fITAGNUMMERN\fR] .PP Setzt die Tag\-Elemente anhand der Dateinamen, z\&.B\&. \fBtotag \*(Aq%{albumartist} \- %{album}/%{track} %{title}\*(Aq 2\fR\&. 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\(:angige Formate ausprobiert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag zu anderem Tag\fR .RS 4 .HP \w'\fBsyncto\fR\ 'u \fBsyncto\fR {\fITAGNUMMER\fR} .PP Kopiert die Tag\-Elemente von einem Tag zum anderen Tag, um beispielsweise das ID3v2 Tag anhand der Werte im ID3v1 Tag zu setzen, wird \fBsyncto 2\fR verwendet\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBKopieren\fR .RS 4 .HP \w'\fBcopy\fR\ 'u \fBcopy\fR [\fITAGNUMMER\fR] .PP Kopiert die Tag\-Elemente der selektierten Datei in die interne Ablage\&. Sie k\(:onnen dann in einer anderen Datei mit dem \fBpaste\fR Befehl gesetzt werden\&. .PP Um nur ein paar ausgew\(:ahlte Frames zu kopieren, kann der \fBset\fR Befehl mit dem Pseudo\-Feldnamen "selected" verwendet werden\&. Um beispielsweise nur die CD\-Nummer\- und Copyright\-Frames zu kopieren, verwende man .sp .if n \{\ .RS 4 .\} .nf \fBset \*(Aq*\&.selected\*(Aq 0\fR \fBset discnumber\&.selected 1\fR \fBset copyright\&.selected 1\fR \fBcopy\fR .fi .if n \{\ .RE .\} .sp .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBEinf\(:ugen\fR .RS 4 .HP \w'\fBpaste\fR\ 'u \fBpaste\fR [\fITAGNUMMER\fR] .PP Setzt die Tag\-Elemente gem\(:a\(ss dem Inhalt der \fBcopy\fR Ablage in den ausgew\(:ahlten Dateien\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBEntfernen\fR .RS 4 .HP \w'\fBremove\fR\ 'u \fBremove\fR [\fITAGNUMMER\fR] .PP Entfernt ein Tag\&. .PP Es ist m\(:oglich, nur bestimmte Frames zu entfernen, indem man sie ausw\(:ahlt wie beim \fBcopy\fR Befehl beschrieben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBKid3 einrichten\fR .RS 4 .HP \w'\fBconfig\fR\ 'u \fBconfig\fR [\fIOPTION\fR] [\fIWERT\fR] .PP Konfigurationseinstellung lesen oder setzen .PP Die \fIOPTION\fR besteht aus einem Gruppennamen und einem Eigenschaftsnamen, getrennt durch einen Punkt\&. Wenn keine \fIOPTION\fR mitgegeben wird, so werden alle verf\(:ugbaren Gruppennamen aufgelistet\&. Wenn nur ein Gruppenname angegeben wird, so werden die Eigenschaften der Gruppe angezeigt\&. F\(:ur eine Gruppe mit Eigenschaft wird der aktuelle Wert ausgegeben\&. Um einen neuen Wert zu setzen, kann dieser als zweites Argument angegeben werden\&. .PP Wenn der Wert f\(:ur eine Einstellung aus einer Liste besteht, so m\(:ussen alle Listenelemente als Argumente angegeben werden\&. Um also ein neues Element zu einer bestehenden Liste hinzuzuf\(:ugen, m\(:ussen 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\(:anzt werden\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBProgramm oder QML-Skript ausf\(:uhren\fR .RS 4 .HP \w'\fBexecute\fR\ 'u \fBexecute\fR [@qml] {\fIDATEI\fR} [\fIARGS\fR] .PP F\(:uhre ein QML\-Skript oder eine Programmdatei aus\&. .PP Ohne \fB@qml\fR wird eine Programmdatei mit Argumenten ausgef\(:uhrt\&. Wenn das erste Argument \fB@qml\fR ist, sind die folgenden Argumente das QML\-Skript und seine Argumente\&. Beispielsweise k\(:onnen die Tags eines Ordners mit dem folgenden Befehl in eine Datei export\&.csv exportiert werden\&. .sp .if n \{\ .RS 4 .\} .nf \fBkid3\-cli \-c "execute @qml /usr/share/kid3/qml/script/ExportCsv\&.qml export\&.csv" /pfad/zu/ordner/\fR .fi .if n \{\ .RE .\} .PP Hier ist \fBexport\&.csv\fR das Argument f\(:ur das ExportCsv\&.qml Skript, w\(:ahrend \fB/pfad/zu/ordner/\fR das \fB\fIDATEI\fR\fR\-Argument f\(:ur \fBkid3\-cli\fR ist\&. .RE .SS "Beispiele" .PP Setzt Titel mit Apostroph\&. Befehle, welche \fBkid3\-cli\fR mit \fI\-c\fR \(:ubergeben werden, m\(:ussen in Anf\(:uhrungszeichen stehen, falls sie nicht blo\(ss aus einem einzelnen Wort bestehen\&. Wenn solch ein Befehl selbst ein Argument mit Leerzeichen hat, muss dieses Argument ebenfalls in Anf\(:uhrungszeichen gesetzt werden\&. In UNIX\(rg Shells k\(:onnen einfache oder doppelte Anf\(:uhrungszeichen verwendet werden, aber in der Windows Eingabeaufforderung ist es wichtig, dass au\(ssen doppelte und innen einfache Anf\(:uhrungszeichen verwendet werden\&. Wenn im Text innerhalb der einfachen Anf\(:uhrungszeichen ein einfaches Anf\(:uhrungszeichen verwendet wird, so muss diesem ein umgekehrter Schr\(:agstrich vorangestellt werden, wie im folgenden Beispiel gezeigt wird: .sp .if n \{\ .RS 4 .\} .nf \fBkid3\-cli \-c "set title \*(AqI\e\*(Aqll be there for you\*(Aq" /path/to/dir\fR .fi .if n \{\ .RE .\} .PP Setzt das Albumcover in allen Dateien eines Ordners unter Verwendung der automatischen Import\-Funktion: .sp .if n \{\ .RS 4 .\} .nf \fBkid3\-cli \-c "autoimport \*(AqCover Art\*(Aq" /pfad/zum/ordner\fR .fi .if n \{\ .RE .\} .PP Kommentar entfernen und Tag\-Format f\(:ur beide Tags in allen MP3\-Dateien eines Ordners anwenden: .sp .if n \{\ .RS 4 .\} .nf \fBkid3\-cli \-c "set comment \*(Aq\*(Aq 1" \-c "set comment \*(Aq\*(Aq 2" \e \-c "tagformat 1" \-c "tagformat 2" /pfad/zum/ordner/*\&.mp3\fR .fi .if n \{\ .RE .\} .PP Automatischer Import in Tag 2, auch ins Tag 1 kopieren, die Dateinamen aus Tag 2 setzen und schlie\(sslich eine St\(:uckliste erstellen: .sp .if n \{\ .RS 4 .\} .nf \fBkid3\-cli \-c autoimport \-c "syncto 1" \-c fromtag \-c playlist \e /pfad/zum/ordner/*\&.mp3\fR .fi .if n \{\ .RE .\} .PP F\(:ur alle Dateien mit einem ID3v2\&.4\&.0 Tag, dieses nach ID3v2\&.3\&.0 konvertieren und das Arrangierung Element entfernen: .sp .if n \{\ .RS 4 .\} .nf \fBkid3\-cli \-c "filter \*(AqID3v2\&.4\&.0 Tag\*(Aq" \-c "select all" \-c to23 \e \-c "set arranger \*(Aq\*(Aq" /pfad/zum/ordner\fR .fi .if n \{\ .RE .\} .PP Dieses Python\-Skript erzeugt mit \fBkid3\-cli\fR iTunes Sound Check iTunNORM Frames aus Replay Gain Information\&. .sp .if n \{\ .RS 4 .\} .nf #!/usr/bin/env python3 # Generate iTunes Sound Check from ReplayGain\&. import os, sys, subprocess def rg2sc(dirpath): for root, dirs, files in os\&.walk(dirpath): for name in files: if name\&.endswith((\*(Aq\&.mp3\*(Aq, \*(Aq\&.m4a\*(Aq, \*(Aq\&.aiff\*(Aq, \*(Aq\&.aif\*(Aq)): fn = os\&.path\&.join(root, name) rg = subprocess\&.check_output([ \*(Aqkid3\-cli\*(Aq, \*(Aq\-c\*(Aq, \*(Aqget "replaygain_track_gain"\*(Aq, fn])\&.strip() if rg\&.endswith(b\*(Aq dB\*(Aq): rg = rg[:\-3] try: rg = float(rg) except ValueError: print(\*(AqValue %s of %s in not a float\*(Aq % (rg, fn)) continue sc = (\*(Aq \*(Aq + (\*(Aq%08X\*(Aq % int((10 ** (\-rg / 10)) * 1000) )) * 10 subprocess\&.call([ \*(Aqkid3\-cli\*(Aq, \*(Aq\-c\*(Aq, \*(Aqset iTunNORM "%s"\*(Aq % sc, fn]) if __name__ == \*(Aq__main__\*(Aq: rg2sc(sys\&.argv[1]) .fi .if n \{\ .RE .\} .SS "JSON Format" .PP Um die Antworten von \fBkid3\-cli\fR einfacher von Programmen zu verarbeiten, k\(:onnen sie im JSON\-Format ausgegeben werden\&. Wenn das Kommando im JSON\-Format daherkommt, so wird auch die Antwort in JSON geliefert\&. Wird im Kommando eine kompakte JSON\-Repr\(:asentation verwendet, so wird auch das Resultat kompakt\&. Wenn das Kommando ein "id"\-Feld enth\(:alt, so wird es als JSON\-RPC interpretiert und die Antwort enth\(:alt ein "jsonrpc"\-Feld und die "id" der Anfrage\&. Dieselben Kommandos wie im Standard\-CLI werden verwendet, der Befehl ist im "method"\-Feld und die Parameter (sofern es solche hat) in der "params"\-Liste\&. Die Antwort enth\(:alt ein "result"\-Objekt, welches auch null sein kann, falls der entsprechende \fBkid3\-cli\fR\-Befehl kein Resultat ausgibt\&. Im Falle eines Fehlers wird ein "error"\-Objekt zur\(:uckgegeben, welches "code" und "message" wie in JSON\-RPC enth\(:alt\&. .sp .if n \{\ .RS 4 .\} .nf kid3\-cli> \fB{"method":"set","params":["artist","An Artist"]}\fR {"result":null} kid3\-cli> \fB{"method":"get","params":["artist",2]}\fR {"result":"An Artist"} kid3\-cli> \fB{"method": "get", "params": ["artist"]}\fR { "result": "An Artist" } kid3\-cli> \fB{"jsonrpc":"2\&.0","id":"123","method":"get","params":["artist"]}\fR {"id":"123","jsonrpc":"2\&.0","result":"An Artist"} .fi .if n \{\ .RE .\} .sp .SH "DANKSAGUNGEN UND LIZENZ" .PP Kid3 .PP Programmiert von Urs Fleisch .PP \(:Ubersetzung von Urs Fleisch .PP \m[blue]\fBFDL\fR\m[]\&\s-2\u[22]\d\s+2 .PP \m[blue]\fBGPL\fR\m[]\&\s-2\u[23]\d\s+2 .SH "INSTALLATION" .SS "Bezugsquellen" .PP Kid3 ist zu finden unter \m[blue]\fBhttps://kid3\&.kde\&.org\fR\m[]\&. .SS "Anforderungen" .PP Kid3 braucht \m[blue]\fBQt\fR\m[]\&\s-2\u[24]\d\s+2\&. \m[blue]\fBKDE\fR\m[]\&\s-2\u[25]\d\s+2 ist empfohlen aber nicht notwendig, denn Kid3 kann auch als reine Qt Applikation kompiliert werden\&. Kid3 l\(:auft auf Systemen, wo diese Programmbibliotheken vorhanden sind, z\&.B\&. auf GNU/Linux, Windows und macOS\&. Um Ogg/Vorbis Dateien zu taggen werden \m[blue]\fBlibogg\fR\m[]\&\s-2\u[15]\d\s+2, \m[blue]\fBlibvorbis und libvorbisfile\fR\m[]\&\s-2\u[16]\d\s+2 ben\(:otigt, f\(:ur FLAC Dateien \m[blue]\fBlibFLAC++ und libFLAC\fR\m[]\&\s-2\u[17]\d\s+2\&. F\(:ur MP3 Dateien wird die \m[blue]\fBid3lib\fR\m[]\&\s-2\u[14]\d\s+2 verwendet\&. F\(:ur diese vier Formate kann auch die \m[blue]\fBTagLib\fR\m[]\&\s-2\u[18]\d\s+2 verwendet werden, welche zudem auch Opus, MPC, APE, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF Dateien und Tracker Module unterst\(:utzt\&. F\(:ur das Importieren \(:uber akustische Fingerabdr\(:ucke werden \m[blue]\fBChromaprint\fR\m[]\&\s-2\u[20]\d\s+2 und \m[blue]\fBlibav\fR\m[]\&\s-2\u[21]\d\s+2 verwendet\&. .PP Kid3 ist f\(:ur die meisten Linux\-Distributionen, Windows und macOS erh\(:altlich\&. Links finden sich auf \m[blue]\fBhttps://kid3\&.kde\&.org\fR\m[]\&. .SS "Kompilieren und Installation" .PP Man kann Kid3 mit oder ohne KDE kompilieren\&. Ohne KDE ist Kid3 eine reine Qt Applikation und es fehlen einige Konfigurations\- und Session\-Funktionen\&. .PP F\(:ur die KDE Version wird im obersten Ordner getippt: .sp .if n \{\ .RS 4 .\} .nf % \fBcmake \&.\fR % \fBmake\fR % \fBmake install\fR .fi .if n \{\ .RE .\} .PP Um f\(:ur andere Versionen von Qt oder KDE zu kompilieren, setzt man die entsprechenden \fBcmake\fR Optionen\&. .PP Falls nicht alle Programmbibliotheken vorhanden sind, so wird Kid3 mit reduzierter Funktionalit\(:at kompiliert\&. Es sollte also darauf geachtet werden, dass die Entwicklungspakete aller gew\(:unschten Bibliotheken auch installiert sind\&. Andererseits kann mit \fBcmake\fR\-Optionen bestimmt werden, was verwendet werden soll\&. Die Voreinstellung ist \fB\-DWITH_TAGLIB:BOOL=ON \-DWITH_MP4V2:BOOL=OFF \-DWITH_ID3LIB:BOOL=ON \-DWITH_CHROMAPRINT:BOOL=ON \-DWITH_VORBIS:BOOL=ON \-DWITH_FLAC:BOOL=ON \fR\&. Entsprechend kann auch \fBOFF\fR gesetzt werden\&. .PP Um Kid3 als Qt Applikation ohne KDE zu kompilieren, wird die \fBcmake\fR Option \fB\-DWITH_APPS=Qt\fR benutzt\&. Um sowohl eine KDE als auch eine Qt Applikation zu kompilieren, wird \fB\-DWITH_APPS="Qt;KDE"\fR gesetzt\&. .PP Um eine bestimmte Qt\-Installation zu nutzen, kann \fB\-DQT_QMAKE_EXECUTABLE=/Pfad/zu/qmake\fR gesetzt werden\&. .PP F\(:ur die Erzeugung von RPM\-Paketen ist die Datei kid3\&.spec vorhanden, f\(:ur Debian\(rg\-Pakete wird \fBbuild\&.sh deb\fR ausgef\(:uhrt\&. .PP Die Qt Anwendung kann auch f\(:ur Windows und macOS kompiliert werden\&. Das Skript build\&.sh kann verwendet werden, um alle ben\(:otigten Programmbibliotheken herunterzuladen und zu kompilieren und ein Kid3\-Paket zu erstellen\&. .SS "Konfiguration" .PP Unter KDE werden die Einstellungen in \&.config/kid3rc gespeichert, der Zustand der Applikation in \&.local/share/kid3/kid3staterc\&. Als Qt\-Anwendung liegt diese Datei in \&.config/Kid3/Kid3\&.conf\&. Unter Windows wird die Konfiguration in der Registry gespeichert, unter macOS in einer plist\-Datei\&. .PP Die Umgebungsvariable \fIKID3_CONFIG_FILE\fR kann gesetzt werden, um den Pfad der Konfigurationsdatei zu bestimmen\&. .SH "D\-BUS\-SCHNITTSTELLE" .SS "D\-Bus\-Beispiele" .PP Unter Linux steht eine D\-Bus Schnittstelle zur Verf\(:ugung, mit welcher Kid3 \(:uber Skripte gesteuert werden kann\&. Skripte k\(:onnen in jeder Sprache, f\(:ur die D\-Bus\-Anbindungen existieren, geschrieben werden (z\&.B\&. in Python) und k\(:onnen \(:uber die Benutzerbefehle die Funktionalit\(:at von Kid3 erweitern\&. .PP Mit folgenden Befehlen kann der Interpret im Tag 2 auf den Wert "One Hit Wonder" gesetzt werden: .PP Shell .RS 4 .sp .if n \{\ .RS 4 .\} .nf dbus\-send \-\-dest=org\&.kde\&.kid3 \-\-print\-reply=literal \e /Kid3 org\&.kde\&.Kid3\&.setFrame int32:2 string:\*(AqArtist\*(Aq \e string:\*(AqOne Hit Wonder\*(Aq .fi .if n \{\ .RE .\} .sp oder einfacher mit \fBqdbus\fR von Qt (\fBqdbusviewer\fR kann benutzt werden, um die D\-Bus Schnittstelle \(:uber eine grafische Benutzeroberfl\(:ache zu erkunden): .sp .if n \{\ .RS 4 .\} .nf qdbus org\&.kde\&.kid3 /Kid3 setFrame 2 Artist \e \*(AqOne Hit Wonder\*(Aq .fi .if n \{\ .RE .\} .RE .PP Python .RS 4 .sp .if n \{\ .RS 4 .\} .nf import dbus kid3 = dbus\&.SessionBus()\&.get_object( \*(Aqorg\&.kde\&.kid3\*(Aq, \*(Aq/Kid3\*(Aq) kid3\&.setFrame(2, \*(AqArtist\*(Aq, \*(AqOne Hit Wonder\*(Aq) .fi .if n \{\ .RE .\} .RE .PP Perl .RS 4 .sp .if n \{\ .RS 4 .\} .nf use Net::DBus; $kid3 = Net::DBus\->session\->get_service( "org\&.kde\&.kid3")\->get_object( "/Kid3", "org\&.kde\&.Kid3"); $kid3\->setFrame(2, "Artist", "One Hit Wonder"); .fi .if n \{\ .RE .\} .RE .SS "D\-Bus API" .PP Das D\-Bus API ist in org\&.kde\&.Kid3\&.xml spezifiziert\&. Die Kid3 Schnittstelle hat die folgenden Methoden: .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDatei oder Ordner \(:offnen\fR .RS 4 .HP \w'boolean\ openDirectory('u .BI "boolean openDirectory(string\ " "path" ");" .PP \fIpath\fR .RS 4 Pfad zu Datei oder Ordner .RE .PP Wenn OK wird true zur\(:uckgegeben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTags aller nicht selektierten oder modifizierten Dateien entladen\fR .RS 4 .HP \w'unloadAllTags('u .BI "unloadAllTags(void);" .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAlle ver\(:anderten Dateien speichern\fR .RS 4 .HP \w'boolean\ save('u .BI "boolean save(void);" .PP Wenn OK wird true zur\(:uckgegeben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDetaillierte Fehlermeldung f\(:ur einige Methoden\fR .RS 4 .HP \w'string\ getErrorMessage('u .BI "string getErrorMessage(void);" .PP Gibt eine detaillierte Fehlermeldung zur\(:uck\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fB\(:Anderungen an Dateien r\(:uckg\(:angig machen\fR .RS 4 .HP \w'revert('u .BI "revert(void);" .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAutomatischen Import starten\fR .RS 4 .HP \w'boolean\ batchImport('u .BI "boolean batchImport(int32\ " "tagMask" ", string\ " "profileName" ");" .PP \fItagMask\fR .RS 4 Tag Maske (Bit 0 f\(:ur Tag 1, Bit 1 f\(:ur Tag 2) .RE .PP \fIprofileName\fR .RS 4 Name des zu verwendenden Profils .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTags von Datei importieren\fR .RS 4 .HP \w'boolean\ importFromFile('u .BI "boolean importFromFile(int32\ " "tagMask" ", string\ " "path" ", int32\ " "fmtIdx" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .PP \fIpath\fR .RS 4 Pfad zu Datei .RE .PP \fIfmtIdx\fR .RS 4 Format Index .RE .PP Wenn OK wird true zur\(:uckgegeben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTags aus anderen Tags importieren\fR .RS 4 .HP \w'importFromTags('u .BI "importFromTags(int32\ " "tagMask" ", string\ " "source" ", string\ " "extraction" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .PP \fIsource\fR .RS 4 Format\-Spezifikation, um Ausgangstext aus den vorhandenen Tags zu erhalten .RE .PP \fIextraction\fR .RS 4 Regul\(:arer Ausdruck mit Elementnamen und Klammergruppen, um Treffer aus dem Ausgangstext zu extrahieren .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTags aus anderen Tags importieren in ausgew\(:ahlten Dateien\fR .RS 4 .HP \w'array\ importFromTagsToSelection('u .BI "array importFromTagsToSelection(int32\ " "tagMask" ", string\ " "source" ", string\ " "extraction" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .PP \fIsource\fR .RS 4 Format\-Spezifikation, um Ausgangstext aus den vorhandenen Tags zu erhalten .RE .PP \fIextraction\fR .RS 4 Regul\(:arer Ausdruck mit Elementnamen und Klammergruppen, um Treffer aus dem Ausgangstext zu extrahieren .RE .PP \fIreturnValues\fR .RS 4 Extrahierter Wert f\(:ur "%{__return}(\&.+)" .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBCover-Bild herunterladen\fR .RS 4 .HP \w'downloadAlbumArt('u .BI "downloadAlbumArt(string\ " "url" ", boolean\ " "allFilesInDir" ");" .PP \fIurl\fR .RS 4 URL des Bildes oder einer dazugeh\(:origen Webseite .RE .PP \fIallFilesInDir\fR .RS 4 falls true, wird das Bild in allen Dateien des Ordners hinzugef\(:ugt .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTags in Datei exportieren\fR .RS 4 .HP \w'boolean\ exportToFile('u .BI "boolean exportToFile(int32\ " "tagMask" ", string\ " "path" ", int32\ " "fmtIdx" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .PP \fIpath\fR .RS 4 Pfad zu Datei .RE .PP \fIfmtIdx\fR .RS 4 Format Index .RE .PP Wenn OK wird true zur\(:uckgegeben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSt\(:uckliste erstellen\fR .RS 4 .HP \w'boolean\ createPlaylist('u .BI "boolean createPlaylist(void);" .PP Wenn OK wird true zur\(:uckgegeben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDateien einer St\(:uckliste abfragen\fR .RS 4 .HP \w'array\ getPlaylistItems('u .BI "array getPlaylistItems(string\ " "path" ");" .PP \fIpath\fR .RS 4 Pfad zu St\(:ucklistendatei .RE .PP Gibt eine Liste mit absoluten Pfaden zu den St\(:ucken der Wiedergabeliste zur\(:uck\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDateien einer St\(:uckliste setzen\fR .RS 4 .HP \w'boolean\ setPlaylistItems('u .BI "boolean setPlaylistItems(string\ " "path" ", array\ " "items" ");" .PP \fIpath\fR .RS 4 Pfad zu St\(:ucklistendatei .RE .PP \fIitems\fR .RS 4 Liste mit absoluten Pfaden zu den St\(:ucken der Wiedergabeliste .RE .PP Wenn OK wird true zur\(:uckgegeben, false wenn nicht alle St\(:ucke gefunden wurden oder das Speichern fehlgeschlagen ist\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAnwendung beenden\fR .RS 4 .HP \w'quit('u .BI "quit(void);" .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAlles ausw\(:ahlen\fR .RS 4 .HP \w'selectAll('u .BI "selectAll(void);" .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGesamte Auswahl aufheben\fR .RS 4 .HP \w'deselectAll('u .BI "deselectAll(void);" .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGehe zur ersten Datei\fR .RS 4 .HP \w'boolean\ firstFile('u .BI "boolean firstFile(void);" .PP Gibt true zur\(:uck, wenn eine Datei existiert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGehe zur vorangehende Datei\fR .RS 4 .HP \w'boolean\ previousFile('u .BI "boolean previousFile(void);" .PP Gibt true zur\(:uck, wenn eine vorangehende Datei existiert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGehe zur n\(:achstes Datei\fR .RS 4 .HP \w'boolean\ nextFile('u .BI "boolean nextFile(void);" .PP Gibt true zur\(:uck, wenn eine n\(:achste Datei existiert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBErste Datei ausw\(:ahlen\fR .RS 4 .HP \w'boolean\ selectFirstFile('u .BI "boolean selectFirstFile(void);" .PP Gibt true zur\(:uck, wenn eine Datei existiert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBVorangehende Datei ausw\(:ahlen\fR .RS 4 .HP \w'boolean\ selectPreviousFile('u .BI "boolean selectPreviousFile(void);" .PP Gibt true zur\(:uck, wenn eine vorangehende Datei existiert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBN\(:achste Datei ausw\(:ahlen\fR .RS 4 .HP \w'boolean\ selectNextFile('u .BI "boolean selectNextFile(void);" .PP Gibt true zur\(:uck, wenn eine n\(:achste Datei existiert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAktuelle Datei ausw\(:ahlen\fR .RS 4 .HP \w'boolean\ selectCurrentFile('u .BI "boolean selectCurrentFile(void);" .PP Gibt true zur\(:uck, wenn eine aktuelle Datei existiert\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAktuellen Ordner auf- oder zuklappen\fR .RS 4 .HP \w'boolean\ expandDirectory('u .BI "boolean expandDirectory(void);" .PP Ein Dateilistenelement ist ein Ordner, wenn getFileName() einen Namen mit \*(Aq/\*(Aq als letztem Zeichen zur\(:uckgibt\&. .PP Gibt true zur\(:uck, wenn das aktuelle Dateilistenelement ein Ordner ist\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDateinamenformat anwenden\fR .RS 4 .HP \w'applyFilenameFormat('u .BI "applyFilenameFormat(void);" .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTag Format anwenden\fR .RS 4 .HP \w'applyTagFormat('u .BI "applyTagFormat(void);" .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTextkodierung anwenden\fR .RS 4 .HP \w'applyTextEncoding('u .BI "applyTextEncoding(void);" .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOrdnername von Tags setzen\fR .RS 4 .HP \w'boolean\ setDirNameFromTag('u .BI "boolean setDirNameFromTag(int32\ " "tagMask" ", string\ " "format" ", boolean\ " "create" ");" .PP \fItagMask\fR .RS 4 Tag Maske (Bit 0 f\(:ur Tag 1, Bit 1 f\(:ur Tag 2) .RE .PP \fIformat\fR .RS 4 Ordnerformat .RE .PP \fIcreate\fR .RS 4 true zum Erstellen, false zum Umbenennen .RE .PP Wenn OK wird true zur\(:uckgegeben, sonst ist eine Fehlermeldung mit getErrorMessage() abrufbar\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSt\(:ucke in ausgew\(:ahlten Dateien nummerieren\fR .RS 4 .HP \w'numberTracks('u .BI "numberTracks(int32\ " "tagMask" ", int32\ " "firstTrackNr" ");" .PP \fItagMask\fR .RS 4 Tag Maske (Bit 0 f\(:ur Tag 1, Bit 1 f\(:ur Tag 2) .RE .PP \fIfirstTrackNr\fR .RS 4 Nummer f\(:ur erste Datei .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDateien filtern\fR .RS 4 .HP \w'filter('u .BI "filter(string\ " "expression" ");" .PP \fIexpression\fR .RS 4 Filter Ausdruck .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBID3v2.3 nach ID3v2.4 konvertieren\fR .RS 4 .HP \w'convertToId3v24('u .BI "convertToId3v24(void);" .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBID3v2.4 nach ID3v2.3 konvertieren\fR .RS 4 .HP \w'convertToId3v23('u .BI "convertToId3v23(void);" .PP Wenn OK wird true zur\(:uckgegeben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOrdnerpfad\fR .RS 4 .HP \w'string\ getDirectoryName('u .BI "string getDirectoryName(void);" .PP Gibt den absoluten Ordnerpfad zur\(:uck\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBName der aktuellen Datei\fR .RS 4 .HP \w'string\ getFileName('u .BI "string getFileName(void);" .PP Gibt den absoluten Dateinamen zur\(:uck, wenn es ein Ordner ist, endet er mit "/"\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSetze Dateinamen\fR .RS 4 .HP \w'setFileName('u .BI "setFileName(string\ " "name" ");" .PP \fIname\fR .RS 4 Dateiname .RE .PP Die Datei wird umbenannt, wenn der Ordner gespeichert wird\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSetze Format f\(:ur Dateiname aus Tags\fR .RS 4 .HP \w'setFileNameFormat('u .BI "setFileNameFormat(string\ " "format" ");" .PP \fIformat\fR .RS 4 Dateinamenformat .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneriere den Dateinamen aus den Tags\fR .RS 4 .HP \w'setFileNameFromTag('u .BI "setFileNameFromTag(int32\ " "tagMask" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBWert eines Elementes\fR .RS 4 .HP \w'string\ getFrame('u .BI "string getFrame(int32\ " "tagMask" ", string\ " "name" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .PP \fIname\fR .RS 4 Elementname (z\&.B\&. "artist") .RE .PP Um bin\(:are Daten wie ein Bild von einem Element in einer Datei zu speichern, kann der Dateiname dem Elementnamen hinzugef\(:ugt werden, z\&.B\&. "Picture:/Pfad/zu/Datei"\&. Auf dieselbe Weise kann synchronisierter Liedtext exportiert werden, z\&.B\&. "SYLT:/Pfad/zu/Datei"\&. .PP Gibt Wert des Elementes zur\(:uck\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSetze Wert eines Elementes\fR .RS 4 .HP \w'boolean\ setFrame('u .BI "boolean setFrame(int32\ " "tagMask" ", string\ " "name" ", string\ " "value" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .PP \fIname\fR .RS 4 Elementname (z\&.B\&. "artist") .RE .PP \fIvalue\fR .RS 4 Wert des Elementes .RE .PP F\(:ur Tag 2 (\fItagMask\fR 2) gilt: Wenn kein Element mit \fIname\fR existiert, so wird ein neues Element hinzugef\(:ugt, wenn \fIvalue\fR leer ist, so wird das Element gel\(:oscht\&. Um bin\(:are Daten wie ein Bild einem Element hinzuzuf\(:ugen, kann der Dateiname dem Elementnamen hinzugef\(:ugt werden, z\&.B\&. "Picture:/Pfad/zu/Datei"\&. "SYLT:/Pfad/zu/Datei" kann verwendet werden, um synchronisierten Liedtext im LRC\-Format zu importieren\&. .PP Wenn OK wird true zur\(:uckgegeben\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBAlle Elemente eines Tags\fR .RS 4 .HP \w'array\ of\ string\ getTag('u .BI "array of string getTag(int32\ " "tagMask" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .PP Gibt eine Liste mit abwechselnd Elementnamen und \-werten zur\(:uck\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBTechnische Informationen \(:uber Datei\fR .RS 4 .HP \w'array\ of\ string\ getInformation('u .BI "array of string getInformation(void);" .PP Eigenschaften sind Format, Bitrate, Samplerate, Channels, Duration, Channel Mode, VBR, Tag 1, Tag 2\&. Eigenschaften, welche nicht vorhanden sind, werden ausgelassen\&. .PP Gibt eine Liste mit abwechselnd Eigenschaftsnamen und \-werten zur\(:uck\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSetze Tag aus Dateinamen\fR .RS 4 .HP \w'setTagFromFileName('u .BI "setTagFromFileName(int32\ " "tagMask" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSetze Tag aus anderem Tag\fR .RS 4 .HP \w'setTagFromOtherTag('u .BI "setTagFromOtherTag(int32\ " "tagMask" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBKopiere Tag\fR .RS 4 .HP \w'copyTag('u .BI "copyTag(int32\ " "tagMask" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBF\(:uge Tag ein\fR .RS 4 .HP \w'pasteTag('u .BI "pasteTag(int32\ " "tagMask" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBEntferne Tag\fR .RS 4 .HP \w'removeTag('u .BI "removeTag(int32\ " "tagMask" ");" .PP \fItagMask\fR .RS 4 Tag Bit (1 f\(:ur Tag 1, 2 f\(:ur Tag 2) .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBLese die Konfiguration neu ein\fR .RS 4 .HP \w'reparseConfiguration('u .BI "reparseConfiguration(void);" .PP Automatisierte Konfigurations\(:anderungen sind durch direktes Modifizieren der Konfigurationsdatei und anschlie\(ssendes Einlesen m\(:oglich\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSpielt die ausgew\(:ahlten Dateien ab\fR .RS 4 .HP \w'playAudio('u .BI "playAudio(void);" .RE .SH "QML SCHNITTSTELLE" .SS "QML Beispiele" .PP QML Skripte lassen sich \(:uber das Kontextmen\(:u der Dateiliste aufrufen und in den Einstellungen auf der Seite Benutzerbefehle setzen\&. Die dortigen Beispielskripte bieten eine Vorlage f\(:ur die Programmierung eigener Skripte\&. Codiert wird in JavaScript, hier das obligate "Hello World": .sp .if n \{\ .RS 4 .\} .nf import Kid3 1\&.0 Kid3Script { onRun: { console\&.log("Hello world, directory is", app\&.dirName) Qt\&.quit() } } .fi .if n \{\ .RE .\} .PP Wird dieses Skript unter /path/to/Example\&.qml abgespeichert, so kann als Benutzerbefehl \fB@qml /path/to/Example\&.qml\fR definiert werden\&. Wenn als Name \fBQML Test\fR gesetzt und Ausgabe aktiviert wird, so l\(:asst sich das Skript \(:uber den Kontextmen\(:upunkt QML Test der Dateiliste starten, und die Ausgabe ist im Fenster sichtbar\&. .PP Leider lassen sich mit neueren Qt\-Versionen QML\-Skripte nicht mehr mit dem Programm \fBqml\fR starten (z\&.B\&. \fBqml \-apptype widget \-I /usr/lib/kid3/plugins/imports /pfad/zu/Example\&.qml\fR)\&. Aber \fBkid3\-cli\fR bietet mit \fBexecute\fR eine Alternative an, um QML\-Skripte von der Kommandozeile aus zu starten\&. .sp .if n \{\ .RS 4 .\} .nf kid3\-cli \-c "execute @qml /pfad/zu/Example\&.qml" .fi .if n \{\ .RE .\} .PP Um die Titel im Tag 2 aller Dateien des aktuellen Ordners aufzulisten, k\(:onnte folgendes Skript verwendet werden: .sp .if n \{\ .RS 4 .\} .nf import Kid3 1\&.0 Kid3Script { onRun: { app\&.firstFile() do { if (app\&.selectionInfo\&.tag(Frame\&.Tag_2)\&.tagFormat) { console\&.log(app\&.getFrame(tagv2, "title")) } } while (app\&.nextFile()) } } .fi .if n \{\ .RE .\} .PP Wenn sich viele Dateien im Ordner befinden, blockiert ein solches Skript die Benutzeroberfl\(:ache f\(:ur einige Zeit\&. F\(:ur l\(:angere Aktionen sollte man daher kurze Pausen einlegen\&. Die unten stehende Alternative lagert die Arbeit an einer einzelnen Datei in eine Funktion aus\&. Diese ruft sich am Ende mit einem Timeout von 1 ms wieder selbst auf, sofern noch weitere Dateien zu bearbeiten sind\&. Dadurch bleibt das GUI auch w\(:ahrend dem Ablauf des Skripts benutzbar\&. .sp .if n \{\ .RS 4 .\} .nf import Kid3 1\&.0 Kid3Script { onRun: { function doWork() { if (app\&.selectionInfo\&.tag(Frame\&.Tag_2)\&.tagFormat) { console\&.log(app\&.getFrame(tagv2, "title")) } if (!app\&.nextFile()) { Qt\&.quit() } else { setTimeout(doWork, 1) } } app\&.firstFile() doWork() } } .fi .if n \{\ .RE .\} .PP Mit \fBapp\&.firstFile()\fR und \fBapp\&.nextFile()\fR werden alle Dateien des aktuellen Ordners bearbeitet\&. Falls es nur die ausgew\(:ahlten Dateien sein sollen, so sollten stattdessen \fBfirstFile()\fR und \fBnextFile()\fR verwendet werden, diese Funktionen sind in der Komponente Kid3Script enthalten\&. Das folgende Beispiel kopiert blo\(ss die CD\-Nummer\- und Copyright\-Frames der ausgew\(:ahlten Datei\&. .sp .if n \{\ .RS 4 .\} .nf import Kid3 1\&.1 Kid3Script { onRun: { function doWork() { if (app\&.selectionInfo\&.tag(Frame\&.Tag_2)\&.tagFormat) { app\&.setFrame(tagv2, "*\&.selected", false) app\&.setFrame(tagv2, "discnumber\&.selected", true) app\&.setFrame(tagv2, "copyright\&.selected", true) app\&.copyTags(tagv2) } if (!nextFile()) { Qt\&.quit() } else { setTimeout(doWork, 1) } } firstFile() doWork() } } .fi .if n \{\ .RE .\} .PP Weitere Beispiele sind bei Kid3 dabei und bereits bei den Benutzerbefehlen eingetragen\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ReplayGain to SoundCheck (ReplayGain2SoundCheck\&.qml): Erstellt iTunNORM SoundCheck Informationen aus Replay Gain Werten\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Resize Album Art (ResizeAlbumArt\&.qml): Skaliert eingebettete Bilder runter auf 500x500 Pixel\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Extract Album Art (ExtractAlbumArt\&.qml): Speichert alle eingebetteten Bilder als Dateien ab, ohne Duplikate zu erzeugen\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Embed Album Art (EmbedAlbumArt\&.qml): Bettet Bilder aus Dateien in die Audio\-Dateien ein, welche sich im selben Ordner befinden\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Embed Lyrics (EmbedLyrics\&.qml): Holt unsynchronisierte Liedtexte von einem Webserver\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Text Encoding ID3v1 (ShowTextEncodingV1\&.qml): Hilft dabei, die Codierung zu finden, indem es die ID3v1 Tags in allen verf\(:ugbaren Zeichencodierungen anzeigt\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ID3v1 to ASCII (Tag1ToAscii\&.qml): Konvertiere Zeichen aus den lateinischen Unicodebl\(:ocken im ID3v1 Tag nach ASCII\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} English Title Case (TitleCase\&.qml): Formatiere den Text in den Tags nach den Regeln englischer Gro\(ss\- und Kleinschreibung in Titeln\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Rewrite Tags (RewriteTags\&.qml): Schreibt die Tags in allen ausgew\(:ahlten Dateien neu\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Export CSV (ExportCsv\&.qml): Exportiert rekursiv alle Tags aller Dateien in eine CSV\-Datei\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Import CSV (ImportCsv\&.qml): Importiert rekursiv alle Tags aller Dateien aus einer CSV\-Datei\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Export JSON (ExportJson\&.qml): Exportiert rekursiv alle Tags aller Dateien in eine JSON\-Datei\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Import JSON (ImportJson\&.qml): Importiert rekursiv alle Tags aller Dateien aus einer JSON\-Datei\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Export Playlist Folder (ExportPlaylist\&.qml): Kopiert alle Dateien einer Playlist in ein Ordner und benennt sie gem\(:ass ihrer Position um\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} QML Console (QmlConsole\&.qml): Einfache Konsole, um die Funktionen von Kid3\*(Aqs QML API auszuprobieren\&. .RE .sp .SS "QML API" .PP Das API l\(:asst sich leicht \(:uber die QML Console erkunden, welche als Beispiel f\(:ur ein Skript mit Benutzeroberfl\(:ache verf\(:ugbar ist\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBKid3Script\fR .RS 4 .PP Kid3Script ist eine normale QML\-Komponente im Plugin\-Ordner\&. Man kann ebenso gut andere QML\-Komponenten als Basis brauchen\&. Die Verwendung von Kid3Script sorgt daf\(:ur, dass sich eine Skript\-Funktion einfach im \fBonRun\fR Signal Handler aufrufen l\(:asst\&. Dar\(:uber hinaus werden noch einige Funktionen geboten: .sp .if n \{\ .RS 4 .\} .nf onRun: Signal Handler, welcher beim Start des Skripts aufgerufen wird tagv1, tagv2, tagv2v1: Konstanten f\(:ur tag Parameter script: Zugriff auf Skript\-Funktionen configs: Zugriff auf Konfigurations\-Objekte getArguments(): Liste mit Skript\-Argumenten isStandalone(): true wenn Skript nicht aus Kid3 heraus gestartet wird setTimeout(callback, delay): Startet callback nach delay ms firstFile(): Erste ausgew\(:ahlte Datei nextFile(): N\(:achste ausgew\(:ahlte Datei .fi .if n \{\ .RE .\} .sp .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSkript-Funktionen\fR .RS 4 .PP Da JavaScript und somit auch QML nur einen eingeschr\(:ankten Funktionsumfang f\(:ur Skripte mitbringt, stellt das \fBscript\fR Objekt einige Methoden zur Verf\(:ugung, welche den Funktionsumfang erweitern, unter anderem: .sp .if n \{\ .RS 4 .\} .nf script\&.properties(obj): Qt Eigenschaften des Objekts script\&.writeFile(filePath, data): Schreibe in Datei, true wenn OK script\&.readFile(filePath): Lese Daten von Datei script\&.removeFile(filePath): L\(:osche Datei, true wenn OK script\&.fileExists(filePath): true wenn Datei existiert script\&.fileIsWritable(filePath): true wenn Datei schreibbar ist script\&.getFilePermissions(filePath): Lese Dateiberechtigungen (Mode Bits) script\&.setFilePermissions(filePath, modeBits): Setze Dateiberechtigungen script\&.classifyFile(filePath): Klasse der Datei (Ordner "/", Symlink "@", Exe "*", Datei " ") script\&.renameFile(oldName, newName): Datei umbenennen, true wenn OK script\&.copyFile(source, dest): Kopiere Datei, true wenn OK script\&.makeDir(path): Erstelle Ordner, true wenn OK script\&.removeDir(path): L\(:osche Ordner, true wenn OK script\&.tempPath(): Ordner tempor\(:arer Dateien script\&.musicPath(): Musik\-Ordner script\&.listDir(path, [nameFilters], [classify]): Liste der Ordnereintr\(:age script\&.system(program, [args], [msecs]): Systemkommando synchron ausf\(:uhren, [exit code, standard output, standard error] wenn kein Timeout script\&.systemAsync(program, [args], [callback]): Systemkommando asynchron ausf\(:uhren, callback wird mit [exit code, standard output, standard error] aufgerufen script\&.getEnv(varName): Wert einer Umgebungsvariablen script\&.setEnv(varName, value): Setze Wert einer Umgebungsvariablen script\&.getQtVersion(): Qt Version, z\&.B\&. "5\&.4\&.1" script\&.getDataMd5(data): MD5 Hash (hex) der Daten script\&.getDataSize(data): Anzahl Datenbytes script\&.dataToImage(data, [format]): Erzeuge Bild aus Daten script\&.dataFromImage(img, [format]): Daten aus einem Bild script\&.loadImage(filePath): Lade Bild aus einer Datei script\&.saveImage(img, filePath, [format]): Speichere Bild in Datei, true wenn OK script\&.imageProperties(img): Eigenschaften eines Bildes, enth\(:alt "width", "height", "depth" und "colorCount", leer wenn Bild ung\(:ultig script\&.scaleImage(img, width, [height]): Liefert skaliertes Bild .fi .if n \{\ .RE .\} .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBApplikations-Kontext\fR .RS 4 .PP \(:Uber QML ist ein gro\(sser Teil der Kid3 Funktionalit\(:at verf\(:ugbar\&. Das API ist \(:ahnlich wie bei D\-Bus\&. F\(:ur Details wird auf die dortige Beschreibung verwiesen\&. .sp .if n \{\ .RS 4 .\} .nf app\&.openDirectory(path): Ordner \(:offnen app\&.unloadAllTags(): Entlade alle Tags app\&.saveDirectory(): Speichern app\&.revertFileModifications(): Zuletzt gespeicherte Fassung app\&.importTags(tag, path, fmtIdx): Datei importieren app\&.importFromTags(tag, source, extraction): Aus Tags importieren app\&.importFromTagsToSelection(tag, source, extraction): Aus Tags der ausgew\(:ahlten Dateien importieren app\&.downloadImage(url, allFilesInDir): Bild herunterladen app\&.exportTags(tag, path, fmtIdx): Datei exportieren app\&.writePlaylist(): St\(:uckliste erstellen app\&.getPlaylistItems(path): St\(:ucke einer Wiedergabeliste app\&.setPlaylistItems(path, items): Setze St\(:ucke einer Wiedergabeliste app\&.selectAllFiles(): Alles ausw\(:ahlen app\&.deselectAllFiles(): Gesamte Auswahl aufheben app\&.firstFile([select], [onlyTaggedFiles]): Erste Datei app\&.nextFile([select], [onlyTaggedFiles]): N\(:achste Datei app\&.previousFile([select], [onlyTaggedFiles]): Vorangehende Datei app\&.selectCurrentFile([select]): Aktuelle Datei ausw\(:ahlen app\&.selectFile(path, [select]): Spezifische Datei ausw\(:ahlen app\&.getSelectedFilePaths([onlyTaggedFiles]): Alle ausgew\(:ahlten Dateien app\&.requestExpandFileList(): Alle ausklappen app\&.applyFilenameFormat(): Dateinamenformat anwenden app\&.applyTagFormat(): Tag\-Format anwenden app\&.applyTextEncoding(): Textkodierung anwenden app\&.numberTracks(nr, total, tag, [options]): St\(:ucke nummerieren app\&.applyFilter(expr): Filter app\&.convertToId3v23(): ID3v2\&.4 nach ID3v2\&.3 konvertieren app\&.convertToId3v24(): ID3v2\&.3 nach ID3v2\&.4 konvertieren app\&.getFilenameFromTags(tag): Dateiname von Tag app\&.getTagsFromFilename(tag): Tag von Dateiname app\&.getAllFrames(tag): Objekt mit allen Elementen app\&.getFrame(tag, name): Hole Element app\&.setFrame(tag, name, value): Setze Element app\&.getPictureData(): Daten aus Bild\-Element app\&.setPictureData(data): Setze Daten in Bild\-Element app\&.copyToOtherTag(tag): Tag zu anderem Tag app\&.copyTags(tag): Kopieren app\&.pasteTags(tag): Einf\(:ugen app\&.removeTags(tag): Entfernen app\&.playAudio(): Wiedergabe app\&.readConfig(): Konfiguration lesen app\&.applyChangedConfiguration(): Konfiguration anwenden app\&.dirName: Ordnername app\&.selectionInfo\&.fileName: Dateiname app\&.selectionInfo\&.filePath: Absoluter Dateiname app\&.selectionInfo\&.detailInfo: Format Details app\&.selectionInfo\&.tag(Frame\&.Tag_1)\&.tagFormat: Tag 1 Format app\&.selectionInfo\&.tag(Frame\&.Tag_2)\&.tagFormat: Tag 2 Format app\&.selectionInfo\&.formatString(tag, format): Ersetze Format\-Codes app\&.selectFileName(caption, dir, filter, saveFile): \(:Offnet Dateidialog, um eine Datei auszuw\(:ahlen app\&.selectDirName(caption, dir): \(:Offnet Dateidialog, um Ordner auszuw\(:ahlen .fi .if n \{\ .RE .\} .PP F\(:ur asynchrone Operationen k\(:onnen Callbacks mit Signalen verbunden werden\&. .sp .if n \{\ .RS 4 .\} .nf function automaticImport(profile) { function onAutomaticImportFinished() { app\&.batchImporter\&.finished\&.disconnect(onAutomaticImportFinished) } app\&.batchImporter\&.finished\&.connect(onAutomaticImportFinished) app\&.batchImport(profile, tagv2) } function renameDirectory(format) { function onRenameActionsScheduled() { app\&.renameActionsScheduled\&.disconnect(onRenameActionsScheduled) app\&.performRenameActions() } app\&.renameActionsScheduled\&.connect(onRenameActionsScheduled) app\&.renameDirectory(tagv2v1, format, false) } .fi .if n \{\ .RE .\} .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBKonfigurations-Objekte\fR .RS 4 .PP Die einzelnen Konfigurationen sind \(:uber Methoden von \fBconfigs\fR verf\(:ugbar\&. Ihre Eigenschafen k\(:onnen in der QML Console aufgelistet werden\&. .sp .if n \{\ .RS 4 .\} .nf script\&.properties(configs\&.networkConfig()) .fi .if n \{\ .RE .\} .sp Eigenschaften k\(:onnen gesetzt werden: .sp .if n \{\ .RS 4 .\} .nf configs\&.networkConfig()\&.useProxy = false .fi .if n \{\ .RE .\} .sp .sp .if n \{\ .RS 4 .\} .nf configs\&.batchImportConfig() configs\&.exportConfig() configs\&.fileConfig() configs\&.filenameFormatConfig() configs\&.filterConfig() configs\&.findReplaceConfig() configs\&.guiConfig() configs\&.importConfig() configs\&.mainWindowConfig() configs\&.networkConfig() configs\&.numberTracksConfig() configs\&.playlistConfig() configs\&.renDirConfig() configs\&.tagConfig() configs\&.tagFormatConfig() configs\&.userActionsConfig() .fi .if n \{\ .RE .\} .RE .SH "AUTOREN" .PP \fBUrs Fleisch\fR <\&ufleisch at users.sourceforge.net\&> .RS 4 Software Entwicklung .RE .PP \fBUrs Fleisch\fR <\&ufleisch at users.sourceforge.net\&> .RS 4 \(:Ubersetzung .RE .SH "COPYRIGHT" .br Copyright \(co 2022 Urs Fleisch .br .PP \m[blue]\fBFDL\fR\m[] .sp .SH "FU\(ssNOTEN" .IP " 1." 4 gnudb.org .RS 4 \%http://gnudb.org .RE .IP " 2." 4 MusicBrainz .RS 4 \%http://musicbrainz.org .RE .IP " 3." 4 Discogs .RS 4 \%http://discogs.com .RE .IP " 4." 4 Amazon .RS 4 \%http://www.amazon.com .RE .IP " 5." 4 ID3 Spezifikation .RS 4 \%http://id3.org/id3v2.4.0-frames .RE .IP " 6." 4 SYLT Editor .RS 4 \%http://www.compuphase.com/software_sylteditor.htm .RE .IP " 7." 4 www.gnudb.org .RS 4 \%http://www.gnudb.org .RE .IP " 8." 4 Discogs .RS 4 \%https://www.discogs.com/ .RE .IP " 9." 4 freedb.org .RS 4 \%http://freedb.org .RE .IP "10." 4 ID3 tag version 2.3.0 .RS 4 \%http://id3.org/id3v2.3.0 .RE .IP "11." 4 ID3 tag version 2.4.0 - Main Structure .RS 4 \%http://id3.org/id3v2.4.0-structure .RE .IP "12." 4 LyricWiki .RS 4 \%http://www.lyricwiki.org .RE .IP "13." 4 Google .RS 4 \%http://www.google.com .RE .IP "14." 4 id3lib .RS 4 \%http://id3lib.sourceforge.net .RE .IP "15." 4 libogg .RS 4 \%http://xiph.org/ogg/ .RE .IP "16." 4 libvorbis und libvorbisfile .RS 4 \%http://xiph.org/vorbis/ .RE .IP "17." 4 libFLAC++ und libFLAC .RS 4 \%http://flac.sourceforge.net .RE .IP "18." 4 TagLib .RS 4 \%http://taglib.github.io/ .RE .IP "19." 4 mp4v2 .RS 4 \%https://mp4v2.org/ .RE .IP "20." 4 Chromaprint .RS 4 \%http://acoustid.org/chromaprint .RE .IP "21." 4 libav .RS 4 \%http://libav.org/ .RE .IP "22." 4 FDL .RS 4 \%http://www.gnu.org/licenses/licenses.html#FDL .RE .IP "23." 4 GPL .RS 4 \%http://www.gnu.org/licenses/licenses.html#GPL .RE .IP "24." 4 Qt .RS 4 \%https://www.qt.io .RE .IP "25." 4 KDE .RS 4 \%http://www.kde.org .RE