Estoy tratando de escribir un AppleScript para realizar operaciones masivas de búsqueda y reemplazo en los nombres de las pistas de iTunes. Actualmente, este es mi código:
Dile a la aplicación "iTunes" establecer sel en la selección de la ventana frontal del navegador si sel es {} entonces intentar cuadro de diálogo de visualización "No hay nada seleccionado…" botones {"Salir"} con el icono 0 intento final devolver terminara si establecer c en (recuento de sel) configure theSearchString para mostrar el cuadro de diálogo "Buscar:" respuesta predeterminada "" --solicitar entrada para buscar configure theReplacementString para mostrar el cuadro de diálogo "Reemplazar con:" respuesta predeterminada "" --solicitar entrada para buscar repita con i de 1 a c --establezca los números de movimiento establezca esta pista en el elemento i de sel establecer el nombre de la canción en (obtener el nombre de esta pista) establezca el nombre de esta pista en (findAndReplaceInText(songName, texto devuelto de SearchString, texto devuelto de theReplacementString)) terminar repetir final decir on findAndReplaceInText(elTexto, laCadenaBúsqueda, laCadenaReemplazo) establezca los delimitadores de elementos de texto de AppleScript en SearchString establecer theTextItems en cada elemento de texto de theText establezca los delimitadores de elementos de texto de AppleScript en la cadena de reemplazo establecer theText a theTextItems como cadena establezca los delimitadores de elementos de texto de AppleScript en "" devolver elTexto fin de buscar y reemplazar en texto
Actualmente, la findAndReplaceInText()
función devuelve el error 1708. ¿Qué hice mal? La función de buscar y reemplazar proviene de Apple: Guía de secuencias de comandos de automatización de Mac: manipulación de texto
Técnicamente, todo lo que necesita hacer es poner my
delante de findAndReplaceInText
, sin embargo, esta versión del código es, en mi opinión, 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 su secuencia de comandos cambia el nombre que se muestra de la canción, no lo cambia como el nivel del sistema de archivos, solo los metadatos almacenados en iTunes.
willem.hill