Aktion: "Zudieck 11.5.2007 Achtung" --> "2007.05.11"


#1

Hallo,

vor dem Abspielen von abonnierten Podcasts möchte ich sie in eine mir genehme (Standard)Form bringen. Beim Anpassen des Titels komme ich aber mit meinem Wissen und auch mit der ForumSuche leider allein nicht weiter.

Der Titel soll mit dem Erstellungsdatum im Format "2007.05.21" neu gefüllt werden (4stellig = Jahr, 2stellig = Monat/Tag).

alt Titel: "Zudieck 11.5.2007 Achtung"
neu Titel: "2007.05.11"

Kann mir da jemand helfen?

Vielen Dank
Jue

PS: vielen Dank auch für dieses starke Programm!!


#2

Hier eine Möglichkeit:

Aktionstyp: Ersetzen mit regulären Ausdrücken
Feld: TITLE
Regulärer Ausdruck: ^.+?(\d{1,2}).(\d{1,2}).(\d{4}).+$
Treffer ersetzen durch: $3.$num($2,2).$num($1,2)

[ ] Groß-/Kleinschreibung berücksichtigen

#3

Hallo Dano,

vielen Dank für Deine schnelle Hilfe! Hat prima geklappt!

Gibt es auch eine Möglichkeit, diese Lösung an Bedingungen zu knüpfen?

Beispiel hier:
[#3]
T=5 (TagFeld formatieren)
F=ALBUM
1=$if($eql($right(%artist%,7),Zudeick),Achtung Zudeick,%album%)

Nur wenn die ersten 7 Stellen von rechts in
ARTIST = "Zudeick" dann
ALBUM = "Achtung Zudeick" ansonsten
ALBUM = unverändert

Also

Nur wenn die ersten 7 Stellen von rechts in
ARTIST = "Zudeick" dann
formatiere TITLE
(gem. ^.+?(\d{1,2}).(\d{1,2}).(\d{4}).+$) ..
von "Zudieck 11.5.2007 Achtung" = "2007.05.11"

Vielleicht auch über mehrere (ggf. scriptige) Aktionen?

Vielen Dank noch einmal
Jue

In der Hoffnung, mit meinen nachfolgenden Fragen die Hilfsbereitschaft nicht über zu strapazieren ... (-:
Ich möchte es halt gern verstehen.

Meine Fragen aus dem Folgenden vorweg genommen:

  1. Die Zeichen '^' (Anfang eines String) und '$' (Ende eines String)
    Muß ein Ausdruck mit ^ beginnen und mit $ enden (ggf. nur in reg. Ausdrücken)?
    Also mit HTML-Befehlen wie

    (Anfang) und

    (Ende) vergleichbar.
    Oder haben die noch eine andere Bedeutung?
  2. Wofür wird das Fragezeichen in '.+?' benötigt?

Die Einzelteile Deines Ausdruckes mal durchgekaut:
Regulärer Ausdruck: ^.+?(\d{1,2}).(\d{1,2}).(\d{4}).+$

^
HILFETEXT: matched (verändert?) den Anfang eines Strings

Welche Bedeutung hat dieses Zeichen?

.+? = "Zudieck"
HILFETEXT: "." matched (verändert) jedes Zeichen
HILFETEXT: "+" einmal oder mehrfach
HILFETEXT: "?" nullmal oder einmal

Mit . werden also alle Zeichen berücksichtigt/verändert.
Mit + wird die Wiederholung bestimmt.
Mit ? tja, hier verläßt es mich. Es wird doch nur ein Zeichen bestimmt, oder?

Das Einmal oder Mehrfach vom PlusZeichen ist bis zum nächsten Teilbereich gültig.
Wofür braucht es das Fragezeichen?
Der Leerschritt zwischen "Zudieck" und "11" wird durch den Punkt (alle Zeichen) eingeschlossen.

(\d{1,2}) = "11"
HILFETEXT: "\d" alle Zahlen
HILFETEXT: "{1,2}" {n,m} zw. n- und m-mal wiederholt
HILFETEXT: "{n} mindestens n-Wiederholungen

{2} statt {1,2} geht nicht, weil auch Einstelliges berücksichtigt werden soll.

. = "."
Das ist die Syntax für das 'Punkt'-Trennzeichen

(\d{1,2}) = "5"
Hier haben wir die einstellige Variante von oben.

(\d{4}) = "2007"
Hier wird davon ausgegangen, dass das Ziel immer 4stellig ist.
Wenn das Ziel aber auch 2stellig "07" sein könnte, wäre (\d{2,4}) angebrachter.

.+ = "Achtung"
Der Punkt = alle Zeichen
Das Plus = bis zur nächsten Trennung, da aber Ende des FeldInhaltes, bis zum .mp3
Warum hier kein Fragezeichen wie oben?

Vielen Dank
Jue


#4

Wie die Bedingung geht hast du selber geschrieben. Jetzt muss man nur die $regexp() Funktion integrieren.
$regexp(%title%,^.+?(\d{1,2}).(\d{1,2}).(\d{4}).+$,$3.$num($2,2).$num($1,2))
Wobei hier $num() nicht funktioniert, muss man weglassen und mit einer weiteren Aktion die Nullen hinzufügen.

Falls in jedem Titel der so verändert werden soll "Zudieck" vorkommt, kann man den ja auch in den RA schreiben und braucht dann die Bedingung eigentlich nicht mehr.

^ ist ein Sonderzeichen das für den Zeilenanfang steht.
Wenn ich ^a schreibe, heisst das es wird ein a gesucht das am Anfang der Zeile steht. Wenn ich nur a schreibe kann das a überall vorkommen.

Wenn ich hinter + das ? mache verändert das die Art wie + Treffer findet.
.+ bedeutet "greedy" was heisst, das so viele Treffer wie möglich eingefangen werden.
Das Problem ist, dass . für alle Zeichen steht .+ wird dann erstmal den kompletten Titel matchen, also es hört nicht bei der ersten Zahl wegen \d auf, sonder \d gehört ja auch zu . und wird somit mit gematched.
Mit .+? wird das geändert und es wird nur so wenig wie möglich gematched, d.h. bei \d geht es dann auch mit dem Ausdruck weiter.

Für mehr Erklärungen gibts im Internet genug Sachen und Suchmaschinen die das für einen finden.


#5

Hallo Dano,

da hast Du mir sehr geholfen!

Vielen Dank