Cover mit verschieben


#1

Hallo Leute,

ich benutze schon seit einiger Zeit MP3Tag zum Taggen meiner MP3-Sammlung und habe mal eine Frage bezüglich der Cover.

Ich habe jedes Album in einem separaten Verzeichnis, in dem auch ein Cover (folder.jpg) liegt. Jetzt möchte ich mit der Funktion "Konverter => Tag zu Dateinamen" eine neue Verzeichnisstruktur an Hand der Tags erstellen.

Leider wird beim Ausführen nich das Cover mit verschoben.

Gibt es eine Möglichkeit, das Cover ebenfalls mit zu verschieben?

Könnte mir folgende Vorgehensweise vorstellen:

  1. MP3 entsprechenden der Tags verschieben
  2. Prüfen, ob JPG im alten Verzeichnis vorliegen
  3. Wenn Prüfung positiv, JPG ins neue Verzeichnis kopieren

Ist soetwas überhaupt möglich?

Gruß
Greyhound

PS. in einzelfällen liegen neben dem Cover auch Bilder von Back, Inlay und CD vor.


Cover integrieren
_DIRECTORY regular expression
Ordnerstruktur nach Mp3-Tags organisiert
Umbenennen mit Ordnern
#2

... erst importieren, dann verschieben ...
Der Grund, Cover im MP3-Verzeichnis zu speichern ist, bei der Wiedergabe z.B. mit WinAmp dieses angezeigt zu bekommen. Ich habe mir diesen Komfort, separat in Bildateien gespeicherte Cover mit zu verscheiben, auch schon vor Jahren gewünscht. Aber wie soll das automatisch gehen? Ich hatte auch noch andere "zugehörige" Dateien im jeweiligen Verzeichnis wie PDF, TXT usw. Ich wollte keine Redundanzen. Meine Struktur (Konverter Tag-Dateiname) lautet ...\InterpretenAlben\%sortBuchstabe%\%artist%$num(%year%,4) - %album%$num(%track%,2). %title% Die Bildateien sollten also in das Verzeichnis $num(%year%,4) - %album% verschoben werden. Das musste ich manuell erledigen, also von Verzeichnis zu Verzeichnis jedes Cover "hinterher" verschieben. Eine langwierige und fehlerträchtige Arbeit.

Für die Vorgehensweise

  1. MP3 entsprechenden der Tags verschieben
  2. Prüfen, ob JPG im alten Verzeichnis vorliegen
  3. Wenn Prüfung positiv, JPG ins neue Verzeichnis kopieren
    habe ich keine direkte Lösung und mit dem Programm MP3tag allein erscheit mir dieses auch als nicht möglich!

Hier nun meine jetzige Arbeitsweise, die ich als "Halbautomatik" bezeichnen würde. Zumindest wird das fehlerträchtige "Cover-hinterher-verschieben" vermieden.

Vorüberlegung:
Um bei der Wiedergabe z.B. mit WinAmp das Cover angezeigt zu bekommen, reicht es, wenn es mit in den Tags gespeichert ist: siehe %_covers%. Wenn es ausnamsweise mal gedruckt werden sollte, ließe es sich genauso schnell exportieren.

Meine Vorgehensweise
1.) Alle Frontcover in allen Verzeichnissen automatisch in folder.jpg umbenennen.

 Aktionen-Formatstring: Album-Cover aus Datei importieren "folder.jpg" auf die gesamte MP3-Sammlung anwenden.
 In denjenigen MP3s, in dessen Verzeichnis keine Coverdatei enthalten ist, wird eben kein Cover importiert, vgl. %_covers%. 

2.) Alle Frontcover in allen Verzeichnissen löschen (folder.jpg).
3.) Nun erst die beabsichtigte Verschiebung/Umbenennung per Konverter Tag-Dateiname (siehe oben) durchführen.

 Alle importierten Cover werden automatisch "mitgeschleppt"; zwar nicht als Datei, aber inhaltlich.

4.) Ggf. alle leeren Verzeichnisse löschen.

Diese Vorgehensweise berücksichtigt nicht "PS. in Einzelfällen liegen neben dem Cover auch Bilder von Back, Inlay und CD vor."

