Ho scaricato una versione di prova dell'ultimo Studio sonoro e ho provato. Il dizionario AppleScript era tutto ciò che era necessario. Ad eccezione del comando open
, tutte le altre informazioni necessarie per comporre lo script provengono dalla documentazione in Script Editor .
L'assenza di una voce per il comando open
è un po 'misteriosa e li ho inviati via email. Ho anche notato un "bug" (?) Nel software nel modo in cui risponde a open
, sebbene tecnicamente non possa essere classificato come un bug dato che non è documentato come un comando supportato. Tuttavia, l'unico altro comando che sarebbe usato per aprire file e creare nuovi documenti sarebbe il comando make
, ma, avendo giocato con questo, sono abbastanza sicuro che open
sia il comando corretto da usare, e hanno semplicemente omesso di documentarlo correttamente, ma anche di ignorarne il comportamento saltuario.
Comunque, ecco lo script, con i dati del mio file di test che sostituiscono quello che verrà inviato allo script dal tuo script Python:
# Script: Add Metadata To Sound Studio File.applescript
# Author: CJK
# Date: 2018-03-20
#-------------------------------------------------------------------------------
# @arguments:
# %argv% an indexed list containing 7 items:
#
# 1) full path to the file to open
# 2) name of artist
# 3) name of the album
# 4) just the name of the track
# 5) which disc (1, 2 ...)
# 6) which track on the disc
# 7) the year when the track was released
#-------------------------------------------------------------------------------
set argv to [¬
"/Users/CK/Music/Nelly Furtado/Folklore/04 Try.m4a", ¬
"Nelly Furtado", ¬
"Folklore", ¬
"Try", ¬
"1", ¬
"4", ¬
"2003"] -- remove this variable declaration
# on run argv -- uncomment this handler
if (count argv) is not 7 then return display dialog ¬
"Wrong number of arguments!" with title ¬
"Add Metadata To Sound Studio File" buttons ¬
{"Bummer"} giving up after 1
tell application "Sound Studio"
activate
set music_file_path to the first item of argv
set D to open (music_file_path as POSIX file)
tell the metadata of D to set [¬
artist, ¬
album, ¬
title, ¬
disc number, ¬
track number, ¬
year] to the rest of argv
save D
close D
--quit
end tell
# end run -- uncomment this line
#----------------------------------------------------------------------------END
Non c'è molto da dire sullo script: apre Sound Studio , apre un file audio, assegna alcuni valori alle proprietà dei metadati, salva il file, quindi chiude il file. Opzionalmente, puoi uscire dall'applicazione anche a questo punto.
Per quanto riguarda l'apertura del file audio, Sound Studio sembra che il contenuto abbia un riferimento POSIX file
invece di doverlo forzare in alias
class. Tuttavia, ho notato un paio di stranezze:
❶ · Quando ho provato a definire la variabile music_file_path
al di fuori del blocco tell
, si è comportata come hai detto e semplicemente non ha aperto il file, ma non ha restituito un errore. Lo script si è bloccato fino a quando non è scaduto.
❷ · Non mi piaceva nemmeno che io esprimessi il riferimento del file come POSIX file music_file_path
, quindi ho dovuto scriverlo come music_file_path as POSIX file
. Di nuovo, fermerebbe lo script, piuttosto che lamentarsi del fatto che il riferimento al file fosse sbagliato.
❸ · Se ho corretto entrambi questi problemi e ho cercato di eseguire lo script subito dopo l'interruzione di una precedente esecuzione, lo script si bloccava di nuovo. Quindi ho dovuto interrompere il processo Sound Studio da Terminal emettendo un killall "Sound Studio"
. Poi, quando ho eseguito la sceneggiatura, ha funzionato abbastanza felicemente, e ho continuato a lavorare serenamente con ogni successiva esecuzione dopo l'esecuzione. Quando sono andato di nuovo a riprovare con la sceneggiatura per provocare di proposito uno stallo, non mi sorprende che ho dovuto ancora una volta tornare in Terminal per fare un killall
.
Quindi penso che sia abbastanza sicuro dire che questo è un problema con Sound Studio e non con lo script. Li ho mandati via email, ma penso che non sarebbe sbagliato mandarli per e-mail: più report ricevono da clienti scontenti che vogliono che la tecnologia AppleScripting sia implementata e supportata correttamente, maggiore è il loro incentivo fallo.
Ho preso in considerazione l'ipotesi di inserire una clausola in AppleScript affinché emettesse il suo comando di shell quando rileva che l'applicazione si è bloccata cercando di aprire un file. L'AppleScript potrebbe fare un killall
, ma per qualche motivo non mi ha trovato molto d'accordo. L'applicazione Sound Studio stessa non non funzionava e continuava a essere operativa durante i test.
Se fai vuoi che imposti una specie di blocco nello script per gestire le istanze in cui potrebbe bloccarsi, fammelo sapere e posso aggiungere una modifica. Ma non sarebbe quello che chiamerei "clean cut code", e fintanto che non provi a cambiare come e dove il riferimento al file è dichiarato nello script, dovrebbe funzionare bene.