Buscar y reemplazar AppleScript para iTunes Track Names

1

Estoy tratando de escribir un AppleScript para realizar operaciones de búsqueda y reemplazo en forma masiva en los nombres de las pistas de iTunes. Actualmente, este es mi código:

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

Actualmente, la función findAndReplaceInText() devuelve el error 1708. ¿Qué hice mal? La función de buscar y reemplazar proviene de Apple: Guía de scripting de automatización de Mac- Manipulación Texto

    
pregunta willem.hill 28.10.2017 - 00:10

1 respuesta

1

Técnicamente, todo lo que necesitas hacer es poner my frente a findAndReplaceInText , sin embargo, esta versión del código es IMO una mejor manera de escribirlo.

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

También tenga en cuenta que, si bien la secuencia de comandos cambia el nombre mostrado de la canción, no la cambia como el nivel del sistema de archivos, solo los metadatos almacenados en iTunes.

    
respondido por el user3439894 28.10.2017 - 07:20

Lea otras preguntas en las etiquetas