Es ließe sich jedoch realisieren, in dem man iterativ vorgeht. Also das ganze schrittweise wiederholen mit backcover.jpg usw.

Bei meinen 50000 MP3s handelt es sich noch (leider) um ein Mischsystem. Einige Cover sind importiert, einige liegen noch als Datei im jeweiligen Verzeichnis. Ich vermeide jedoch konsequent Redundanzen, in dem nicht beides gleichzeitig vorkommt. Auf jeden Fall achte ich bei zukünfigen Formatierungen darauf, dass sich aus den vorhandenen Datenstrukturen mit pauschalen Aktionen immer eine neue Version herstellen läßt, ohne Besonderheiten beachten zu müssen. Z.B. sind alle verfügbaren Informationen NUR in den Tags gespeichert, um daraus bei Bedarf Datei/Verzeichnis-Namen zu generieren. (NIEMALS mal hier, mal da).

Ich möchte hier das oben angesprochene ungelöste Problem "Mehrfachcover" front-back-cd-inlay zur Diskussion stellen. Im folgendem gehe ich davon aus, dass jedes Album sein eigenes Verzeichnis hat, siehe eingangs . ... meine Struktur/Konverter Tag-Dateiname und auch die von "Greyhound".
Eine Variante wäre die Möglichkeit, jede JPG-Datei in jede MP3-Datei eines Verzeichnisses zu importieren. Das ist jedoch redundant und kostet unnötigen Speicherplatz, jedenfalls dann in nicht unerheblicher Menge, wenn man höchauflösende Cover (900x900px) speichern will.
Eine andere Variante wäre die Möglichkeit, in jede MP3-Datei eines Verzeichnisses eine andere JPG-Datei zu speichen, z. B.
front - Track1
back - Track2
cd - Track3
inlay1 - Track4
inlay2 - Track5 usw. Das vermeidet Redundanz. Allerdings ist es nicht mehr so einfach möglich die Aktion Album-Cover aus Datei importieren "folder.jpg" auf die gesamte MP3-Sammlung anzuwenden. Im Gegensatz zum Althergebrachten, Cover im Album-Verzeichnis als Datei zu speichern, würde bei der Wiedergabe z.B. mit WinAmp bei den letzten Tracks (i. d. B. ab Track6) kein Cover mehr angezeigt werden.

Wer hat hier konstruktive Vorschläge? Wie werden lyrics.txt importiert?


Suche Inspiration für gute (neue) Musikdatenstruktur
Verzeichnisstruktur
#3

Zu bedingtes importieren von Cover habe ich konstruktive Vorschläge. Wie lyrics.txt importiert werden kann ich nicht sagen. Ich unterstelle folgede Absicht:
Es sollen nur Cover importiert werden, wenn noch keine vorhanden sind. In jeden Track eines Albums soll ein anderes Cover (Dein Beispiel ging von 5 aus) importiert werden. Du kannst das mit IF-Funktionen lösen.

Allgemein bedeutet, WENN x und y gleich sind, DANN wird z ausgeführt SONST w.
$if($eql(x,y),z,w)

  1. Bedingung (x1): NUR bei Track 1 wird das Cover front.jpg importiert, SONST entfällt.
    $if($eql(%track%,1),front.jpg,)

  2. Bedingung (y2): Es wird KEIN Cover importiert, WENN schon eines oder mehrere vorhanden sind.
    $if($geql(%_covers%,1),,front.jpg)

Da beine Bedinungen zutreffen sollen ist für die UND-Verknüfung der gleiche WENN-DANN-Sonst-Aufbau nötig. Also muss negiert werden mit $not(x).
Die oben genannte 2. Bedingung wird gleichermaßen erfüllt durch:
$if($not($geql(%_covers%,1)),front.jpg,)

In die UND-Verknüfung $and(x1,y2) beide Bedinungen eingestetzt
x1. $eql(%track%,1)
y2. $not($geql(%_covers%,1))

"Beide Bedingungen" nenne ich x3:
$and($eql(%track%,1),$not($geql(%_covers%,1)))

x3 wiederum eingesetzt in $if(x3,y,z) ergibt damit
$if($and($eql(%track%,1),$not($geql(%_covers%,1))),front.jpg,)

