Lenguaje universal de la plantilla de sindicación

El lenguaje universal de la plantilla de sindicación (USTL, por sus siglas en inglés) le permite crear plantillas de vídeos en cualquier formato que encaje con sus necesidades. Por ejemplo, puede crear una lista de vídeos y sus metadatos en XML, JSON, CSV o cualquier otro formato.

Descripción

El USTL se basa en Liquid. Los detalles sobre el diseño del lenguaje están disponibles en línea.

Note: Para crear un feed, debe crear una sindicación avanzada. Una vez creada la sindicación, usted carga la plantilla ejecutando un comando PUT contra la sindicación con la plantilla en el cuerpo de la solicitud. Para más información, véase Sindicaciones
Note: Si la sindicación universal no está habilitada en su cuenta, póngase en contacto con el departamento de ventas, con su gestor de cuentas o con el soporte técnico.

Propiedades de vídeo

En la tabla siguiente se incluyen los atributos de vídeos que puede visualizar.

Atributo de ruta Descripción
asset.name Nombre del vídeo
asset.description Descripción del vídeo
asset.metadata["key"] Metadatos del vídeo. Si especifica la clave, se devuelven solo los metadatos de esa clave.
asset.duration La duración del vídeo
asset.external_id El identificador de un vídeo utilizado en un sistema externo a Ooyala
asset.flight_start_time La hora a partir de la que se puede reproducir el vídeo
asset.flight_end_time La hora a partir de la que no se puede reproducir el vídeo
asset.created_at Cuándo se creó el vídeo
asset.updated_at La última actualización del vídeo
asset.embed_code El código embebido o el ID de contenido del vídeo
asset.asset_type El tipo de vídeo
asset.hosted_at La URL permanente en la que embebe el vídeo
asset.uploaded_by_user El usuario que ha cargado el vídeo
asset.aspect_ratio Las dimensiones de anchura y altura del formato de fotograma
asset.original_file_name Nombre del archivo original
asset.closed_captions_url URL del archivo de subtítulos
asset.status El estado del vídeo
asset.streams Los streams Flash asociados al vídeo. No aplicable a vídeos remotos.
asset.abr_stream_urls Los streams ABR asociados al vídeo. No aplicable a vídeos remotos.
asset.abr_stream_urls.iphone Los streams ABR compatibles con iPhone asociados al vídeo. No aplicable a vídeos remotos.
asset.abr_stream_urls.ipad Los streams ABR compatibles con iPad asociados al vídeo. No aplicable a vídeos remotos.
asset.stream_urls Las URL de los streams asociados al vídeo. No aplicable a vídeos remotos.
asset.stream.audio_codec Los códecs de sonido asociados al vídeo. No aplicable a vídeos remotos.
asset.stream.container El contenedor asociado al vídeo (MP4, 3GP, etc.). No aplicable a vídeos remotos.
asset.stream.file_size El tamaño del stream, en bytes. No aplicable a vídeos remotos.
asset.stream.url La URL del stream. No puede filtrar por este atributo. No aplicable a vídeos remotos.
asset.stream.video_bitrate La tasa de transmisión de bits, en kbps (kilobits por segundo). No aplicable a vídeos remotos.
asset.stream.video_codec Los códecs de vídeo asociados al vídeo. No aplicable a vídeos remotos.
asset.stream.video_height La altura del stream, en píxeles. No aplicable a vídeos remotos.
asset.stream.video_width La anchura del stream, en píxeles. No aplicable a vídeos remotos.
asset.stream_urls.flash Solo vídeos remotos. La URL del stream Flash.
asset.stream_urls.iphone Solo vídeos remotos. La URL del stream iPhone.
asset.stream_urls.ipad Solo vídeos remotos. La URL del stream iPad.
asset.stream_urls.itunes Solo vídeos remotos. La URL del stream iTunes.
asset.stream_urls.source_file Solo vídeos remotos. La URL del stream fuente. La fuente se utiliza como alternativa si el dispositivo no es capaz de reproducir cualquiera de los otros streams definidos.
asset.preview_image.url La URL de la imagen previa
asset.preview_image.width La anchura de la imagen previa, en píxeles
asset.preview_image.height La altura de la imagen previa, en píxeles
label.id El identificador de una etiqueta
label.name El nombre de una etiqueta
label.full_name El nombre completo de una etiqueta
asset.primary_entry_point Solo emisiones en vivo. URL de stream.
asset.backup_entry_point Solo emisiones en vivo.
asset.is_flash Solo emisiones en vivo. El stream es para el reproductor Flash.
asset.is_ios Solo emisiones en vivo. El stream es para dispositivos iOS.
asset.encodings Solo emisiones en vivo. Codificaciones del stream.

