Ich versuche, ein AppleScript zu schreiben, um Massenvorgänge zum Suchen und Ersetzen von iTunes-Titelnamen durchzuführen. Derzeit ist dies mein Code:
Sagen Sie der Anwendung "iTunes" setze sel auf die Auswahl des vorderen Browserfensters wenn sel dann {} ist versuchen Anzeigedialog "Nichts ist ausgewählt…" Schaltflächen {"Beenden"} mit Symbol 0 Versuch beenden zurückkehren Ende wenn setze c auf (count of sel) set theSearchString to display dialog "Find:" default answer "" --prompt for input to search for Set theReplacementString to display dialog "Replace with:" default answer "" --prompt for input to search for Wiederholen Sie mit i von 1 bis c --stellen Sie die Satznummern ein setze thisTrack auf Item i von sel setze songName auf (erhalte den Namen dieses Tracks) setze den Namen von thisTrack auf (findAndReplaceInText(songName, von theSearchString zurückgegebener Text, von theReplacementString zurückgegebener Text)) Ende wiederholen Ende erzählen on findAndReplaceInText(theText, theSearchString, theReplacementString) Setzen Sie die Trennzeichen für Textelemente von AppleScript auf theSearchString setze theTextItems auf jedes Textelement von theText Legen Sie die Textelement-Trennzeichen von AppleScript auf theReplacementString fest setze theText auf theTextItems als String Setzen Sie die Textelement-Trennzeichen von AppleScript auf "" gib den Text zurück end findAndReplaceInText
Derzeit gibt die findAndReplaceInText()
Funktion den Fehler 1708 zurück. Was habe ich falsch gemacht? Die Funktion „Suchen und Ersetzen“ stammt von Apple: Mac Automation Scripting Guide – Manipulating Text
my
Technisch gesehen müssen Sie nur vor setzen findAndReplaceInText
, aber diese Version des Codes ist meiner Meinung nach eine bessere Möglichkeit, ihn zu schreiben.
tell application "iTunes"
set sel to selection of front browser window
if sel is {} then
display dialog "Nothing is selected…" buttons {"Quit"} with icon 0
return
end if
set theSearchString to text returned of (display dialog "Find:" default answer "")
set theReplacementString to text returned of (display dialog "Replace with:" default answer "")
repeat with i from 1 to (count of sel)
set thisTrack to item i of sel
set name of thisTrack to my findAndReplaceInText((name of thisTrack), theSearchString, theReplacementString)
end repeat
end tell
on findAndReplaceInText(theText, theSearchString, theReplacementString)
set AppleScript's text item delimiters to theSearchString
set theTextItems to every text item of theText
set AppleScript's text item delimiters to theReplacementString
set theText to theTextItems as string
set AppleScript's text item delimiters to ""
return theText
end findAndReplaceInText
Beachten Sie auch, dass Ihr Skript zwar den angezeigten Namen des Songs ändert, aber nicht die Dateisystemebene, sondern nur die in iTunes gespeicherten Metadaten.
willem.hill