y fügt front.jpg ein, z entfällt (fügt nicht also nichts ein)!

Dieses muss für Dein angedachtes Beispiel für jeden Track mit der entsprechenden Datei wiederholt werden, kann aber alles innerhalb einer Aktion abgearbeitet werden. Für Dein Beispiel würde es dann so aussehen:

$if($and($eql(%track%,1),$not($geql(%_covers%,1))),front.jpg,)
$if($and($eql(%track%,2),$not($geql(%_covers%,1))),back.jpg,)
$if($and($eql(%track%,3),$not($geql(%_covers%,1))),cd.jpg,)
$if($and($eql(%track%,4),$not($geql(%_covers%,1))),inlay1.jpg,)
$if($and($eql(%track%,5),$not($geql(%_covers%,1))),inlay2.jpg,)

Ich möchte hier das oben angesprochene Thema "Mehrfachcover" front-back-cd-inlay zur weiterhin Diskussion stellen.


"Wenn artist xy, dann Genre xy" automatisieren
Bilder einfügen
Als Cover jeweils die Folder.jpg aus dem Ordner verwenden
#4

Die Anregung von Grayhound "Könnte mir folgende Vorgehensweise vorstellen:

  1. MP3 entsprechenden der Tags verschieben
  2. Prüfen, ob JPG im alten Verzeichnis vorliegen
  3. Wenn Prüfung positiv, JPG ins neue Verzeichnis kopieren"
    ist natürlich eine Fantasiegeschichte. Aber pragmatisch auf Grund des vorherigen Beitrages wäre folgendes möglich:
  1. jpg's importieren
  2. jpg's löschen
  3. MP3's verschieben
  4. leere Verzeichnisse löschen (geht nicht mit mp3tag)
  5. jpg's exportieren

... alles wäre beim Alten.


#5

zu 4. leere Verzeichnisse löschen gibt es ein Tool "Tipp: Leere Verzeichnisse aufspüren und entfernen" von PCWELT "pcwEmptyFolder"
http://www.pcwelt.de/know-how/tipps_tricks...lgemein/108767/


#6

Anstelle der Speicherung von einzelnen Bildern in mehreren mp3 Dateien mit dem Zweck, die Bilder von einem Ordner zum anderen zu übertragen, kann man auch nur eine einzige Transportcontainer mp3 Datei benutzen, in der alle Bilder gespeichert werden.

Der Transportcontainer muss keine Musik enthalten, und kann z. B. auf der DOS Kommandozeile im betreffenden Ordner so erzeugt werden: COPY NUL: CoverContainer.mp3
Dieser Vorgang kann auf alle Ordner angewendet werden, indem z. B. ein Mp3tag Export Skript eine DOS Stapeldatei erzeugt mit einem COPY Befehl je Ordner. Diese Stapeldatei lässt man dann einmal laufen und es werden in allen angesprochenen Ordnern leere CoverContainer.mp3 Dateien erzeugt.

Der gleiche Zweck, die Erzeugung eines leeren Transportcontainers, kann erreicht werden, indem man ein Export Skript erstellt mit der einzigen Anweisungszeile $filename(CoverContainer.mp3) Option: Eine Datei pro Verzeichnis.
Damit wird eine Datei von 2 Byte Größe erzeugt (CR-LF-Sequenz), was aber nicht stört.

In diesen Transportcontainer "CoverContainer.mp3" füllt man dann alle Bilder ein, die transportiert werden sollen, z. B. mit einer Aktion oder mehreren Aktionen "Album-Cover aus Datei importieren".

Weil bei dem Import in die CoverContainer.mp3 Datei die Dateinamen der Bilddateien nicht mit gespeichert werden, muss man sich noch etwas einfallen lassen, wie auch die Dateinamen mit übertragen werden können, also im Transportcontainer zu speichern sind, damit anschließend im Zielordner die Bilder mit ihren jeweils zugehörigen Dateinamen ordnungsgemäß exportiert werden können.

So, bis hierhin erst einmal die Idee.

DD.20080327.1050.CET


Suche Inspiration für gute (neue) Musikdatenstruktur
#7

