¿Qué es un script?
La información que aparece en las INNDS Movies and Templates - películas y plantillas de INNDS, puede ser el resultado de un script.
Un script es un archivo que contiene código Python (.py), JScript (.js) o VBScript (.vbs), que es iniciado por el motor de reproducción de INNDS. Los scripts pueden interactuar con INNDS utilizando funciones de la biblioteca de INNDS.
Los scripts para las películas se configuran en INNDS Composer y se distribuirán a un reproductor INNDS Premium junto con una INNDS Movie.
Recomendamos utilizar Python para todos los scripts.
Configuración de scripts en Composer
La forma recomendada de establecer un guión en Composer es seleccionar la pestaña Película > Editar guiones.
Esto abre un nuevo diálogo para establecer los scripts para la película. Haga clic en el botón Añadir para buscar los archivos de script que se van a ejecutar.
Se distinguen tres tipos de scripts: scripts de carga, scripts de fondo o scripts de eventos.
- Los scripts de carga están configurados para ejecutarse antes de que los recursos de la escena (imágenes, etc.) se carguen (se pongan en la caché). Se ejecutan en orden de lista.
Por favor, ten en cuenta que la reproducción no esperará a que los scripts de carga terminen de ejecutarse, y puede terminar la ejecución del script si tarda demasiado - el tiempo de espera de parada por defecto es de 30 segundos.
El motor de reproducción de INNDS mantendrá un registro del tiempo de ejecución de un script para intentar optimizar el tiempo de inicio del mismo. - Los scripts de fondo se ejecutarán de forma independiente (asíncrona) en segundo plano.
El script en segundo plano comienza a ejecutarse la primera vez que se reproduce una plantilla, el hilo de python en segundo plano seguirá ejecutándose hasta que la plantilla se elimine de la lista de reproducción.
Estos scripts no tienen un tiempo de espera de parada. Sin embargo, si salen por sí mismos, eventualmente se reiniciarán.
Si se están ejecutando dos o más mensajes de plantilla, sólo se iniciará una instancia del script de fondo. Hay un método de python INNDSScript.GetState() para ver el estado de la reproducción que es útil para saber cuándo salir, por ejemplo en los bucles infinitos (ver más abajo) - Los scripts de eventos se ejecutan, por ejemplo, en un evento de clic. Estos scripts no se configuran como arriba, sino en el diálogo de Eventos de cada escena u objeto.
Escribir scripts
INNDS library
La biblioteca INNDS proporciona acceso a métodos para interactuar con INNDS. Los métodos disponibles son:
INNDSScript.Log([optional]string loglevel, string message)
Registra un mensaje en el portal INNDS.
Si se especifica el nivel de registro, debe ser uno de los siguientes:
- debug
- info
- notice
- warning
- error
- critical
- alert
- emergency
INNDSScript.Sleep(integer x)
Retrasa la ejecución del script en x milisegundos.
INNDSScript.GetState(integer x)
Si el script se está ejecutando, devolverá Normal, si no se está ejecutando, Terminado.
INNDSScript.GetDatafeed(string name, [optional]string mediatype)
Busca en el portal un datafeed con el nombre dado y devuelve su valor.
Si se especifica el tipo de medio, sólo se buscarán fuentes de datos de ese tipo de medio.
Los tipos de medios válidos son:
- text
- text/plain
- image
- image/*
- video
- video/*
INNDSScript.GetVariable([optional]string scope, string name)
Véase también Variables.
Busca en el portal una variable con el nombre dado y devuelve su valor. Si la variable no existe, se devuelve una cadena vacía.
Si se proporcionan 2 parámetros, el primer parámetro se interpreta como el ámbito de la variable. Los ámbitos posibles son:
- global
El valor por defecto para los scripts de fondo. - local
El valor por defecto para los scripts de carga. La variable sólo será visible para la película/plantilla que la contiene.
INNDSScript.SetVariable([optional]string scope, string name, string value)
Véase también Variables.
Establece una variable en el portal.
Si se proporcionan 3 parámetros, el primer parámetro se interpreta como el ámbito de la variable. Los ámbitos posibles son:
- global
El valor por defecto para los scripts de fondo. - local
El valor por defecto para los scripts de carga. La variable sólo será visible para la película/plantilla que la contiene.
INNDSScript.GetTrigger(string name)
Busca en el motor de reproducción un disparador con el nombre dado y devuelve su valor como un valor booleano.
INNDSScript.SetTrigger(string name, boolean value)
Establece un activador en el portal con el nombre proporcionado.
INNDSScript.ToggleTrigger(string name)
Establece el activador en el portal, fijando su valor a true si ya es false, y a false si es true.
bool INNDSScript.Back()
Envía un comando de vuelta a todas las listas de reproducción que se están reproduciendo en el reproductor.
bool INNDSScript.Back(string name)
Envía un comando de vuelta a la lista de reproducción que se está reproduciendo con el nombre proporcionado en el reproductor.
bool INNDSScript.Forward()
Envía un comando de avance a todas las listas de reproducción que se están reproduciendo en el reproductor.
bool INNDSScript.Forward(string name)
Envía un comando de avance a la lista de reproducción que se está reproduciendo con el nombre proporcionado en el reproductor.
string INNDSScript.Action(string name, string parameter1, string parameter2)
Acciones personalizadas
Devuelve el resultado de la acción.
Las acciones soportadas son:
- UpdateFile
Activa la actualización de un archivo.
El parámetro1 es el archivo de destino, el parámetro2 es el archivo de origen.
Si se omite el origen, se recarga el archivo de destino.
El archivo de origen se eliminará si se especifica. - TakeOver
Crea una nueva capa para un material específico, que se reproduce una vez.
Todo el resto del material se pone en pausa durante esta reproducción.
El parámetro1 es la ruta del archivo, el parámetro2 es el tipo de medio.
INNDSScript.Exit()
Sale inmediatamente del script que se está ejecutando (continuará con el siguiente script si se definen varios)
Python
Los scripts de Python se escriben en archivos .py normales, con algunas excepciones:
- Especifique el motor de host de script a utilizar, en la primera fila del archivo:
#pragma language Python.AXScript.2 -
Puedes usar declaraciones #include para tener otros archivos .py incluidos:
#include "otherfile.py" -
Puede utilizar los métodos de la biblioteca INNDS (véase la sección "Biblioteca INNDS" más arriba) para acceder a diversas funciones de INNDS.
Instalar Python
- Descargue Python 3 desde https://www.python.org/downloads
- Instalar Python con la configuración estándar.
- Descargue Pywin32 desde https://github.com/mhammond/pywin32/releases
- Instale Pywin32 con la configuración estándar.
Mocks
Si necesitas probar tus scripts de Python fuera de INNDS, no dudes en utilizar este stub en lugar de la librería de INNDS:
JScript
Los scripts JScript se escriben en archivos .js normales, con algunas excepciones:
- Los scripts JScript se escriben en archivos .js normales, con algunas excepciones:
- Puedes usar declaraciones #include para tener otros archivos .js incluidos:
Mocks y polyfills
Si necesita probar sus scripts JScript fuera de INNDS, no dude en utilizar este stub en lugar de la biblioteca de INNDS:
VBScript
Los scripts JScript se escriben en archivos .vbs normales, con algunas excepciones:
- La primera fila del archivo debe especificar el motor de host de script a utilizar:
- Puede utilizar declaraciones #include para que se incluyan otros archivos .vbs:
Scripts sobre eventos
Los scripts pueden ser activados en eventos que pueden ser añadidos a una escena en Composer o puedes añadir un evento usando la interactividad.
Estos scripts tienen por defecto un alcance global, por lo que son visibles para cualquier película / plantilla que se esté reproduciendo.
Como ejemplo, a continuación añado una imagen a Composer y luego configuro el script para que se active cada vez que se haga clic en la imagen.
Ajustes
Cuando se selecciona el comando "Ejecutar script" en la configuración de eventos, se puede modificar cómo se ejecutará el script.
- Busque el script en su PC. El script se enviará junto con la película y el contenido de INNDS.
- La reproducción, la carga, etc., no continuarán hasta que el script haya terminado de ejecutarse.
- La cantidad de tiempo que desea esperar para la ejecución del script antes de que se agote el tiempo.
Ejemplo de scripting
Instrucciones paso a paso para el tiempo en Composer.
- Copie el texto de la secuencia de comandos que se encuentra a continuación en un archivo de texto y nómbrelo "weather.py"
- Crear una cuenta en https://darksky.net/dev y obtener una clave API.
Lea también sobre el Dark Sky y sus Terminos de Servicio (En ingles). - Asegúrese de que tiene instalado Python, como se describe en la sección "Instalar Python" más arriba
- Ejecute "pip install darkskylib" desde una línea de comandos.
- Edita el archivo weather.py y sustituye
- APIKEY en el script con su clave API.
- 59.378333, 13.504167 con su ubicación en forma decimal.
- En Composer, seleccione la pestaña Película > Editar guiones.
- Haga clic en el botón Añadir junto a Cargar scripts y busque el archivo de script.
- Cree dos campos de texto y conéctelos a las variables del script. Vea la imagen de abajo para las instrucciones.
escriba "#VAR#" seguido del nombre de la variable. Por ejemplo, la variable "weather.summary", establecida en el script de abajo, sería datos conectados como #VAR#weather.summary. - Ahora debería poder "reproducir todas las escenas" y ver el resultado.
Solución de problemas
- El script no se ejecuta
Si se trata de un script de Python (.py), asegúrese de que tiene instalados los siguientes elementos (normalmente los instalará automáticamente el instalador de INNDS Premium)
- Python 2.7 o Python 3.7
https://www.python.org/downloads/ - Python para Win32
https://github.com/mhammond/pywin32
- Python 2.7 o Python 3.7