AppleScript - Funções avançadas para melhorar etapas / reduzir código

0

Estou tentando reduzir o número de etapas e aumentar o desempenho do meu applescript, apenas me perguntei se há algumas funções comuns que posso empregar.

Aqui está um script de exemplo ...

tell application "QuickTime Player"
    activate

    -- Get the iCloud file path to avoid permission error
    set filePath to "Macintosh HD:Users:jm:Library:Mobile Documents:com~apple~QuickTimePlayerX:Documents:movie.wav"

    set f to a reference to file filePath
    -- Get a handle to the initial window
    set windowID to id of first window whose name = "Audio Recording"
    set audio to first document whose name = (get name of first window whose id = windowID)

    tell audio
        stop
    end tell
    -- Get second handle to new titled window
    set windowID2 to id of first window whose name = "Untitled"
    set audio2 to first document whose name = (get name of first window whose id = windowID2)

    tell audio2
        -- Save audio file
        save audio2 in f
    end tell

    -- Get third handle to new titled window
    set windowID3 to id of first window whose name = "movie.wav.qtpxcomposition"
    set audio3 to first document whose name = (get name of first window whose id = windowID3)
    tell audio3
        close audio3 saving no
    end tell


end tell

Este é o segundo script, chamado após um script que inicia a gravação.

    
por Jules 10.02.2018 / 12:18

1 resposta

0

Posso reduzir seu script para isso:

    tell application "QuickTime Player"
        -- Get the iCloud file path to avoid permission error
        set filePath to "Macintosh HD:Users:jm:Library:Mobile Documents:com~apple~QuickTimePlayerX:Documents:movie.wav"

        -- Get a handle to the initial window
        stop the document named "Audio Recording"

        -- Get second handle to new titled window
        save the document named "Untitled" in filePath

        -- Get third handle to new titled window
        close the document named "movie.wav.qtpxcomposition" saving no
    end tell

Como mencionei no meu comentário, é redundante recuperar id de uma janela por name , somente para recuperar seu name desse id . Você pode referenciar o document pelo nome que você já tem (se nenhum documento com esse nome existir, ele lançará um erro; mas o mesmo também é verdadeiro para o seu script original). Para evitar isso, você pode verificar se existe primeiro:

    tell document named "Audio Recording" to if it exists then stop

O comando activate parecia desnecessário, pois nenhum dos comandos que se seguem exigem que o QuickTime esteja em foco.

Finalmente, a variável f foi redundante.

    
por 10.02.2018 / 21:50