Sehr interessante Idee mit dem 'Cover-Tranportcontainer', diesen automatisch zu erzeugen und zu befüllen. Doch diesen kontrolliert zu 'entleeren' ist das Problem: ...muss man sich noch etwas einfallen lassen, wie auch die Dateinamen mit übertragen werden können...

Weshalb also die einzelnen Tracks als nicht selbst zum 'Container' machen? Die folgende Methode ist allerdings in der Stückzahl Cover pro Album begrenzt, wie diese Anzahl Tracks hat. Ferner wird eine Album-Struktur vorausgesetzt ...\%album%\%track%. %title%

Die Entwicklung der 'Formel' steht irgendwo im Forum, habe ich aber nicht mehr wieder gefunden, deshalb hier zwei Einzel-Links:

Cover integrieren
Wenn verschiedene Cover bestimmten Tracks zugeordnet werden sollen, geht das z.B. mit
$if($and($eql(%track%,1),$not($geql(%_covers%,1))),front.jpg,)
$if($and($eql(%track%,2),$not($geql(%_covers%,1))),back.jpg,)
$if($and($eql(%track%,3),$not($geql(%_covers%,1))),cd.jpg,)
$if($and($eql(%track%,4),$not($geql(%_covers%,1))),inlay1.jpg,)
$if($and($eql(%track%,5),$not($geql(%_covers%,1))),inlay2.jpg,)
usw.

Cover integrieren
Diese Variante fügt IMMER ein Cover ein. Entweder wird es angehängt oder das vorhandene überschreiben, wenn der Schalter ‚existierende Cover löschen’ aktiviert ist.
$if($eql(%track%,1),front.jpg,)
$if($eql(%track%,2),back.jpg,)
$if($eql(%track%,3),CD.jpg,)
$if($eql(%track%,4),inlay1.jpg,)
$if($eql(%track%,5),inlay2.jpg,)
usw.

Bei Bedarf werden die Cover nach dem gleichen Muster exportiert (Achtung: dabei *.jpg weglassen)


#8

Ich kann schon eine beliebige Anzahl von Bilddateien in eine CoverContainer.mp3 einladen sowie ein Tag Feld erzeugen mit einer Liste der Dateinamen in der Reihenfolge der Speicherung.
(Gibt es eine Obergrenze für die Anzahl von Tags resp. Bildern in einer mp3 Datei?)

Aber das Entladen der Bilder macht erhebliche Schwierigkeiten, weil die Zuordnung des jeweiligen Dateinamens zum zugehörigen Bild beim Cover Export nicht möglich ist (die Beschränkung liegt in der Arbeitsweise der Exportfunktion und im Funktionsumfang der Mp3tag Skriptsprache generell).

Weil notfalls auch Bilder vom Quellordner zum Zielordner transportiert werden müssen, wenn der Quellordner gar keine ordentliche mp3 Datei enthält, z. B. könnte der Artistenordner Bilder des Artisten enthalten sowie Unterordner mit den Alben, aber eben keine mp3 Dateien.

DD.20080327.2229.CET


#9

Ein Vorschlag:
An alle Namen der vorhandenen Bilddateien (*.jpg, *.png, *.gif etc.) die Endung .mp3 anhängen.
Mp3tag kann diese Dateien dann sehen und zusammen mit den normalen mp3 Dateien verschieben.
Hinterher muss man dann alle diese besonderen Namen der Bilddateien wieder auf den Originalzustand zurückändern.
Das Umbenennen ließe sich durch Kommandozeilen Stapeldateien erledigen, die über Exportskripte von Mp3tag erzeugt werden.

Beispiel:
Umbenennen von "cover.jpg" nach "$.cover.jpg.mp3".
Schreibschutzattribut beachten (entfernen).
Mit Mp3tag verschieben.
Umbenennen von "$.cover.jpg.mp3" nach "cover.jpg".

DD.20080329.1530.CET


Verzeichnissname ändern...
Albumcover im Ordner oder im Tag??
Am Grübeln, wie ich es am Besten sortiert bekomme
#10

Der Vorschlag gefällt mir wegen seiner Einfachheit. Wird so von mir das nächste mal angewandt.


#11

