Cover zuordnen: frage zu unterschiedlichen Pfaden / Strukturen

Hallo zusammen,

ich hab' ein kleines Problem beim zuordnen von Images als (Front-)Cover, hoffe, da kann mir jemand weiterhelfen...

Vorweg, meine Struktur sieht zu 95% folgendermaßen aus (ich hoffe, verständlich notiert):
Artist\Album[cdN]\audiofiles.*
cdN --> optional, enthält die cd-nummer (z. b. cd01, cd02, usw. usf.)
die Images für's cover haben folgenden aufbau: artist - album -cover.[jpg|png]

Die Cover ordne ich per Aktion mit folgendem String / Code zu: ..*%album%* -cover*

Das klappt i. d. R. auch gut, habe allerdings Probleme, wenn im Pfad nun doch noch ein Folder namens "cdN" vorhanden sein sollte, denn dann passt mein relativer Pfad nicht mehr. - Mach ich den wieder so, dass dafür passt (ein weiteres ".." rein), dann passt wiederum nicht mehr bei den Files ohne "cdN". Ich dachte mir, dass man da evtl. eine Abfrage nimmt, a la "if(%_folderpath% has|contains|whatever...,...,...), scheitere aber daran.

  1. Ist der Ansatz überhaupt korrekt, bzw. möglich, dass ich innerhalb der Aktion ein 'if...' nutze?
  2. wenn ich auf "cdN" abfrage, dann muss das ja irgendwie mit einem regulären Ausdruck passen, also in etwa "cd+[0-9]", oder.
  3. ich hätte jetzt für die erste Alternative in der if-Abfrage "....*%album%* -cover*", für die zweite "..*%album%* -cover*" genutzt

kann mir vllt. jemand auf die Sprünge helfen? - Wär' toll...

woelfchen

? So etwa wie in diesem Thread ...
/t/13392/1

... oder so?

$if($eql($left($lower(%_directory%),2),'cd'),'..','.')'\cover\cover.jpg'

DD.20140120.2056.CET

Achtung: Das sind Beispiele zum Weiterdenken!

DD.20140120.2116.CET

habe mal testhalber in ein temporäres Feld $strchr(%_directory%,cd+[0-9]) per Tag-Feld formatieren setzen lassen, da wird mir schon korrekt '0' bzw. '1' ausgegeben. Allerdings zeigt if($strchr(%_directory%,cd+[0-9])>0,2hoch,1hoch) nur sich selbst, die function strchr ausgewertet an (if(0>0,2hoch,1hoch), bzw. if(1>0,2hoch,1hoch)).

woelfchen

mit dem Konstrukt aus dem verlinkten Thread komm' ich nicht weiter, und dein zweiter vorschlag liefert folgendes:
Album-Cover aus Datei importieren "$if($eql($left($lower(%_directory%),2),'cd'),'..','.')'*%album%* -cover*'" (Front Cover): Auf die Datei F:\work\temp\artist\album.*%album%* -cover* kann nicht zugegriffen werden.
Album-Cover aus Datei importieren "$if($eql($left($lower(%_directory%),2),'cd'),'..','.')'*%album%* -cover*'" (Front Cover): Auf die Datei F:\work\temp\artist\album\cd01..*%album%* -cover* kann nicht zugegriffen werden.
Album-Cover aus Datei importieren "$if($eql($left($lower(%_directory%),2),'cd'),'..','.')'*%album%* -cover*'" (Front Cover): Auf die Datei F:\work\temp\artist\album\cd02..*%album%* -cover* kann nicht zugegriffen werden.

es sind aber bereits unterschiede zu erkennen :wink:

bin ja durchaus gewillt, dies zu tun und auch dabei, aber sobald ich eines dieser Konstrukte nutze, die im Grunde genommen schon korrekt unterscheiden (entweder "$if2($eql($left($lower(%_directory%),2),'cd'),'..')'..*%album%* -cover*'" oder "if2($strchr(%_directory%,cd+[0-9]),'..')'..*%album%* -cover*'" klappt ja die Ausführung von "..*%album%* -cover*" nicht mehr, wie wenn es alleine steht. Und dort ist mein Problem...

woelfchen

Der Formatstring enthält mehrmals Sternchen * Zeichen. Wofür sollen die gut sein?
Das Sternchen gehört zu den nicht erlaubten Zeichen in Dateipfadnamen.
Siehe auch dort ...
[F] $validate() broken?

In der Aktion "Album-Cover aus Datei importieren" muss der "Formatstring für Cover-Dateiname" eindeutig zu einer existierenden Datei führen.

DD.20140121.0959.CET

Da sind überall zu viele Apostrophe drinn am Ende bzw. falsch platziert:
Sonst wird %album% nicht ausgewertet.

z.B.
$if($eql($left($lower(%_directory%),2),'cd'),'..','.')'*%album%* -cover*'
muss so ein:
$if($eql($left($lower(%_directory%),2),'cd'),'..','.')*%album%* -cover*

oder die Variante: Wenn 'cd' vorhanden dann 2x '..' - sonst 1x

$if($eql($left($lower(%_directory%),2),'cd'),'..',)'..*'%album%* -cover*

Die * sind Wildcards wie bei Dos

wie dano schreibt, sind wildcards. Und mich wunderte eben, warum der String "..*%album%* -cover*" einzeln funktionierte, aber nicht in der unterscheidung. - Hatte aber auch nicht gesehen, dass die apostrophe falsch waren. - Wenn ich das gesehen hätte, wäre deine vorgeschlagene Lösung ja auch korrekt gewesen.

@dano: der string tut's

@DetlevD & dano: dank' euch beiden!

kleiner Hinweis an dieser Stelle zum Einsatz von diesen Wildcards:
wenn zwei jpg-Cover vorhanden sind ("artist - albumtitel -cover.jpg" & "artist - albumtitel -cover II.jpg"), dann wird das zweite jpg-File genommen
wenn zwei Cover vorhanden sind ("artist - albumtitel -cover.jpg" & "artist - albumtitel -cover.png"), dann wird das jpg-File genommen

woelfchen

Sorry, das hatte ich doch schon wieder vergessen. -_-

DD.20140121.2116.CET