¿Cómo podría simplificar este script para encontrar los elementos del Finder más rápido?

1

Tengo un script Applescript que comprueba si mi lista de reproducción tiene menos de 25 canciones en menos de 11 minutos y luego mueve algunos archivos aleatorios de otra carpeta a mi carpeta Temp para completar el número.

¿Hay alguna razón por la que el bit "Finder" del script sea tan lento (se tarda casi 15 segundos en ejecutarse)? ¿Alguna solución de código que pueda usar aquí?

--this adds some songs if the playlist has less than 25 songs in it shorter than 11 mins
tell application "iTunes"
    set thePlaylist to playlist "Temp on iPod"
    --counts tracks less than 11 mins long
    count ((tracks of thePlaylist) whose duration is less than 665)
    set currentCount1 to result
    if currentCount1 is less than 25 then
        tell application "Finder"
            set theDestination to folder "Macintosh HD:Temp to be Listened to:temp on iPod:"
            get every file of folder "Macintosh HD:Temp to be Listened to:Temp:Short Temp (Small Files, <20mb):" whose kind is "MP3 audio"
            --this only gets the top level files
            set theMusic to result
            set myList to {}
            set theReplaceNo to (25 - currentCount1)
            repeat theReplaceNo times
                set currentFile to some item of theMusic
                copy currentFile to the end of myList
            end repeat
            --reveal every item of myList
            reveal myList
            delay 1.5
            move myList to theDestination
        end tell
    end if
end tell

¿Alguien puede ayudar?

    
pregunta tardy pigeon 27.10.2016 - 10:38

1 respuesta

1

Probé su código en mi OSX 10.9.5 y vi ningún problema . Tomó 2 segundos (retraso incluido). Entonces, para mí, el código es correcto.

¿Cuál es tu versión de OSX? (Tal vez un error ...)

Probablemente ya lo sepa, pero para investigar más sobre la parte que ralentiza el script, puede usar las siguientes 2 declaraciones:

-- Put this before the code you want to test :
set t to (time of (current date)) --Start timing operations

... your slow code here ...

-- Put this at the end of the code you want to test
set total to (time of (current date)) - t --End timing

Lo siento, no puedo ayudar más.

    
respondido por el boissonnfive 27.10.2016 - 14:05

Lea otras preguntas en las etiquetas