Noch eine Anregung dazu:
Auch eine Datei "$.cover.jpg.mp3" lässt sich mit Mp3tag taggen (%artist%, %album% usw.) und dann mit einem passenden Formatstring via %_filename% verschieben.
Nach dem Verschieben kann der komplette ID3 Tag ausgeschnitten bzw. gelöscht werden und die jpg Datei kommt unversehrt wieder zum Vorschein.

DD.20080421.1934.CEST


#12

Ich habe das obige Beispiel mal durchprobiert:

  1. Die Datei "cover.jpg" wird von Mp3tag nicht "gesehen", aber kann mit Paint geöffnet werden.
  2. Umbenennen von "cover.jpg" nach "$.cover.jpg.mp3", aber wird von Paint nicht mehr geöffnet.
  3. Die Datei "$.cover.jpg.mp3" wird von Mp3tag nun "gesehen".
  4. Ich habe Tags der Datei "$.cover.jpg.mp3" mit Mp3tag geändert bzw. hinzu gefügt.
    Mit Mp3tag verschieben.
  5. Zurück umbenennen von "$.cover.jpg.mp3" nach "cover.jpg"
  6. Die Datei "cover.jpg" kann von Paint nicht mehr geöffnet werden.
    Das Schreibschutzattribut wurde beachtet.

Wo liegt mein Überlegungsfehler?


#13

Ich weiß nicht was du dir alles überlegt hast ... vielleicht hast du nur einen Arbeitsschritt übersehen.

Die Methode funktioniert so:

  1. Umbenennen einer beliebigen Datei zur Extension mp3
    (z. B. von "Bild.jpg" nach "_Bild.jpg.mp3")

  2. Tagfelder hinzufügen
    (getestet mit "TagRead(Tag Types) = ID3v2.4(ID3v1 ID3v2.4)")

  3. Datei verschieben

  4. ID3 Tags aus der Datei entfernen

  5. Umbenennen zum vorherigen Dateinamen
    (z. B. von "_Bild.jpg.mp3" nach "Bild.jpg")

Das geht nicht nur mit Bilddateien, sondern auch mit Textdateien, die das "ID3 Embedding" unverändert überstehen.

DD.20080507.2053.CEST


Zwei Aktionen miteinander verbinden oder richtig anordnen
Alle Dateien des Verzeichnisses mit verschieben
#14

Bei meiner oben dokumentierten Überlegung besteht der Fehler darin, dass vor Punkt 5 "ID3 Tags aus der Datei entfernen" fehlt. Vielen Dank für Deine Hilfestellung. Nach dieser Ergänzung funktioniert Dein Verfahren einwandfrei.

Beim Konverter habe ich aber leider nur die Funktion "Alle Tags entfernen, ausser". Das letzte Tag muss ich per Hand entfernen.

Wie ich das Ganze batch-mäßig hinbekommen soll, weiss ich noch nicht. Dies Thema muss ich erstmal auf einen späteren Zeitpunkt verschieben.


#15

Mit "ID3 Tag entfernen" ist nicht das Löschen von einzelnen Tagfeldern gemeint, sondern das Löschen des gesamten ID3 Tags und das geht leider noch nicht mit einer Aktion, sondern nur manuell durch "Datei/Tag Entfernen [Strg+R]".

DD.20080508.1304.CEST


#16

Danke für den Hinweis! Inzwischen habe ich noch folgendes ausprobiert: Zweimaliges Anwenden des Konverters.

  1. die Funktion "Alle Tags entfernen, ausser %artist%"
  2. die Funktion "Alle Tags entfernen, ausser %title%"

#17

Probiere doch 'mal: "Alle Tags entfernen, ausser %dummy%"
Was ergibt das?

DD.20080508.1356.CEST


#18

Die Eingaben dort ohne % Zeichen
Es sollte klappen wenn man ein Tagfeld eingibt, das man nicht in seinen Dateien hat, z.B. einfach a oder dummy, es ist beliebig.


#19

auch gut!


#20

Nahezu beliebig, siehe [F] Mp3tag Defekt nach "Tag-Felder entfernen außer ...", nur ein einziges Semikolon sollte es nicht sein.
Man kann aber einen Punkt oder ein Leerzeichen in das Dialogfeld eintragen und der Tag wird komplett entfernt.

DD.20080509.0939.CEST