Die Funktion $replace() funktioniert eigentlich korrekt.
Das Problem wird wohl bei der Anwendung zu suchen sein.
Es stellt sich die Frage, warum hinter den Artistennamen noch ein Leerzeichen steht.
Wenn nämlich im Tag-Feld ARTIST am Ende des Textes ein Leerzeichen nicht steht, dann kann die Funktion $replace() eine Übereinstimmung nicht feststellen und das gewünschte Ersetzen findet nicht statt.
Wenn man viele Namen auf korrekte Rechtschreibung prüfen will, dann kann man das mit Mp3tag auf unterschiedliche Weisen tun, siehe folgende Beispiele.
Beispiel 1.
Aktion: Tag-Feld formatieren
Feld: ARTIST
Formatstring:
$replace(%ARTIST%,'Ac-Dc','ACDC','AC-DC','ACDC','Acdc','ACDC','Abba','ABBA','A2b','A2B','Obir','OBir','Abc','ABC','Atb','ATB','Anna Maria Zimmermann','Anna-Maria Zimmermann')
Beispiel 2.
Anfang Aktionengruppe Test_2011#20111117.DJBolly.Artist.SpellCheck.1
Hallo DetlevD,
sorry das ich erst jetzt schreibe, aber ich hatte beruflich sehr viel zu tun.
Also dein 3. Beispiel gefällt mir sehr gut und konnte es Dank deiner Hilfe auch umsetzen.
Habe da aber noch ein Paar Fragen.
1.) Beispiel wenn im Artist "vs" vorkommt, kann diese Funktion dieses auch ändern in "VS."?
2.) Wie kann ich dieses auch für den Titel umsetzen? Ich denke nur umschreiben geht wohl nicht. Bin leider in diesem Bereich noch Anfänger.
Zu 1.
Es geht hier um das lateinische Wort versus (vs.): gegen, im Sinne von gegenüber gestellt.
Es gibt mehrere Möglichkeiten.
Wie oben Post#2, Methode#3 (externe Textdatei) ...
Fittali Klotzki VS D'fitt Haie===Vitali Klitschko vs. David Haye
Wie oben Post#2, Methode#1 ...
$replace(%ARTIST%,' VS ',' vs. ',' vS ',' vs. ',' Vs ',' vs. ',' vs ',' vs. ',' VS. ',' vs. ',' vS. ',' vs. ',' Vs. ',' vs. ')
Von:
Vitali Klitschko VS David Haye
Vitali Klitschko vS David Haye
Vitali Klitschko Vs David Haye
Vitali Klitschko vs David Haye
Vitali Klitschko VS. David Haye
Vitali Klitschko vS. David Haye
Vitali Klitschko Vs. David Haye
Nach:
Vitali Klitschko vs. David Haye
oder ...
Aktion: Tag-Feld formatieren
Feld: ARTIST
Formatstring: $regexp(%ARTIST%,'\svs.?\s',' vs. ',1)
Zu 2.
Mp3tag stellt in den Benutzerdialogen die Standardnamen von Tag-Feldern bzw. von Platzhaltern in Auswahllisten zur Verfügung.
Im Manual gibt es im Abschnitt "Namen und Mapping von ID3v2/WMA/MP4 Tag-Feldern" eine Übersicht über die in Mp3tag unterstützten Tag-Felder.
Der Titel wird gespeichert im Tag-Feld TITLE und der Inhalt-Platzhalter heißt %TITLE%.
Darüber hinaus kann man auch selbst definierte Tag-Felder anlegen.
ich hätt da auch mal ne frage wenn du schon so gut bescheid weisst
wenn ich mehrere tracks umbennen will, jedoch der erste ohne (in klammer gesetzt) zusatzinfos hat und der nachfolgende jedoch schon erkennt das programm diese nicht.
das bedeutet, es muss an erster stelle, wenn alle anderen nachfolgenden titel auch in klammer gesetzte infos haben, ein titel stehen der diese infos beinhaltet :
Pascal F.E.O.S. - Km5 (Original Mix)
Pascal F.E.O.S. - Km5
so werden alle nachfolgenden mit-getagt, auch wenn zwischendrin titel ohne klammer sind, die werden ausgelassen......
Pascal F.E.O.S. - Km5
Pascal F.E.O.S. - Km5 (Original Mix)
ist die anordnung wie hier dargestellt, werden nirgendwo Klammern gesetzt. das möchte ich aber nicht. ich möchte, dass jeder track der ne klammer besitzt auch so in den tags geschrieben wird.
Vielleicht ist eine Einstellung, aber ich hab schon so vieles probiert u mache es daher immer etwas umständlicher.
Hallo thedjslowhand, dein Problem passt nicht zur Fragestellung von OP DJ Bolly in diesem Thread, außerdem verstehe ich deine Schilderung nicht, es ist besser, du machst dafür einen eigenen Thread auf und schilderst das Problem noch einmal mit anderen Worten.
Am besten ist es, die Aktion nur einmal laufen zu lassen.
Ansonsten musst du das Tag-Feld befragen, ob es bereits den ordnungsgemäßen Inhalt hat oder nicht, wenn ja, dann braucht nichts getan zu werden, wenn nein, dann muss der Inhalt ausgewechselt werden.
Weil die Funktion $replace immer ein globales Ersetzen in der Zeichenkette durchführt, wird bei jedem Aufruf jeder gefundene Treffer ersetzt, und beim wiederholten Aufruf geschieht es dann wieder so.
So wird aus 'Amigos' dann 'Die Amigos', dann 'Die Die Amigos', dann 'Die Die Die Amigos' usw.
Oder aus 'Zwei Amigos' wird 'Zwei Die Amigos'.
Oder aus 'Amigos am Amigostrand' wird 'Die Amigos am Die Amigostrand'.
Wenn aber der Suchtext in Begrenzerzeichen eingeschlossen ist, so dass er sich vom Ersatztext unterscheidet, dann verschwindet das Problem.
Anfang Aktionengruppe Test_2011#20111129.DJBolly.Replace
wenn der Suchbegriff nun aber nur die packen würde, die komplett so im Feld stehen, also
^Amigos$
oder
^Boney M$,
dann müssten "Die Amigos" nicht als Treffer gelten...
(Aber wie mache ich das mit $replace...?)
Habe mir dabei gedacht das erst einmal alle Schreibweisen zu einer gemacht werden, wie im Code bei den Hoehner. Dort werden alle Namenvarianten zu A33 und ganz zum Schluss wird dann aus A33 De Hoehner.
Achtung: Die Reihenfolge sollte so wie hier eingehalten werden.
Hmm ... blinded by the light?
Eine einfache Lösung hatte ich doch angeboten als "Aktionengruppe Test_2011#20111129.DJBolly.Replace".
Schau' noch 'mal genau hin - oder was meinst du, was man anders machen könnte?
Hmm ... ich denke, damit hast du das Problem nur auf eine andere Ebene vertagt, aber nicht gelöst.
Bei deinem Entwurf dürfen dann eben A3 oder A330 nicht vorkommen.
Schaue die angebotene Aktionengruppe "Test_2011#20111129.DJBolly.Replace" noch einmal genau an, und probiere sie aus, sie sollte eigentlich perfekt funktionieren.
Upps... ich habe leider diesen Artikel nicht gelesen bis auf "Am besten ist es, die Aktion nur einmal laufen zu lassen." Weil das nur da stand habe ich mir mal Gedanken gemacht es anders zu machen.
In der Zwieschenzeit habe ich es ausprobiert und es ist einwandfrei. Danke DetlevD.
Aber wenn eines gelöst ist, kommt das nächste Problem. Aber der Aufbau ist der gleiche wie mit den Zahlen.
Übrigens ... weil die Aktionen ja nacheinander ausgeführt werden, kann bei dieser Methode des Ersetzens mittels temporärem Platzhalter immer wieder derselbe, aber eindeutige, Platzhalter verwendet werden.
Beispiel ...
So sehr ich die Lösung mit den wilden Folgen von Zeichen bewundere, erschließt mir noch nicht so ganz die Notwendigkeit zur Komplexität des Ansatzes.
die beiden Zeichen ´ und `sind Accents, die eigentlich nur mit einem Vokal vorkommen können, also z.B. é oder à.
Das ' (auf der deutschen Tastatur über den #) ist das Apostroph und damit das einzig zulässige Auslassungszeichen.
Wenn also irgendein Häkelchen hinter einem Wort steht, das kein Apostroph, sondern ein Accent ist, dann müsste das mit ganz einfachem Suchen/ersetzen gehen, ohne dass da auch noch Wortbestandteile genannt werden, denn ein Accent, der alleine steht, ist ein Erfassungsfehler und müsste immer zum Apostroph werden (wenn man denn so pingelig sein will) ...
Das gilt auch für die englischen "don't" und "ain't" usw.
ohrenkino, diesen Sachverhalt verstehe ich genau so wie du.
Deshalb war meine letzte Empfehlung $replace(%TITLE%,'´','','`',''), was die freistehenden Akzente durch das einfache Apostroph ersetzt.
Vielleicht ... hast du den neuen Fall "C.c. Catch" in der Replace-Funktion nicht eingetragen?
Und beachte "Hinweis: Ersetze jedes ÷ Sonderzeichen durch ein Leerzeichen."