Dateiname zu Tag

Hallo

nach stundenlanger Suche im Forum erstelle ich ein neues Thema, da ich zwar ähnliches gefunden habe aber nichts zu meinem Problem.

ich habe mp3s wo der Dateiname wie folgt aussieht.

Hans Muster 01 - MusterliedA
Hans Muster 02 - MusterliedB
Hans Muster 03 - MusterliedC
...

Wenn ich nun bei "Dateiname - Tag" den Sting %artist% %track% - %title% benutze kommt aber immer durch das Leerzeichen im Vor- und Nachname folgendes Ergebnis.

Interpret: Hans
Track: Muster 01
Titel: MusterliedA

Interpret: Hans
Track: Muster 02
MusterliedB

Interpret: Hans
Track: Muster 03
Titel: MusterliedC
.....

Kann mann Mp3Tag dazubringen, das er nur zahlen als Track übernimmt.

Oder kann ich das erst so per %artist% - %title% übernehmen das Artist "Hans Muster 01" und Titel "MusterliedA" ist und dann per Aktion ändern wobei ich dafür auch einen mir unbekannten befehl benötige.

Liebe Grüße

Vielen Dank

Björn

Hallo,

du kannst das soweit ich weiß nicht mit dem Konverter "Dateiname - Tag" machen, aber der ist prizipiell nur ein Spezialfall von der Aktion "Tag-Felder importieren".
Du kannst diese benutzen und dann dort als Quellformat folgendes eingeben:
$left(%_filename%,$sub($strstr(%_filename%, - ),4)) - $mid(%_filename%,$sub($strstr(%_filename%, - ),2),2) - $right(%_filename%,$sub($len(%_filename%),$add($strstr(%_filename%, - ),2)))

Als Formatstring musst du dann schreiben:
%artist% - %track% - %title%

Der Quellformatstring macht aus dem String "%variabel% %beliebige zwei Zeichen% - %variabel%" den String "%variabel% - %beliebige zwei Zeichen% - %variabel%". Der Dateiname muss also auch genau so aufgebaut sein, da der Quellformatstring z.B. nicht nach Zahlen sucht. Da aber deine Dateinamen so lauten, sollte es eigentlich klappen.

Eine Suchfunktion nach Zahlen besteht übrigens indirekt im Skriptbefehl "$isdigit()".

mfG
gnor

Vielleicht passt es so?

Konverter | Dateiname - Tag | ALT+2

Formatstring auswählen

Formatstring: Hans Muster 01 - MusterliedA.mp3
%artist% %artist% %track% - %title%

Vorschau
artist | Hans Muster
track | 01
title | MusterliedA

DD.20081228.1430.CET

Hallo Danke für die Tipps

Das hat mehr sehr weiter geholfen.

Grüße

Björn

das ist ja alles ganz schön aber wie bekomme ich das hin wenn ich den dateiname -> Tag formatstring:
%dummy% %artist% - %titel%

hab schon ziemlich viel mit den scriptbefehlen rumexperimentiert aber bin zu keinem schlüssigem ergebniss gekommen
bsp:

$left(%_filename%,3) - $mid(%_filename%,3,$strstr(%_filename%)) - $right(%_filename%,$sub($len(%_filename%),$add($strstr(%_filename%, - ),2)))

hoffe ihr könnt mir helfen und ich danke schonmal im vorraus

~Gruß~
HumanN

Hallo,

ich hab das jetzt so verstanden, das du als Dateinamen dieses Muster hast:
%dummy% %artist% - %titel%,
wobei %dummy% aus mehreren Wörtern bestehen kann. Stimmt das?

Bei deinem Beispiel:
$left(%_filename%,3) - $mid(%_filename%,3,$strstr(%_filename%)) - $right(%_filename%,$sub($len(%_filename%),$add($strstr(%_filename%, - ),2)))

Zum einem: Wieso nimmt der als linken Teil nur die ersten 3 Zeichen?
Zum andern fehlt bei $strstr(%_filename%) nach was er suchen soll.

Frohes neues Jahr
gnor

dir auch erstmal frohes neues

das %dummy% steht bei mir für die Tracknummer die ich nicht speichern möchte sonder neu durchnummerieren ich habe noch ein wenig rumprobiert und bin zu diesem code gekommen:

$left(%_filename%,$sub($strstr(%_filename%, - ),1),2) $mid(%_filename%,$sub($strstr(%_filename%, - ))) - $right(%_filename%,$sub($len(%_filename%),$add($strstr(%_filename%, - ),2)))

dieser hängt bei artist zwar ein leerzeichen hinter aber das hab ich dann einfach mit der $trim funktion aufgehoben :stuck_out_tongue:

danke euch allen ihr habt mir ne menge zeit erspart

