Esse script funciona bem para mim e para a maioria dos meus clientes, mas para alguns clientes o tempo limite é excedido com o erro -1712; Não faço ideia do porquê. Eu tentei aumentar o tempo limite, mas não faz diferença.
O arquivo /tmp/itunes_model.txt
não é criado, portanto, parece não estar fazendo nada.
Como posso depurar / corrigir isso?
with timeout of 1200 seconds
tell application "iTunes"
if (count of every file track of library playlist 1) is equal to 0 then
set thePath to (POSIX file "/tmp/itunes_model.txt")
set fileref to open for access (thePath) with write permission
set eof fileref to 0
close access fileref
return
end if
tell every file track of library playlist 1
script performancekludge
property tracknames : its name
property locs : its location
property persistids : its persistent ID
end script
end tell
end tell
set thePath to (POSIX file "/tmp/itunes_model.txt")
set fileref to open for access (thePath) with write permission
set eof fileref to 0
tell performancekludge
repeat with i from 1 to length of its tracknames
try
set nextline to item i of its tracknames ¬
& "::" & POSIX path of item i of its locs ¬
& "::" & item i of its persistids
write nextline & linefeed as «class utf8» to fileref
end try
end repeat
end tell
close access fileref
end timeout
Foi adicionada uma tentativa de captura do erro, conforme solicitado, e a nova execução; a primeira vez que foi executada, realmente funcionou, o que é interessante, mas a segunda vez que falhou novamente, sem obter mais informações úteis.
applescript
Paul Taylor
fonte
fonte
Respostas:
Deve algo como isto:
Você
timeout
deve estar dentro dotell
bloco antes / acima / fora dele.Parece que você pode estar definindo o tempo limite para o próprio script, em vez do iTunes, que tem um tempo limite padrão de 120 segundos (todos os aplicativos têm um tempo limite padrão de 2 minutos).
Isso pode estar falhando por vários motivos, além do tempo limite normal, como se a pessoa tivesse acabado de atualizar o iTunes, e seu script o abrisse pela primeira vez após a instalação recente, ele não poderá executar as funções normais do iTunes até depois fechar a tela inicial que diz "Bem-vindo à versão X do iTunes - Confira todos os novos recursos !, etc."
Além disso, já faz algum tempo desde que eu trabalhei com o AppleScript, então não me lembro se você instrui ou não um aplicativo do sistema a fazer algo se ele abrir ou não automaticamente. Caso contrário, é possível, você pode precisar
Tell SystemEvents to open application "ITunes"
(ou qualquer que seja a sintaxe) - ou sempre usar odo shellscript
comando para abrir o aplicativo; nesse caso, o comando shell atual seriaopen /Applications/iTunes.app/
- o que você pode verificar no Terminal.O erro também pode ocorrer se o aplicativo iTunes precisar do foco da GUI para que essas operações ocorram e o aplicativo perca automaticamente o foco enquanto o script estiver sendo executado quando outro aplicativo for aberto ou o usuário clicar ou algum cenário desse tipo, qual o seu script precisará ser capaz de prestar contas. Em casos como esse, convém
tell SystemEvents to activate application "iTunes"
antes que ações importantes ocorram. Isso fará com que a janela do iTunes recupere o foco.Na verdade, pode ser esse mesmo
SystemEvents
comando (você provavelmente precisará verificar / corrigir minha sintaxe) que abre o aplicativo inicialmente se ele ainda não estiver aberto no momento em que o script é executado.fonte