AppleScript para buscar archivos por coincidencia de nombre exacto de una variable de Automator

3

Tengo un flujo de trabajo que obtiene el nombre de una pista en mi reproductor de mp3 y lo almacena en una variable. Luego uso esto en la acción Spotlight para encontrar esa pista en mi biblioteca de iTunes, pero la acción Spotlight da múltiples resultados cuando solo quiero la pista exacta, no todas las pistas que contienen el nombre.

Necesito alguna forma o un script para reemplazar esta acción. Todas las búsquedas proporcionan comandos de Terminal que no entiendo o cómo usarlos con Automator.

AquíhayunApplecriptqueencontréquefunciona,peroesrealmentelento,hacequeelFinderaparezcaencadaciclo.¿Hayalgunaformadeaceleraresto,mibibliotecatienemásde10,000pistas?Gracias enlace

    
pregunta user2033505 14.07.2018 - 22:40

1 respuesta

0

No tengo Snow Leopard , así que estoy limitado en lo que puedo probar como viable para su sistema. Por lo tanto, tenga en cuenta que la siguiente solución se diseñó y probó utilizando lo siguiente:

Información del sistema: Versión de AppleScript : "2.7", versión del sistema : "10.13.5"

Dicho esto, ahora veo la razón por la que esto no debería funcionar en El Capitán . podría funcionar en Snow Leopard , pero estoy menos seguro.

Mi solución propuesta es reemplazar su acción Spotlight Automator con una acción Run AppleScript :

ElcódigocontenidoenRunAppleScripteselsiguiente:

useframework"Foundation"

    property ca : a reference to current application


    on run {input, parameters}
        set MusicFolder to "/Volumes/Media/Music/iTunes/iTunes Music/Music/"

        set FileManager to ca's NSFileManager's defaultManager()
        set MusicFiles to (FileManager's subpathsAtPath:MusicFolder)'s ¬
            pathsMatchingExtensions:{"mp3", "m4a"}
        set [filename] to input
        set format to "SELF endswith " & ("/" & filename & ".mp3")'s quoted form & ¬
            " OR SELF endswith " & ("/" & filename & ".m4a")'s quoted form
        set filter to ca's NSPredicate's predicateWithFormat:format

        set matches to {}

        repeat with match in (MusicFiles's filteredArrayUsingPredicate:filter) #'
            set end of matches to POSIX file (MusicFolder & match as text) as alias
        end repeat

        return matches
    end run

Esto devolverá las pistas con el nombre de archivo exacto proporcionado por la variable trackName en el flujo de trabajo. Por lo tanto, si hubiera establecido trackName en mi ejecución de prueba en "Everywhere I Go" (es decir, sin el "04" anterior), la búsqueda habría devuelto un resultado vacío.

Además, ten en cuenta que puedes tener algunas pistas que tienen nombres de archivo idénticos de diferentes carpetas / álbumes. Si hay dos archivos en carpetas diferentes, ambos llamados "01 Song.mp3" , ambos archivos se devolverán en la búsqueda.

    
respondido por el CJK 19.07.2018 - 22:44

Lea otras preguntas en las etiquetas