Descargué una versión de prueba del último Sound Studio y le di una oportunidad. El diccionario AppleScript era todo lo que se requería. Con la excepción del comando open
, toda la información necesaria para componer el script provenía de la documentación dentro de Script Editor.
La ausencia de una entrada para el comando open
es un poco misteriosa y les envié un correo electrónico al respecto. También noté un "bug" (?) en el software en la forma en que responde a open
, aunque técnicamente no se puede clasificar como un error dado que no está documentado como un comando compatible. Sin embargo, el único otro comando que se usaría para abrir archivos y crear nuevos documentos sería el comando make
, pero, después de jugar con eso, estoy bastante seguro de que open
es el comando correcto a utilizar, y simplemente no lo documentaron adecuadamente, además de pasar por alto su comportamiento ocasionalmente errático.
De todas formas, aquí está el script, con mis datos de archivo de prueba tomando el lugar de lo que se enviará al script desde tu script de Python:
# Script: Add Metadata To Sound Studio File.applescript
# Author: CJK
# Date: 2018-03-20
#-------------------------------------------------------------------------------
# @arguments:
# %argv% una lista indexada que contiene 7 elementos:
#
# 1) ruta completa del archivo a abrir
# 2) nombre del artista
# 3) nombre del álbum
# 4) solo el nombre de la pista
# 5) qué disco (1, 2 ...)
# 6) qué pista en el disco
# 7) el año en que se lanzó la pista
#-------------------------------------------------------------------------------
set argv to [¬
"/Users/CK/Music/Nelly Furtado/Folklore/04 Try.m4a", ¬
"Nelly Furtado", ¬
"Folklore", ¬
"Try", ¬
"1", ¬
"4", ¬
"2003"] -- eliminar esta declaración de variable
# on run argv -- descomentar este controlador
if (count argv) no es 7 entonces regreso display dialog ¬
"¡Número incorrecto de argumentos!" con título ¬
"Agregar Metadatos al Archivo de Sound Studio" botones ¬
{"¡Qué mal momento!"} abandonar después de 1
decir aplicación "Sound Studio"
activar
establecer ruta_archivo_musica al primer elemento de argv
establecer D a abrir (ruta_archivo_musica como archivo POSIX)
decir la metadatos de D para establecer [¬
artista, ¬
álbum, ¬
título, ¬
número de disco, ¬
número de pista, ¬
año] al resto de argv
guardar D
cerrar D
--salir
end tell
# end run -- descomentar esta línea
#----------------------------------------------------------------------------FIN
No hay mucho que decir sobre el script: abre Sound Studio, abre un archivo de audio, asigna algunos valores a las propiedades de los metadatos, guarda el archivo, luego cierra el archivo. Opcionalmente, puedes cerrar la aplicación en este momento también.
Respecto a la apertura del archivo de audio, Sound Studio parece estar contento con recibir una referencia de POSIX file
en lugar de tener que forzarla a la clase alias
. Sin embargo, noté un par de rarezas:
❶・Cuando intenté definir la variable ruta_archivo_musica
fuera del bloque tell
, se comportó como mencionaste y simplemente no abrió el archivo, pero tampoco devolvió un error. El script se detuvo hasta que se agotó el tiempo.
❷・Tampoco le gustó que expresara la referencia del archivo como POSIX file ruta_archivo_musica
, así que tuve que escribirlo como ruta_archivo_musica como archivo POSIX
. Nuevamente, el script se detendría en lugar de quejarse de que la referencia del archivo estaba equivocada.
❸・Si corregí ambos problemas e intenté ejecutar el script inmediatamente después de que una ejecución anterior lo hubiera detenido, el script se detendría una vez más. Así que tuve que finalizar el proceso de Sound Studio desde Terminal emitiendo un killall "Sound Studio"
. Entonces, cuando ejecuté el script, funcionó felizmente y continuó funcionando felizmente con cada ejecución sucesiva después de ejecutarlo. Cuando fui a jugar con el script de nuevo para causar intencionalmente una detención, no fue sorprendente que tuve que volver a Terminal para hacer un killall
.
Así que creo que es bastante seguro decir que este es un problema con Sound Studio y no con el script. Les envié un correo electrónico al respecto, pero creo que no estarías equivocado si también les envías un correo electrónico: cuantos más informes reciban de clientes descontentos que desean que la tecnología AppleScript se implemente y se brinde soporte adecuado, más incentivo tendrán para hacerlo.
Consideré poner una cláusula en el AppleScript para que emita su propio comando shell cuando detecte que la aplicación se había detenido intentando abrir un archivo. El AppleScript podría hacer un killall
, pero eso no me pareció correcto por alguna razón. La aplicación Sound Studio en sí no se detuvo y continuó funcionando durante las pruebas.
Si quieres que añada algún tipo de bloque en el script para manejar cualquier caso en que pueda detenerse, házmelo saber y puedo agregar una edición. Pero no sería lo que yo llamaría un código "de corte limpio", y siempre y cuando no intentes cambiar cómo y dónde se declara la referencia del archivo en el script, debería funcionar bien.
0 votos
Estoy dejando un comentario en lugar de una respuesta porque no puedo probar nada, dado que no tengo Sound Studio. En primer lugar, elimina el bloque
tell application "Finder"
. No está haciendo nada útil. El lanzamiento de Sound Studio está controlado por el comandoactivate
en el siguiente bloque. En segundo lugar, ¿hay alguna razón para usara reference to
para utilizar la ruta del archivo? Si no, puedes quitarlo. Los comandosopen
en otras aplicaciones generalmente requieren una clase de objeto de archivoalias
. Para convertir la ruta del archivo en un objetoalias
, prueba esto:set mfp to POSIX file music_file_path as alias
.0 votos
Es mejor hacer esto fuera de cualquier bloque de código de
tell
de aplicación, aunque en esta instancia, realmente no importa si no vas a usarmfp
en ningún otro bloque de código detell
de aplicación. En cuanto a cómo configurar los metadatos, deberías empezar leyendo el diccionario de AppleScript de Sound Studio: para hacer esto, cuando estés en Editor de Script, presiona L para mostrar la ventana de Biblioteca. En Finder, arrastra el icono de la aplicaciónSound Studio.app
sobre la ventana de Biblioteca del Editor de Script. Luego haz doble clic en la entrada de "Sound Studio" que se añadirá a la lista de diccionarios disponibles.0 votos
Estoy familiarizado con el diccionario de AppleScript de Sound Studio. Lo que no comprendo es cómo hacer que una ventana en Sound Studio se ABRA realmente. Intenté la sugerencia de
set map to POSIX file music_file_path as alias
, seguido deopen mfp
, pero ninguna ventana se abre en realidad. Si alguien pudiera proporcionar un código de muestra sobre cómo abrir un documento que abra una ventana, y cómo configurar cualquier pieza de metadatos, entonces imaginaríasave
("yes" como la opción para forzar un guardado sin pedir confirmación), yclose mfp
, sería muy apreciado.