1 votes

Comment pourrais-je rationaliser ce script pour trouver les éléments du Finder plus rapidement ?

J'ai un Applescript script qui vérifie si ma liste de lecture contient moins de 25 chansons de moins de 11 minutes et qui déplace des fichiers aléatoires d'un autre dossier vers mon dossier Temp pour compléter le nombre.

Y a-t-il une raison pour que la partie "Finder" du script soit si lente (il faut près de 15 secondes pour l'exécuter) ? Y a-t-il un code de contournement que je pourrais utiliser ?

--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

Quelqu'un peut-il nous aider ?

1voto

boissonnfive Points 21

J'ai testé votre code sur mon OSX 10.9.5 et j'ai vu pas de problème . Cela a pris 2 secondes (délai compris). Pour moi, le code est donc correct.

Quelle est votre version d'OSX ? (Peut-être un bug ...)

Vous le savez probablement déjà, mais pour en savoir plus sur la partie qui ralentit le script, vous pouvez utiliser les 2 instructions suivantes :

-- 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

Désolé, je ne peux pas vous aider davantage.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X