eine frage hätte ich noch wieso erkennt der kein - wenn ich ihn in einem if syntax verwende z.B:
$if($mid(%_filename%,3,1)=.,$replace(%_filename%,., ),$if($mid(%_filename%,3,1)='-',$replace(%_filename%,'-', ),$if($mid(%_filename%,4,1)=.,$replace(%_filename%,., ),$if($mid(%_filename%,4,1)='-',$replace(%_filename%,'-', ),$if($mid(%_filename%,5,1)=.,$replace(%_filename%,., ),$if($mid(%_filename%,5,1)='-',$replace(%_filename%,'-', )))))))
ihr seht das ich das - schon in ' gesetzt habe aber leider ohne erfolg
und gibt es eine möglichkeit nur den ersten - zu bearbeiten

ok das Problem hab ich jetzt mit regulären ausdrücken behoben

jetzt wollte ich das Jahr ,das in Klammern steht, aus dem %_parent_directory% lesen
das wäre dann glaub ich auch mein letztes anliegen :wink:

hab ich auch ^^ jetzt nurnoch das jahr in klammern aus dem Albumnamen entfernen

hat sich auch erledigt :wink: jetzt bin ich fertig mit meinem code :smiley:
~Gruß~
HumanN

Hallo,

wenn du den Track meinst, wieso kannst du dann nicht ganz normal "%dummy% %artist% - %title%" verwenden?

Dann scheinen irgendwie bei deinem Code ... $mid(%_filename%,$sub($strstr(%_filename%, - ))) ...
auch Angaben zu fehlen. Was subtrahiert der denn von der Position, an der " - " steht? Außerdem wird bei deinem $mid-Befehl auch nur ein Zeichen zurückgegeben (ich weiß jetzt nicht, ob das beabsichtigt ist).

Zu deiner if-Bedingung: Du kannst nicht mit "=" vergleichen. Du musst da $eql() verwenden. Wahrscheinlich erkennt er deshalb den "-" nicht.

mfG
gnor

hey

das mit dem mid kapier ich grad selber nicht und den if-befehl habe ich wie gesagt mit regulären ausdrücken ersetzt.

mit dem mid befehl is irgendwie ein hammer,dass das klappt obwohl der code vollkommener schwachsinn ist ^^ naja ich hab einfach so lange rumprobiert bis es hin haute (ich hatte noch nicht die skriptbefehlsliste)

ich hab nochmal nen paar andere codes ausgetüftelt die jedoch kein ergebnis lieferten z.B.:

$left(%_filename%,$sub($strstr(%_filename%, ),1),2) $mid(%_filename%,$add($strstr(%_filename%, - ),1),$sub($strrchr(%_filename%, - ),$strstr(%_filename%, )) - $right(%_filename%,$sub($len(%_filename%),$add($strstr(%_filename%, - ),2)))

ich verstehe einfach nicht was ich falsch mache
aber das ist nicht so schlimm da ich ja den "falschen" code habe der trotzdem geht (wenn man ihn mit trim bearbeitet)

ich wollte die aktionen automatisieren also

  1. auf normalform bringen (_-> ,usw.)
  2. dateiname -> tag
  3. durchnummerieren
  4. tag -> dateiname
  5. evtl. albumname und jahr aus verzeichnis lesen

und das ist mir geglückt
danke nomal :wink:

Edit:
ich hab viel zu kompliziert gedacht es geht einfacher [(\d*)\ (.)\ -\ (.)]
~Gruß~
HumanN

Hallo

geht es nicht auch mit diesem

%_filename% und ^\s*[0-9]+\s*

so das aber auch bei solchen der richtige als track erkannt wird.

3 Tage Regen 01 - SchlechtesWetter
-

Versuche es aber im Moment mit:

"Tagfelder - Importieren" -> "Quellformat":

$sub($isdigit(%_filename%),%_filename%)

$sub(x,y) substracts y from x.
$isdigit(x) returns true if character x is a decimal number.

Bekomme aber -3 raus als track.

Wenn die Dateinamen wirklich alle ne führende Null haben, lautet der Import-String:

%artist% 0%track% - %title"

da die führende Null ein guter Trenner ist.

Alternativ:
Wenn alle Künstler aus Vornamen und Nachnamen bestehen, dann die Zahl kommt, kannst Du mit folgender Maske arbeiten:
%artist% %artist% %track% %title%
Die Menge der aneinandergehängten %artist% %artist% hängt dann ab von der Menge der Leerzeichen im Künstlernamen.
Vielleicht ist es sinnvoll, die Sammlung in mehreren Stufen umzubenennen.
Dabei ist es immer günstig, einen Trenner zwischen den Feldern zu nehmen, der nur in absoluten Ausnahmefällen verwendet wird - nach meiner Erfahrung ist dies der Unterstrich _