Siehe auch:
Cover Bildformat anzeigen ändern
Manchmal muss man bereits in die Musikdatei eingebettete Bilder grafisch bearbeiten und danach in die Musikdatei zurück betten bzw. das vorhandene alte Bild gegen das neue Bild austauschen.
Um für einen erfolgeichen Bild Export und Import eine nachvollziehbare Systematik zu haben, muss man sich doch wieder etwas anstrengen, auch noch in der aktuellen Mp3tag Version 2.48.
Was den Export und Import einfach machen würde, das wäre eine eindeutiger Name für jedes exportierte Bild.
Weil Musikdateien auch mehrere Bilder enthalten können, muss die Zuordnung jedes Bildes zu seiner Trägerdatei erkennbar und nachvollziehbar sein, damit nach dem Export auch der Import erfolgreich gelingen kann.
Welche eindeutigen Merkmale hat eine Musikdatei?
Einzelne Werte wie Artist, Album, Track usw. sind ganz bestimmt keine eindeutigen Merkmale.
Eine Kombination aus Artist+Album+Track kann vielleicht schon eine gewisse Sicherheit für die Zuordnung herstellen, aber auch hierbei sind doppelte Namen durchaus zu erwarten.
Ein ziemlich dauerhafter eindeutiger Wert ist der MD5 Hash Wert des Audioteils der Musikdatei.
Mp3tag kann diesen Wert berechnen und stellt ihn als Dateieigenschaft zur Verfügung - allerdings nur im Bereich "Datei/Export" - leider nicht im Bereich "Aktionen".
Es wäre wünschenswert, die Hash Dateieigenschaften auch in den Aktionen benutzen zu können.
Denn dann könnte man ein benutzerdefiniertes Tag-Feld anlegen mit dem MD5 Audio Hash.
Für den Export und Import von Bildern kann man die MD5 Zeichenkette als eindeutige und reproduzierbare Zuordnung benutzen.
Aber die Berechnung des MD5 Audio Hash ist eine zeitraubende Angelegenheit.
Für den Zweck der eindeutigen Identifizierung gibt es auch andere Methoden, zum Beispiel die Erzeugung einer GUID Kennung.
http://de.wikipedia.org/wiki/Globally_Unique_Identifier
Eine GUID vom System zu holen ist sehr_sehr viel schneller, als einen MD5 Hash zu berechnen, zu berechnen, zu berechnen, zu berechnen, zu berechnen, zu berechnen, zu berechnen.
Vorschlag an den Entwickler Florian Heidenreich:
Bitte eine Funktion $guid() implementieren, die bei jedem Aufruf eine neue GUID liefert.
Damit kann man z. B. ein benutzerdefinertes Tag-Feld füllen und "Cover Export - externe Cover Bearbeitung - Cover Import" wäre mit GUID als Cover Dateiname ein sehr einfacher Prozess.
Bis zur Implementierung der Funktion $guid() muss man sich irgendwie behelfen, zum Beispiel durch die Kombination von Tag-Feld Inhalten, um möglichst eindeutige Zuordnungen zu gewährleisten.
Beispiel Cover Export
Formatstring: 'O:\COVERS'%ARTIST%'---'%ALBUM%'---'%TRACK%
Allerdings können dabei durch Sonderzeichen in den Tag-Feldern ungültige Dateinamen entstehen. Mit der Funktion $validate() kann der auszugebende Dateipfadname gesäubert werden.
Allerdings funktioniert die Funktion $validate nicht im Formatstring beim Cover Export.
Formatstring: O:\COVERS$validate(%ARTIST%'---'%ALBUM%'---'%TRACK%)
Das erzeugte im Test im Zielordner Dateien nach dem Muster
"(1).jpg"
"(2).jpg"
"(3).jpg"
und so weiter.
Das ist ein Fehler.
Auch das funktioniert nicht:
Formatstring: $validate('O:\COVERS'%ARTIST%'---'%ALBUM%'---'%TRACK%)
Das erzeugt in jedem Ursprungsordner Dateien nach dem Muster
".jpg"
"(1).jpg"
und so weiter.
Das ist ein Fehler.
Wenn man sich die erzeugten Dateinamen anschaut (ohne Verwendung von $validate()), dann stellt man fest, dass Mp3tag dennoch automatisch eine Validierung vorgenommen hat wie es die Funktion $validate() auch tun würde.
Das erscheint zunächst vernünftig und gut, stellt aber für den folgenden Import Vorgang eine Hürde dar.
Denn beim Cover Import läuft der konstruierte Dateiname nicht durch die Mp3tag interne Validierung, so dass der konstruierte Dateiname vom gespeicherten Dateinamen abweichen kann. So werden manche Bilddateien nicht importiert.
Dadurch gibt es keine Zuordnung zwischen der exportierten Bild Datei und der ursprünglichen Trägerdatei. Cover Bilder können so nicht automatisch zurück gebettet werden.
Als Ausweg kann man eine selbstgebaute Validierung verwenden.
Damit ergeben sich die folgende Formatstrings:
<!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto--><b><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->Export Formatstring:<!--colorc--></span><!--/colorc-->
<!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->O:\COVERS\<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#800080--><span style="color:#800080"><!--/coloro-->$replace<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->(<!--colorc--></span><!--/colorc--><!--coloro:#0000a0--><span style="color:#0000a0"><!--/coloro-->%ARTIST%<!--colorc--></span><!--/colorc--><!--coloro:#0000a0--><span style="color:#0000a0"><!--/coloro-->%ALBUM%<!--colorc--></span><!--/colorc--><!--coloro:#0000a0--><span style="color:#0000a0"><!--/coloro-->%TRACK%<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--> <!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->/<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->?<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->*<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->"<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro--><<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->><!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->|<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->:<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->)<!--colorc--></span><!--/colorc-->
<!--coloro:#000000--><span style="color:#000000"><!--/coloro-->Import Formatstring:<!--colorc--></span><!--/colorc-->
<!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->O:\COVERS\<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#800080--><span style="color:#800080"><!--/coloro-->$replace<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->(<!--colorc--></span><!--/colorc--><!--coloro:#0000a0--><span style="color:#0000a0"><!--/coloro-->%ARTIST%<!--colorc--></span><!--/colorc--><!--coloro:#0000a0--><span style="color:#0000a0"><!--/coloro-->%ALBUM%<!--colorc--></span><!--/colorc--><!--coloro:#0000a0--><span style="color:#0000a0"><!--/coloro-->%TRACK%<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--> <!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->/<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->?<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->*<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->"<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro--><<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->><!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->|<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->:<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->,<!--colorc--></span><!--/colorc--><!--coloro:#000000--><span style="color:#000000"><!--/coloro-->)<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->.jpg<!--colorc--></span><!--/colorc--><!--coloro:#008080--><span style="color:#008080"><!--/coloro-->'<!--colorc--></span><!--/colorc-->
</b><!--fontc--></span><!--/fontc-->
Mp3tag erzeugt bei Dateien mit mehreren Cover Bildern entsprechend mehrere Cover Bilddateien nach dem Muster ...
ArtistAlbum101.jpg
ArtistAlbum101.jpg.jpg
ArtistAlbum101.jpg.jpg.jpg
oder auch
ArtistAlbum201.jpg
ArtistAlbum201.jpg.png
ArtistAlbum201.jpg.png.png
oder auch
ArtistAlbum301.jpg
...
ArtistAlbum301.jpg.png.jpg.png.jpg
... je nachdem in welcher Reihenfolge die "jpg" oder "png" Dateien in der Trägerdatei gespeichert sind.
Obwohl diese Dateinamen doch eher als Fehler zu betrachten sind, erlauben sie schließlich,
dass auch die Cover Bilder Nr. 2 und Nr. 3 usw. durch einzelne Import Aktionen wieder importiert werden können.
Wenn "jpg" und "png" Dateien gemischt in einer Trägerdatei vorkommen, dann muss für jede auftretende Kombination die entsprechende Import Aktion angelegt werden.
Das läuft ganz gut, weil Mp3tag keinen Fehler ausgibt, wenn es keine Datei zu einem bestimmten Namen gibt.
Mit einer GUID je Trägerdatei und einer laufenden Nummerierung je Bild wäre der Cover Export - Import einfacher.
So etwa nach dem Muster ...
Trägerdatei1.Bild1
Trägerdatei1.Bild2
Trägerdatei1.Bild3
8FE157C842D52E48B3DD04F8AC5AD258(0).jpg
8FE157C842D52E48B3DD04F8AC5AD258(1).jpg
8FE157C842D52E48B3DD04F8AC5AD258(2).jpg
oder "natürliche Zählung" ab 1
8FE157C842D52E48B3DD04F8AC5AD258(1).jpg
8FE157C842D52E48B3DD04F8AC5AD258(2).jpg
8FE157C842D52E48B3DD04F8AC5AD258(3).jpg
oder auch so (besser lesbar):
{97FF926C-F737-4F95-8A13-1E3F6D0CB0E8}.1.jpg
{97FF926C-F737-4F95-8A13-1E3F6D0CB0E8}.2.png
{97FF926C-F737-4F95-8A13-1E3F6D0CB0E8}.3.png
Für den Zweck (siehe oben Punkt 1) "Bild Export - externe Bild Bearbeitung - Bild Import" spielt die Lesbarkeit dieser temporären Dateinamen sowieso keine Rolle.
Und wer es braucht, der setzt %ARTIST'---'%ALBUM%'---'%TRACK noch davor, was aber für den folgenden Import unbedeutend ist, weil die GUID Nummer die Referenz ist.
Die Hauptsache ist, dass eine eindeutige Zuordnung von Bild zu Trägerdatei und der symmetrische Export - Import gewährleistet ist.
DD.20110130.1336.CET
Übrigens ...
... kann man sich auch einen GUID Generator besorgen und sich eine Liste mit GUIDs erzeugen.
Mit dem Konverter "Textdatei-Tag" lassen sich die GUID Nummern in ein Tag-Feld "MY_GUID" in die zu bearbeitenden Dateien einfügen und in den Aktionen benutzen.
DD.20110130.1343.CET
Edit.DD.20111210.0848.CET