Gibt es eine fertige Umwandlungsmethode um aus Tags web-sichere Dateinamen zu erzeugen?
Also ich muss Audiodateien anhand der in den Tags gespeicherten Information in einer Art und Weise umwandeln, sodass einerseits die Info aus den Tags verwendet, andererseits diese aber in einer Art umgewandelt werden, sodass der fertige Dateiname web-konform ist.
D.h. also, dass Sonderzeichen in normale Zeichen umgewandelt werden. z.B. aus í, ó müsste I, O werden, entsprechend alle anderen Sonderzeichen wie /()%° etc. behandelt und Leerzeichen durch andere Zeichen ersetzt werden, etc.
Der wandelt aber meines Wissens keine Sonderzeichen um, sondern sorgt nur dafür, dass man Dateinamen bekommt, die in einem (Windows-)Filesystem akzeptiert werden. Also ohne Fragezeichen, Sterne, Grösser-Als-Zeichen etc.
Was du mit "web-sicher" oder "web-valide" genau meinst, das müsstest du ausführlicher beschreiben.
Eigentlich sollte im Web jedes Zeichen aus dem UTF-8 Standard abgebildet werden können.
Vielleicht meinst du den beschränkten Zeichensatz, wenn es darum geht, eine Datei in einem Dateisystem zu speichern, und zwar so, dass sie auf jedem x-beliebigen Server gespeichert werden kann, ohne Änderung von möglicherweise illegalen Sonderzeichen im Dateinamen.
Vielleicht meint du also das prophylaktische "sanitizing" von Dateinamen.
Mp3tag hat die Skript Funktion $validate, die die gröbsten Fehler für den Dateinamen und Dateipfad ausblenden kann.
validate hilft nicht, da eben es eben "nur" für Windows-Dateinamen korrigiert.
Ok, um es vielleicht möglichst einfach genauer zu beschreiben: Ich brauch filenamen, die so auch als URL funktionieren. Ok, auch hier gibt es theoretisch Sonderzeichen - funktionieren meines Wissens nach bis jetzt nicht zuverlässig. Also bräuchte ich ähnliche/gleiche Regeln für Dateinamen wie sie für TLDs (Domainnamen) gelten. Sprich keine Sonderzeichen ([]%/, ü, ä, ö, ó, í, etc.) und keine Leerzeichen, etc...)
Leider bin ich wirklich nicht gut genug um mir sowas aus regular expressions selber zu bauen...
Leider muss ich noch kurz wegen der Aktionsgruppe nachfragen.. Ich hab noch nie eine "externe" Aktionsgruppe verwendet. Bin draufgekommen, dass im Programmverzeichnis data/actions .MTA files stehen. Ich hab Deine Vorgeschlagene dazukopiert. Sie wird aber nicht als Aktion im Aktionsmenü angezeigt?!
Das Programmverzeichnis ist dafür nicht der richtige Ort.
Die MTA Dateien gehören in das Anwenderverzeichnis
bei Win XP: "%APPDATA%\Mp3tag\data\actions"
bzw.
"%APPDATA%\Roaming\Mp3tag\data\actions"
Um die ganze Sache rund laufen zu lassen, schlage ich folgende Schritte vor.
Ein neues Tag-Feld FN_NEU formatieren mit der Aufbereitungsfunktion wie schon gezeigt.
Ein neues Tag-Feld UNI_TO_ASC formatieren mit %FN_NEU%.
Die Aktionengruppe UniToAsc.Diacritics ausführen.
Diese Aktionen erwarten das Tag-Feld UNI_TO_ASC.
Danach sollte im Tag-Feld UNI_TO_ASC das bereinigte Ergebnis zu sehen sein.
Tag-Feld FN_NEU formatieren mit %UNI_TO_ASC%
Tag-Feld UNI_TO_ASC entfernen.
Dateiname formatieren mit %FN_NEU%.
Tag-Feld FN_NEU entfernen.
Das kann man auch kürzer fassen, aber so hast du erst einmal die Gelegenheit, jeden Schritt einzeln zu verfolgen.
Alle Schritte lassen sich in drei Aktionengruppen verteilen.
Aktionengruppe für Aufbereitung und Vorbereitung für Nr. 2
Aufruf Aktionengruppe UniToAsc.Diacritics
Aktionengruppe für Nachbereitung.
Wenn alles funktioniert, dann kann man die drei Aktionengruppen über "Aktionengruppen/Utils" zu einer Meta-Gruppe zusammenfassen.