Marcado de salida

El marcado de salida le permite visualizar propiedades del vídeo. Por ejemplo:

"{{asset.name}}" was a great movie.
As your closest friend, I recommend that you see it right away.
{{asset.description}}
It is only {{asset.duration}} minutes long.
   

También puede aplicar transformaciones a la salida. Por ejemplo:

WATCH "{{asset.name | upcase}}" RIGHT NOW!!! 
   

En la siguiente tabla se enumeran los marcados de salida y se proporcionan entradas y salidas de ejemplo:

Marcado Descripción Entrada de ejemplo Salida de ejemplo
capitalize Pone mayúscula inicial a las palabras de la oración de entrada {{'hello' | capitalize }} Hello
downcase Pone la cadena en minúsculas {{'Hello' | downcase }} hello
upcase Pone la cadena en mayúsculas {{'hello' | upcase }} HELLO
size Devuelve el tamaño de la cadena {{'hello' | size }} 5
strip_html Quita el HTML de la cadena {{'<p>hello</p>' | strip_html }} hello
strip_newlines Quita los saltos de línea (\n) de la cadena {{'hello \n hello \n hello' | strip_newlines }} hello hello hello
newline_to_br Reemplaza los saltos de línea (\n) con un salto de HTML (<br/>) {{'hello \n hello \n hello' | newline_to_br }} hello <br/> hello <br/> hello
replace Reemplaza todas las coincidencias dentro de la cadena. {{'hello' | replace:'goodbye' }} goodbye
replace_first Reemplaza la primera coincidencia dentro de la cadena. {{'goodbye goodbye' | replace_first:'hello','goodbye' }} hello goodbye
remove Elimina todas las coincidencias dentro de la cadena. {{'hello goodbye' | remove:'goodbye' }} hello
remove_first Elimina la primera coincidencia dentro de la cadena. {{'hello hello hello' | remove_first:'hello ' }} hello hello
truncate Trunca la cadena. {{'goodbye' | truncate:4 }} good
truncatewords Trunca la cadena en el número especificado de palabras. {{ 'My name is Matt and I would like to talk with you about the miracle of multi-level marketing' | truncatewords:4 }} My name is Matt
prepend Antepone el texto especificado a la cadena. {{ 'goodbye' | prepend:'hello ' }} hello goodbye
append Pospone el texto especificado a la cadena. {{ 'hello' | append:' goodbye' }} hello goodbye

Marcado de etiquetas

El marcado de etiquetas le permite aplicar la lógica a su plantilla. El marcado de etiquetas incluye lo siguiente:

  • for
  • if
  • case/when
  • unless
  • comment

En la siguiente tabla se enumeran los marcados de etiquetas y se proporcionan entradas y salidas de ejemplo:

Lógica Descripción Ejemplo Salida de ejemplo
for Enlaza colecciones.
{% for asset in assets %}
  {{ asset.name }}: {{ asset.duration }} minutes
{% endfor assets %}  
    

Trilogía de El Señor de los Anillos: 560 minutos Edición especial ampliada del Señor de los Anillos: 718 minutos

if/else Muestra información si las condiciones se cumplen.
{% for asset in assets %}
   {% if asset.name == "Blade Runner" and asset.duration = 117 %}
     {{ asset.name }} is a great movie!
   {% elsif asset.name == "Blade Runner" and asset.duration = 116 %}  
     You really should watch the 25th Anniversary Edition of {{ asset.name }}.
   {% else %}
     {{ asset.name }} is an okay movie.
  {% endif %}
{% endfor assets %}     
    

Blade Runner es una gran película.

when Muestra contenido condicionalmente
{% for asset in assets %}
Name: {{ asset.name }}
{% case template %}
{% when "description" %}
Description: {{ asset.description }}
{% endcase %}
{% endfor assets %}   
     

