Trova e sostituisci AppleScript per i nomi delle tracce di iTunes

1

Sto provando a scrivere un AppleScript per eseguire operazioni di ricerca e sostituzione di massa sui nomi di brani di iTunes. Attualmente, questo è il mio codice:

tell application "iTunes"
    set sel to selection of front browser window
    if sel is {} then
        try
            display dialog "Nothing is selected…" buttons {"Quit"} with icon 0
        end try
        return
    end if

    set c to (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

    repeat with i from 1 to c --set the movement numbers
        set thisTrack to item i of sel
        set songName to (get name of thisTrack)
        set name of thisTrack to (findAndReplaceInText(songName, text returned of theSearchString, text returned of 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

Attualmente, la funzione findAndReplaceInText() restituisce l'errore 1708. Che cosa ho fatto di sbagliato? La funzione di ricerca e sostituzione viene fornita da Apple: Guida allo scripting per Mac - Manipolazione Testo

    
posta willem.hill 28.10.2017 - 00:10
fonte

1 risposta

1

Tecnicamente tutto ciò che devi fare è mettere my davanti a findAndReplaceInText , tuttavia questa versione del codice è IMO un modo migliore per scriverlo.

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

Nota anche che mentre il tuo script cambia il nome visualizzato del brano, non lo cambia come livello del filesystem, ma solo i meta-dati archiviati in iTunes.

    
risposta data 28.10.2017 - 07:20
fonte

Leggi altre domande sui tag