1 votos

Cómo referirse a los objetos del diccionario de Applescript con espacios en el nombre

Estoy intentando escribir un Applescript que acceda a EyeTV (¡sí, todavía tengo uno funcionando!). Estoy tratando de listar las grabaciones en la ventana de programas. Del diccionario:

application n [see also Standard Suite] : the EyeTV application
  elements
   contains player_windows, programs, recordings, channels, favorites lists.
  properties
   current recording (double integer, r/o) : unique id of the current (frontmost) recording. Returns 0 if there is none.
  programs window (programs_window, r/o) : schedule dialog

Más abajo en el diccionario está:

programs_window n [inh. window] : window containing the list of programs and recordings
  elements
   contains programs, recordings.
  properties
   selection (list of list) : A list containing every selected recording, channel or schedule (program) in the programs window, depending on what the current category is.

Si hago clic con el botón derecho del ratón en el diccionario y elijo "Nuevo script", se iniciará el script por mí:

tell application "EyeTV"

end tell

A continuación, añado la línea que es el problema:

tell application "EyeTV"
    set recordList to recordings of programs window
end tell

Si compilo esto obtengo " Error de sintaxis Se esperaba el final de la línea pero se encontró el nombre de la clase ."

Si uso programs_window en cambio, al ejecutar el script el error será La variable programs_window no está definida .

He encontrado un script que alguien ha escrito para exportar grabaciones de EyeTV a Plex, y utiliza programs window . Si copio y pego todo el script e intento compilarlo vuelvo a recibir el error Error de sintaxis Se esperaba el final de la línea pero se encontró el nombre de la clase.

No estoy seguro de cómo proceder. ¿Debo referirme a la programs window de la aplicación o el programs_window ¿clase? ¿Cómo puedo eliminar los errores?

Tengo una copia de la Guía del Lenguaje AppleScript pero parece que no dice nada sobre el tema de los diccionarios de aplicación.

Cualquier ayuda con esto sería muy apreciada.

0 votos

Por cierto, he descargado EyeTV3.6.9(7524)20180130 y lo instaló. Añadí su diccionario AppleScript a la biblioteca en script Ediror y ambos compilan sin error en mi sistema, que ejecuta macOS High Sierra.

0 votos

@user3439894 Lo he arreglado, un arreglo hilarantemente sencillo pero que no esperaba. Gracias por tomarte el tiempo de investigarlo, ¡siempre es bueno saber que hay alguien dispuesto a ayudar!

1voto

Iain Puntos 137

Había una solución sencilla, asegurarse de que la aplicación se está ejecutando durante la fase de compilación. Me parece extraño teniendo en cuenta que tiene el diccionario y no está (o asumo que no está) haciendo ninguna llamada a la aplicación en cuestión, pero así es.

Un poco de investigación trajo un libro sobre Applescript hace algunas versiones pero obviamente sigue siendo válido (el énfasis es mío).

Referentes externos necesarios en tiempo de compilación

AppleScript es un pequeño lenguaje, dejando a varias entidades externas como las aplicaciones de scripting (o adiciones de scripting) para ampliar el lenguaje según sea necesario. Cuando llega el momento de compilar un script, si hace uso de tales extensiones definidas externamente al al lenguaje, esas entidades externas deben estar presentes y AppleScript debe ser capaz de localizarlas, para poder determinar si las palabras que usas en tu código corresponden a extensiones del lenguaje definidas en estas entidades externas, y si es así, cómo traducirlas al código de bytes.

Esta es una instancia más de la antigua llamada a los desarrolladores - Por favor, , mejorar los mensajes de error .

0 votos

Dijiste: "Hay una solución sencilla, asegúrate de que la aplicación se está ejecutando durante la fase de compilación" y me parece que no es así, EyeTV no se abrió cuando compilé el código. Llevo 13 años utilizando AppleScript con regularidad y no he tenido que tener las aplicaciones en marcha para compilar el código. Además, esto citado de la fuente referenciada, "esas entidades externas debe estar presente y AppleScript debe ser capaz de localizarlos " no significa en absoluto que la aplicación deba estar funcionando para compilar el código significa que se puede localizar el diccionario AppleScript.

0 votos

@user3439894 Sólo puedo decirte que así me ha funcionado a mí, si salgo de la aplicación el error vuelve, al iniciar la aplicación desaparece así que mi suposición es que "esas entidades externas deben estar presentes, y AppleScript debe ser capaz de localizarlas" es indistinto de requerir que la aplicación esté en ejecución. Tu caso pone un poco en duda eso. No tengo ni idea de por qué mi sistema es el único caso aquí.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X