El Blade Runner Deckard tiene que encontrar y acabar con cuatro replicantes que han secuestrado una nave espacial y han regresado a la Tierra para buscar a su creador.

comment Comenta información.
There are some things that you know{% comment %} 
and others that you don't{% endcomment %}.

Hay algunas cosas que sabes.

Filtros de streams e imágenes previas

Puede aplicar filtros para limitar los resultados devueltos de streams e imágenes previas.

Los filtros aceptan los siguientes elementos:

  • =
  • >
  • <
  • >=
  • <=
  • max
  • min

Los siguientes ejemplos devuelven la URL de la imagen previa si se cumplen los criterios de filtrado:

asset.preview_image[height > 400].url
asset.preview_image[height <= 640].url
asset.preview_image[width >= 400].url
asset.preview_image[width = 320].url
asset.preview_image[max height].url
asset.preview_image[max width].url
asset.preview_image[min height].url
asset.preview_image[min width].url
   

El siguiente ejemplo devuelve la anchura de la imagen previa con la mayor anchura:

asset.preview_image[max width].width
   

Ejemplos

Este ejemplo crea una feed de vídeo sencillo:

<feed header>List of My Assets</feed header>
{% for asset in assets %}
  <item>
    <title> {{asset.name}} </title>
    <video_info> {{asset.description}} </video_info>
  </item>
{% endfor assets %}

    

Backlot devuelve una feed similar a la siguiente:

<feed header>List of My Assets</feed header>
<item>
  <title>Presidential Speech #125784</title>
  <video_info>The president said something important today about something that happened.</video_info>
</item>
  <title>Presidential Speech #125785</title>
  <video_info>The president said something important today about something that should happen.</video_info>
</item>

    

Puede que desee crear listas de sus vídeos, que se pueden importar a una hoja de cálculo. Este ejemplo crea un inventario de vídeos que especifica sus ID (a partir de los metadatos), nombres, propietarios (a partir de los metadatos) y duraciones:

{% for asset in assets %}
Name, Duration, Content Owner
{{ asset.metadata ["my_id"] }}, {{ asset.name }}, {{ asset.metadata ["owner"] }}, { asset.duration }}
{% endfor assets %}       
    

Backlot devuelve una feed similar a la siguiente:

 asset_01245344, Lord of the Rings: The Fellowship of the Ring, New Line, 228
 asset_01245856, Blade Runner, Warner, 117
 asset_01232844, Pulp Fiction, Miramax, 154
    

Este devuelve la configuración de vídeo de todos los streams:

{% for stream in asset.streams %}
  width:{{stream.video_width}}
  height:{{stream.video_height}}
{% endfor %}	

    

Backlot devuelve una feed similar a la siguiente:

640
480
1024
768	
	
    

Este ejemplo devuelve vídeos que tengan streams iPhone:

{% if asset.streams[iphone].exists %}
  <stream type="iphone">
    <url>{{ asset.streams[iphone].url }}</url>
  </stream>
{% endif %}
    

Backlot devuelve una feed similar a la siguiente:

  <stream type="iphone">
    <url>http://iphone_url1</url>
    <url>http://iphone_url2</url>
    <url>http://iphone_url3</url>
  </stream>
    

Este ejemplo devuelve un stream de alta resolución si existe y recuerda cargar uno si no existe:

   
{% if asset.streams[video_width >= 720].exists %}
<stream type="hd">
  <url>{{ asset.streams[iphone].url }}</url>
</stream>
{% else %}
   <placeholder>HD stream needed</placeholder>
{% endif %}
    

Si hay múltiples páginas de resultados, Backlot genera cada página. En el ejemplo siguiente, si hay otra página de resultados, Backlot muestra un enlace a la página siguiente.

{% for asset in assets %}
  <name>{{asset.name}}</name>
  <link>{{asset.stream_urls.source_file}}</link>
  {% if {{page_token}} %}
    <page_token>[[SDLENTITYREF[lt]]]![CDATA[{{page_token}}]][[SDLENTITYREF[gt]]]</page_token>
  {% endif %}
{% endfor %}    
    
Note: En este ejemplo, marcar la URL como datos textuales evita que caracteres como "&" causen problemas en XML.