Playlist
Una playlist è un documento JSON di pagine. playlist init prepara un documento a schermo intero da input ordinati. playlist create e playlist update leggono quel documento da un file; playlist patch, playlist rename e playlist page add|replace|remove ne modificano una parte. La forma è riassunta sotto i comandi.
playlist init#
Prepara una playlist a schermo intero modificabile da file multimediali locali, ID media pronti, ID release app, URL HTTP o HTTPS, o codici di incorporamento iframe incollati.
playlist init <inputs...> --name NAME --output FILE [--overwrite] [--screen-id ID]
[--target-width PX --target-height PX] [--duration-ms MS] [--fit contain|cover|fill] [--sound]
[--no-transcode] [--no-progress] [--poll-ms MS]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<inputs...> | file, ID med_, ID rel_, URL HTTP o HTTPS o codici di incorporamento <iframe> incollati | sì | nessuno | Ordine di riproduzione. I file immagine, video e audio locali si caricano e attendono la disponibilità a meno che --no-transcode. I media esistenti devono essere già pronti. Un file audio o un ID med_ audio pronto diventa la colonna sonora, in ordine di input, invece di una pagina; almeno un input deve essere una pagina. Gli URL HTTP e HTTPS possono includere host della rete locale, credenziali incorporate e token dello schermo come {screen.field.kiosk_id}, mantenuti come scritti, e non vengono scaricati. Un codice di incorporamento incollato viene letto per il suo src. L’app web del Player richiede URL HTTPS senza nome utente o password. |
--name NAME | string | sì | nessuno | Nome visualizzato della playlist. |
--output FILE | path | sì | nessuno | Scrivi il documento della playlist modificabile. Le cartelle genitore sono create. Esclusivo per impostazione predefinita: un file esistente non vuoto fallisce con usage_error (uscita 2) e resta intatto. |
--overwrite | boolean | no | spento | Sostituisci un file di output esistente in modo atomico con un documento creato da questi input. |
--screen-id ID | string | no | nessuno | Leggi le dimensioni e la revisione dello schermo di destinazione. Uno schermo con un video wall fornisce la tela del wall e il format corrispondente. |
--target-width PX / --target-height PX | integer | insieme | non impostato | Sovrascrivi la dimensione della tela. Entrambe o nessuna. Richiesto quando non è fornito uno schermo o lo schermo riporta superfici sconosciute o multiple. |
--duration-ms MS | integer | no | 8000 | Durata per le pagine non video. Una pagina applicazione resta per 24 ore (86400000) a meno che non sia indicata. |
--fit | string | no | contain | contain, cover o fill per pagine di immagini e video. Applicazioni e iframe usano fill. |
--sound | boolean | no | spento | Riproduce l’audio delle pagine video. Senza di essa ogni pagina video è muta. Una pagina con audio mette in pausa la colonna sonora mentre è visibile. |
--no-transcode | boolean | no | spento | Byte del file caricato accettati senza modifiche. |
--no-progress | boolean | no | spento | Sopprimi il progresso di caricamento su stderr. |
--poll-ms MS | integer | no | 1000 | Intervallo di polling per il caricamento. |
screenrig playlist init med_01EXAMPLEIMAGE0000000000 med_01EXAMPLEVIDEO0000000000 --name "Lobby loop" --screen-id scr_01EXAMPLESCREEN00000000 --output lobby.jsonLa preparazione scrive il documento locale e può caricare contenuti multimediali; non crea una playlist remota né assegna uno schermo. Ispeziona il documento, poi screen publish. Vedi Prepara, pubblica e modifica playlist.
data riporta output, width, height, page_count, soundtrack_tracks, release_ids, media_ids e uploads, e con --screen-id anche screen_id, screen_revision e publish.argv; uno schermo con un video wall aggiunge format. Una pagina applicazione impostata a meno di 60 secondi genera un avviso application_page_short.
playlist validate#
Valida un documento playlist localmente prima di creare o aggiornare. Nessuna rete.
playlist validate <file>| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<file> | path | sì | nessuno | Il documento della playlist, o - per stdin. |
screenrig playlist validate ./lobby-loop.jsonGli errori indicano percorsi JSON esatti. Un pass significa che la forma locale e la semantica cross-field sono valide; autorizzazione, prontezza media, conteggi selettore dinamico, durate e disponibilità remota richiedono ancora controlli server. playlist create, playlist update e screen publish eseguono questo controllo prima della scrittura. data riporta valid, scope e server_checks, e include segnalazioni di geometria lint, ciascuna con page_id, code, id e message, che non fanno fallire il controllo: motion_overuse, collision, safe_margin e adjacent_repeat. Una pagina applicazione che avanza in meno di 60 secondi genera un avviso application_page_short. Per vedere come appare una pagina, pubblicala ed esegui screen screenshot.
playlist create#
Crea una playlist da un documento JSON, da un modello o dal modello integrato Avviso urgente.
playlist create [file] [--from-template ID --name NAME [--set NAME=VALUE...] [--dry-run]] [--starter KEY [--name NAME]] [--format-region REGION --format-orientation ORIENTATION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
[file] | path | no | nessuno | Il documento della playlist, o - per stdin. Indicalo, oppure --from-template, oppure --starter. Contiene name, pages e, facoltativamente, audio, format e fields; qualsiasi altro membro è un usage_error. |
--from-template ID | string | no | nessuno | Crea la playlist da questo modello (un id pl_): le sue pagine attuali con i valori di --set, verificata come qualsiasi playlist. |
--name NAME | string | con --from-template | nessuno | Il nome della nuova playlist. --dry-run non lo richiede, e --starter lo accetta facoltativamente. |
--set NAME=VALUE | string | no | nessuno | Con --from-template: il valore di un campo; per un campo multimediale, l'id di un'immagine o di un video pronto. Ripetibile. NAME è un nome di campo da 1 a 32 lettere minuscole, cifre o trattini bassi, indicato una sola volta. |
--dry-run | boolean | no | spento | Con --from-template: verifica i valori e riporta il numero di pagine senza creare nulla. |
--starter KEY | string | no | nessuno | Aggiungi un modello integrato: urgent-notice, un titolo e un messaggio per annunci rapidi. |
--format-region REGION | string | no | nessuno | header, footer o side: trasforma la playlist in una fascia disegnata sopra la pagina lungo quel bordo e sostituisce un format nel file. Indicala insieme a --format-orientation. Vedi fasce. |
--format-orientation ORIENTATION | string | con --format-region | nessuno | landscape o portrait: l’orientamento del display per cui è fatta la fascia, come lo vede lo spettatore. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig playlist create ./lobby-loop.jsonscreenrig playlist create --from-template pl_01EXAMPLETEMPLATE00000 --name "Monday notice" --set headline="Open late"data.id della busta è l'id pl_ che accetta screen assign. Quando la modifica attende la revisione, data è {status: pending_review, review, playlist, next}: la playlist esiste con approved_revision: 0 e nessuno schermo può mostrarla finché una persona non approva (playlist_not_approved); next è screenrig reviews show ID. Un modello è una playlist che dichiara fields; non viene mai mostrato su uno schermo (playlist_is_template), e una playlist creata da esso è una playlist normale da assegnare, pianificare e rivedere.
playlist update#
Sostituisci un documento playlist.
playlist update <id> <file> [--format-region REGION --format-orientation ORIENTATION] [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
<file> | path | sì | nessuno | Il documento sostitutivo, o - per stdin. Contiene name, pages e, facoltativamente, audio, format e fields; qualsiasi altro membro è un usage_error. Omettere audio rimuove la colonna sonora, omettere format rende la playlist una playlist ordinaria, e fields, se omessi, vengono mantenuti. |
--format-region REGION | string | no | nessuno | header, footer o side: trasforma la playlist in una fascia disegnata sopra la pagina lungo quel bordo e sostituisce un format nel file. Indicala insieme a --format-orientation. Vedi fasce. |
--format-orientation ORIENTATION | string | con --format-region | nessuno | landscape o portrait: l’orientamento del display per cui è fatta la fascia, come lo vede lo spettatore. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig playlist update pl_01EXAMPLEPLAYLIST000000 ./lobby-loop.jsonplaylist show ID --output FILE scrive un file con questa forma. Per modificare solo una parte di una playlist, usa playlist patch, playlist rename o playlist page add|replace|remove.
Quando la modifica attende la revisione, la playlist live continua a suonare senza cambiamenti finché una persona non approva la proposta.
playlist patch#
Cambia solo i membri di primo livello forniti di una playlist e mantieni tutto il resto.
playlist patch <id> [file] [--name NAME] [--clear-audio] [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
[file] | path | no | nessuno | Un oggetto JSON parziale con uno qualsiasi tra name, pages, audio, format e fields, oppure - per stdin. pages, audio e format, se forniti, sostituiscono l’intero valore; gli array non vengono uniti. audio: null rimuove la colonna sonora e format: null rimuove il formato. |
--name NAME | string | no | invariato | Imposta il nome, da 1 a 120 caratteri dopo la pulizia, senza inviare il contenuto. Non insieme a name nel file. |
--clear-audio | boolean | no | spento | Rimuovi la colonna sonora, come fa audio: null. Nessuna pagina può mantenere un audio_cue. Non insieme a audio nel file. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig playlist patch pl_01EXAMPLEPLAYLIST000000 --name "Lobby loop" --expect-rev 7
screenrig playlist patch pl_01EXAMPLEPLAYLIST000000 changes.json --expect-rev 7Indica un file, --name o --clear-audio. Una modifica del solo nome non ricontrolla il contenuto esistente. pages e audio forniti vengono controllati insieme dal server. Una regione format è {"region": "header", "orientation": "landscape"}; vedi fasce. Con l’accesso Proponi, o in un progetto che richiede la revisione per le modifiche dell’agente, la modifica attende come per playlist update e risponde pending_review.
playlist rename#
Cambia il nome di una playlist senza inviare il suo contenuto.
playlist rename <id> --name NAME [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
--name NAME | string | sì | nessuno | Il nuovo nome, da 1 a 120 caratteri dopo la pulizia. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig playlist rename pl_01EXAMPLEPLAYLIST000000 --name "Lobby loop" --expect-rev 7La forma di playlist patch per il solo nome: pagine, colonna sonora e commenti restano come sono, e il contenuto esistente non viene ricontrollato. Una ridenominazione proposta attende l’approvazione di una persona come qualsiasi altra modifica.
playlist page add#
Aggiungi una pagina a una playlist senza inviare le altre.
playlist page add <playlist-id> (--file PAGE.json | --media MED_ID) [--seconds N] [--fit contain|cover] [--sound]
[--from WHEN] [--until WHEN] [--before PAGE_ID] [--page-id ID]
[--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<playlist-id> | string | sì | nessuno | L’ID playlist pl_. |
--file PAGE.json | path | esattamente uno tra --file, --media | nessuno | Un oggetto pagina aggiunto così com’è, oppure - per stdin. --seconds e --fit non si applicano. |
--media MED_ID | string | esattamente uno tra --file, --media | nessuno | Un’immagine o un video pronti. La pagina li mostra a tutta tela sulla tela della playlist (la tela del wall per un video wall, altrimenti quella della prima pagina ordinaria) con la transizione della prima pagina ordinaria, e non ha date a meno che tu non le indichi. Un’immagine avanza dopo --seconds; un video viene riprodotto fino alla fine, senza audio a meno che non usi --sound. |
--seconds N | integer | no | 10 | Quanto dura la visualizzazione di un’immagine, da 1 a 86400. |
--fit | string | no | contain | contain o cover. |
--sound | boolean | no | spento | Riproduce l’audio del video. Solo per un video; la pagina mette in pausa la colonna sonora mentre è visibile e non può avere un audio_cue. Non insieme a --file, la cui pagina porta il proprio muted. |
--from WHEN | string | no | nessuno | Primo momento in cui la pagina viene mostrata: YYYY-MM-DDTHH:MM, o YYYY-MM-DD per le 00:00, nel fuso orario di ogni schermo. |
--until WHEN | string | no | nessuno | Fine della visualizzazione della pagina, esclusa: YYYY-MM-DDTHH:MM, o YYYY-MM-DD per la fine di quel giorno. |
--before PAGE_ID | string | no | in fondo | Metti la pagina prima di questa pagina. |
--page-id ID | string | no | up- e otto lettere minuscole o cifre | L’id della nuova pagina: una lettera, poi lettere, cifre, - o _, al massimo 64 caratteri. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig playlist page add pl_01EXAMPLEPLAYLIST000000 --media med_01EXAMPLEIMAGE0000000000 --from 2026-12-01 --until 2026-12-24
screenrig playlist page add pl_01EXAMPLEPLAYLIST000000 --media med_01EXAMPLEVIDEO0000000000 --before up-ab12cd34 --note "Winter menu"
screenrig playlist page add pl_01EXAMPLEPLAYLIST000000 --file page.json --page-id welcomeLa pagina viene mostrata da --from fino a --until escluso. Le pagine terminate restano finché qualcuno non le rimuove. La risposta è la playlist aggiornata.
Con l’accesso Proponi, in un progetto che richiede la revisione per le modifiche dell’agente, o come membro uploader le cui modifiche sono riviste, la modifica risponde pending_review (ok: true, uscita 0). Una successiva modifica di pagina alla stessa playlist dello stesso proponente si unisce a quella revisione mentre attende, così i caricamenti successivi non si sostituiscono a vicenda. Una playlist che nessuna persona ha ancora approvato risponde playlist_not_approved. Un uploader aggiunge solo pagine media delle sue cartelle alle proprie playlist; qualsiasi altra cosa è outside_upload_scope, il cui upload_scope elenca ciò che può usare. Vedi Uploader.
playlist page replace#
Sostituisci una pagina di una playlist, mantenendo la sua posizione e il suo id.
playlist page replace <playlist-id> <page-id> [--file PAGE.json | --media MED_ID] [--seconds N] [--fit contain|cover]
[--sound] [--from WHEN] [--until WHEN | --always] [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<playlist-id> | string | sì | nessuno | L’ID playlist pl_. |
<page-id> | string | sì | nessuno | La pagina da sostituire. |
--file PAGE.json | path | no | nessuno | La nuova pagina completa, oppure - per stdin. Il suo id deve essere <page-id> o assente. Non insieme a --media. |
--media MED_ID | string | no | nessuno | Cambia i media della pagina; tutto il resto, date incluse, resta com’è memorizzato. Un’immagine al posto di un’immagine mantiene la tela, l’adattamento, i secondi e le date, e lo stesso vale per un video al posto di un video. Un’immagine al posto di un video, o viceversa, viene ricostruita come pagina media sulla tela della playlist che mantiene id, transizione e date. Richiede una pagina con una sola primitiva. |
--seconds N | integer | no | invariato | Quanto dura la visualizzazione di un’immagine, da 1 a 86400. Non con --file. |
--fit | string | no | invariato | contain o cover. Non con --file. |
--sound | boolean | no | spento | Riproduce l’audio del video della pagina, da solo o con --media. Solo per una pagina con una sola primitiva video; senza di esso una sostituzione mantiene l’audio che la pagina aveva. Non insieme a --file. |
--from WHEN | string | no | invariato | Primo momento in cui la pagina viene mostrata: YYYY-MM-DDTHH:MM, o YYYY-MM-DD per le 00:00, nel fuso orario di ogni schermo. Modifica solo quel limite. |
--until WHEN | string | no | invariato | Fine della visualizzazione della pagina, esclusa: YYYY-MM-DDTHH:MM, o YYYY-MM-DD per la fine di quel giorno. Modifica solo quel limite. |
--always | boolean | no | spento | Rimuovi le date della pagina, from e until. Uno spegnimento, le finestre settimanali o una condizione sui dati impostati dal progetto restano. Non insieme a --from o --until. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Una pagina derivata da quella memorizzata è vincolata alla revisione in cui è stata letta, a meno che tu non ne indichi una. Un valore obsoleto è revision_conflict. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig playlist page replace pl_01EXAMPLEPLAYLIST000000 up-ab12cd34 --media med_01EXAMPLEIMAGE0000000000
screenrig playlist page replace pl_01EXAMPLEPLAYLIST000000 up-ab12cd34 --until 2026-12-31
screenrig playlist page replace pl_01EXAMPLEPLAYLIST000000 up-ab12cd34 --alwaysIndica almeno uno tra --file, --media, --sound, --from, --until o --always. I flag di data funzionano anche su una pagina con più primitive; cambiare i media, l’adattamento o i secondi richiede una pagina con una sola primitiva, oppure l’intera pagina in --file. Un id pagina sconosciuto viene rifiutato. Le regole di revisione e uploader sono quelle di playlist page add; un uploader sostituisce solo una pagina media delle sue cartelle.
playlist page remove#
Rimuovi una pagina da una playlist.
playlist page remove <playlist-id> <page-id> [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<playlist-id> | string | sì | nessuno | L’ID playlist pl_. |
<page-id> | string | sì | nessuno | La pagina da rimuovere. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig playlist page remove pl_01EXAMPLEPLAYLIST000000 up-ab12cd34Una playlist mantiene da 1 a 100 pagine e una pagina ordinaria senza visibility, quindi rimuovere l’ultima pagina senza date è invalid_request. Una pagina sconosciuta è not_found. Le regole di revisione e uploader sono quelle di playlist page add.
playlist show#
Leggi una playlist, inclusa la sua revisione corrente, oppure scrivila come documento modificabile.
playlist show <id> [--output FILE [--overwrite]] [--editable]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
--output FILE | path | no | nessuno | Scrivi il documento modificabile in FILE e riporta il suo percorso, playlist_id e revision. Il file è pronto per playlist update così com’è. Le cartelle genitore sono create. Esclusivo per impostazione predefinita. Ha la precedenza su --editable. |
--overwrite | boolean | no | spento | Sostituisci un file --output esistente in modo atomico. Un file vuoto lasciato da un’esecuzione interrotta viene sostituito senza questa opzione. |
--editable | boolean | no | spento | Restituisci il documento modificabile e la sua revisione nella busta come data.document, data.playlist_id e data.revision. |
screenrig playlist show pl_01EXAMPLEPLAYLIST000000
screenrig playlist show pl_01EXAMPLEPLAYLIST000000 --output playlist.json
screenrig playlist show pl_01EXAMPLEPLAYLIST000000 --editableUn show semplice è una risposta di ispezione. Restituisce la versione live. approved_revision è 0 per una playlist che nessuna persona ha ancora approvato, e approval nomina la revisione aperta mentre un cambiamento attende; reviews show ID restituisce la proposta. Quando ci sono note aperte sulla playlist, l’avviso notes_about_resource le conta e nomina screenrig notes --about ID, e --human ne elenca fino a cinque.
playlist list#
Elenca le playlist del progetto
playlist list [--templates] [--library]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--templates | boolean | no | spento | Solo modelli: playlist che dichiarano dei campi. |
--library | boolean | no | spento | Elenca invece le playlist della Libreria dell’organizzazione, in sola lettura: assegnale a schermi, programmazioni e pile, oppure copiane una con playlist create --from-template; modificale solo nel progetto Libreria. |
screenrig playlist list --templates
screenrig playlist list --libraryplaylist fields#
Mostra i campi di un modello o i valori di una copia, oppure cambia i valori e aggiorna la copia.
playlist fields <id> [--set NAME=VALUE...] [--clear NAME...] [--refresh] [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L'id pl_ di un modello o di una playlist creata da un modello. |
--set NAME=VALUE | string | no | nessuno | Imposta il valore di un campo. Ripetibile; NAME è un nome di campo da 1 a 32 lettere minuscole, cifre o trattini bassi, indicato una sola volta. |
--clear NAME | string | no | nessuno | Cancella il valore di un campo facoltativo. Ripetibile. |
--refresh | boolean | no | spento | Ricostruisce le pagine dalla revisione attuale del modello, qualunque siano i valori. |
--expect-rev REVISION | string | no | nessuno | Richiede facoltativamente questa revisione della risorsa. |
--note TEXT | string | no | nessuno | Una nota per la persona che esamina la modifica. |
screenrig playlist fields pl_01EXAMPLECOPY00000000 --set headline="Closed today"Senza opzioni mostra i campi di un modello e quante playlist sono state create da esso, oppure i valori di una copia, la revisione del modello da cui è stata creata e se il modello ne ha una più recente. data.kind è template o instance: un modello riporta fields e instances, una copia template_id, template_revision, template_current_revision, outdated e values. Ogni modifica, e --refresh da solo, ricostruisce le pagine della copia dalla revisione attuale del modello, ed è così che una modifica del marchio fatta sul modello raggiunge le copie esistenti; nulla viene inviato automaticamente. I valori vengono verificati come in una creazione. Con l'accesso Propose, una modifica diventa una revisione.
playlist instances#
Elenca le playlist create da un modello e la revisione del modello da cui è stata creata ciascuna.
playlist instances <id>| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L'id pl_ del modello. |
screenrig playlist instances pl_01EXAMPLETEMPLATE00000outdated indica una playlist creata da una revisione precedente del modello; playlist fields ID --refresh la aggiorna.
playlist revisions#
Elenca le revisioni di una playlist, dalla più recente.
playlist revisions <id> [--after CURSOR]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
--after CURSOR | string | no | nessuno | Il data.next_cursor della pagina precedente. |
screenrig playlist revisions pl_01EXAMPLEPLAYLIST000000Ogni revisione in data.items indica cosa l'ha creata (created, edited, promoted con la revisione copiata come restored_from, oppure baseline, la revisione che la playlist aveva quando è iniziata la sua cronologia), chi l'ha fatta, quando, il suo nome, quante pagine contiene e se è current. Una pagina contiene al massimo 50 revisioni; finché data.next_cursor è una stringa, restano revisioni più vecchie, e null contrassegna l'ultima pagina. Le revisioni vengono conservate finché esiste la playlist.
playlist revision show#
Leggi una revisione e la playlist com'era in quella revisione.
playlist revision show <id> --revision N| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
--revision N | integer | sì | nessuno | La revisione da leggere. |
screenrig playlist revision show pl_01EXAMPLEPLAYLIST000000 --revision 3data.revision contiene i campi elencati da playlist revisions, e data.playlist contiene la playlist com’era: nome, pagine, colonna sonora e formato, con revision impostato su questa revisione. Una revisione che la playlist non ha mai avuto, o una precedente all’inizio della sua cronologia, è not_found.
playlist promote#
Rendi di nuovo corrente una revisione precedente copiandola come nuova revisione.
playlist promote <id> --revision N --expect-rev CURRENT| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
--revision N | integer | sì | nessuno | La revisione da copiare. |
--expect-rev CURRENT | string | sì | nessuno | La revisione corrente della playlist (playlist show). Un valore obsoleto è revision_conflict: rileggi la playlist e riprova. |
screenrig playlist promote pl_01EXAMPLEPLAYLIST000000 --revision 3 --expect-rev 9Le pagine, la colonna sonora e il formato della revisione diventano la revisione successiva. Il nome resta invariato, le revisioni precedenti restano nell'elenco e ogni schermo che mostra la playlist si aggiorna; il comando termina una volta scritta la playlist e non attende i Player. Le pagine vengono risolte di nuovo come per qualsiasi scrittura: un selettore corrisponde ai media di oggi, e media o un'applicazione usati dalla revisione che non esistono più o non sono pronti fanno rifiutare la promozione con il problema che una scrittura riceverebbe. La promozione richiede una credenziale che pubblica dal vivo; una le cui modifiche attendono una revisione riceve forbidden, e una playlist che nessuna persona ha ancora approvato è playlist_not_approved. Una revisione il cui contenuto è già quello corrente non cambia nulla. La promozione è una funzionalità Premium: un piano senza risponde feature_not_in_plan (uscita 8), mentre playlist revisions e playlist revision show sono inclusi in ogni piano.
playlist delete#
Elimina una playlist.
playlist delete <id> [--expect-rev REVISION]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
screenrig playlist delete pl_01EXAMPLEPLAYLIST000000Una playlist non viene eliminata finché uno schermo, archiviato o ancora in attesa di associazione, la ha come predefinita, nel suo programma playlist o come takeover, finché una cartella di schermi la ha come predefinita, o finché una campagna la riproduce: la risposta è resource_conflict (uscita 5). Modifica prima quelli.
playlist export#
Esporta file di immagini e video, audio della colonna sonora e URL iframe come bundle di playlist portatile.
playlist export <id> --output DIRECTORY [--skip-applications]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
--output DIRECTORY | path | sì | nessuno | Cartella di destinazione. Non deve già esistere; il pacchetto viene scritto tramite un file temporaneo e rinominato in posizione. |
--skip-applications | boolean | no | spento | Elimina le primitive applicative e le pagine vuote o controllate da un’applicazione. Deve rimanere almeno una pagina. Il risultato elenca gli ID delle primitive e delle pagine saltate. |
screenrig playlist export pl_01EXAMPLEPLAYLIST000000 --output ./lobby-bundleIl bundle contiene un manifest, il documento della playlist e file di immagini, video e audio della colonna sonora indirizzati in base al contenuto. Porta name, audio e pages; un format e il fields di un modello restano fuori. I selettori dinamici all, tag e folder vengono fissati su ID esatti, gli URL iframe vengono conservati e i commenti vengono esclusi.
Le schede, gli stream e le pagine adslot interrompono l’esportazione prima del download dei media. Anche le applicazioni la interrompono per impostazione predefinita; --skip-applications rimuove le primitive applicative e le pagine vuote o controllate da un’applicazione, indicando gli ID delle primitive e delle pagine saltate. Deve rimanere almeno una pagina. Le schede, gli stream e le pagine adslot interrompono l’esportazione anche con questa opzione.
Per ottenere un documento modificabile che conservi i riferimenti a schede e applicazioni, usa screenrig playlist show pl_01EXAMPLEPLAYLIST000000 --output playlist.json. Il documento usa le risorse esistenti dello stesso progetto.
playlist import#
Crea una playlist da una directory bundle o aggiorna una esistente da essa.
playlist import <directory> [--name NAME] [--update ID [--expect-rev REVISION]] [--poll-ms MS] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<directory> | path | sì | nessuno | Una cartella bundle scritta da playlist export. |
--name NAME | string | no | nome playlist del bundle | Da 1 a 120 caratteri. Assegna un nome alla nuova playlist, o rinomina quella che --update sostituisce. |
--update ID | string | no | una nuova playlist è creata | Aggiorna questa pl_ playlist invece di crearne una nuova. Interessa ogni schermo a cui è assegnata. Accetta opzionale --expect-rev. |
--expect-rev REVISION | string | no | nessuno | Con --update: la revisione corrente della playlist di destinazione. |
--poll-ms MS | integer | no | 1000 | Intervallo tra i poll dei caricamenti in attesa che i media siano pronti. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica quando attende la revisione, al massimo 280 caratteri. |
screenrig playlist import ./lobby-bundle
screenrig playlist import ./lobby-bundle --name "Lobby loop (copy)"
screenrig playlist import ./lobby-bundle --update pl_01EXAMPLEPLAYLIST000000I nomi visualizzati delle playlist possono ripetersi. L’importazione crea una playlist separata anche quando il nome corrisponde; usa --update con un ID per sostituire una playlist esistente.
L’importazione convalida l’intero bundle localmente prima che tocchi il progetto: manifest, documento, percorsi, tipi di media, lunghezze e hash. I media esistenti sono riutilizzati se corrispondono esattamente per nome file, tipo media, lunghezza byte, hash e tag; il resto viene caricato senza conversione, e la playlist è scritta solo dopo che ogni oggetto è pronto. data riporta mode (create o update), source_playlist_id, playlist, directory e media con total, reused e uploaded.
Con l’accesso Proponi, o in un progetto che richiede la revisione per le modifiche dell’agente, i media vengono comunque caricati e la scrittura della playlist diventa una revisione: data.status è pending_review, data.review la nomina e data.next è screenrig reviews show ID. Nulla cambia sullo schermo finché una persona non approva.
L’importazione non elimina né pota media remoti. Se un passaggio successivo fallisce dopo l’inizio di un caricamento, l’errore elenca gli oggetti confermati pronti e indica se la scrittura della playlist è iniziata. Ritentare lo stesso bundle riutilizza quegli oggetti.
playlist replace-release#
Mostra l’anteprima o applica la sostituzione di una release di app in una playlist, con gli schermi che raggiunge.
playlist replace-release <id> --page PAGE_ID --primitive PRIMITIVE_ID --release-id REL_ID
[--apply [--expect-rev REVISION] [--expect-impact TOKEN] [--note TEXT]]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID playlist pl_. |
--page PAGE_ID | string | sì | nessuno | L’id esatto della pagina che contiene l’applicazione. |
--primitive PRIMITIVE_ID | string | sì | nessuno | L’id esatto della primitiva application in quella pagina. |
--release-id REL_ID | string | sì | nessuno | La nuova release immutabile rel_, da data.application.release_id di app update. |
--apply | boolean | no | spento | Scrivi la sostituzione. Senza questa opzione il comando è un’anteprima di sola lettura. |
--expect-rev REVISION | string | no | nessuno | Con --apply: la revisione della playlist dall’anteprima. Una revisione corrente diversa è revision_conflict, e il server la controlla in modo atomico. |
--expect-impact TOKEN | string | no | nessuno | Con --apply: data.impact dall’anteprima. Se la sostituzione o gli schermi interessati sono cambiati nel frattempo, la scrittura è resource_conflict: ripeti l’anteprima. |
--note TEXT | string | no | nessuno | Con --apply: una nota per la persona che revisiona la modifica quando attende la revisione. |
screenrig playlist replace-release pl_01EXAMPLEPLAYLIST000000 --page board-page --primitive board --release-id rel_NEW
screenrig playlist replace-release pl_01EXAMPLEPLAYLIST000000 --page board-page --primitive board --release-id rel_NEW --applyL’anteprima elenca gli schermi attivi, in attesa di associazione e archiviati la cui assegnazione predefinita, le voci di programmazione memorizzate (comprese quelle in pausa e future), il takeover o la playlist effettiva corrente (comprese la riproduzione di campagna e di cartella ereditata) fanno riferimento alla playlist. data riporta previous_release_id, release_id, revision, affected_screens (ciascuno con id, label, state e revision), impact e applied. Un --apply diretto salta il rilevamento degli schermi, quindi affected_screens viene omesso a meno che non sia indicato --expect-impact. Una release già fissata riesce senza scrivere. In revisione, --apply propone il nuovo pin. Vedi Sostituisci una release di app.
Il documento della playlist
Una playlist è name (da 1 a 120 caratteri) più pages (da 1 a 100), con una colonna sonora audio opzionale e un format opzionale. Ogni pagina porta id, canvas, transition, advance, visibility opzionale, audio_cue opzionale e primitives (da 1 a 24). Gli id di pagina, primitiva e traccia sono una lettera seguita da fino a 63 lettere, cifre, _ o -; gli id di pagina sono unici nella playlist e gli id di primitiva nella loro pagina. Un canvas prende width e height da 1 a 1.000.000, un background e un viewport_fit opzionale: vedi Sfondo e movimento della pagina.
Un format rende una playlist un video wall, {displays, arrangement, orientation} con columns per un grid, o una fascia, {region, orientation}. Un wall ha da 2 a 12 display da 1920 x 1080 (1080 x 1920 in verticale), ogni pagina ordinaria ha la tela del wall, e il displays di una primitiva indica le tessere che copre al posto di rect. Vedi Video wall e Fasce. Una pagina di slot pubblicitario, {id, type: "adslot", adslot_id} con visibility opzionale, non contiene tela né primitive; una playlist ne contiene al massimo 16 e mantiene una pagina ordinaria senza visibility.
Un modello aggiunge fields al documento, [{name, label, type, required, max_length?}] con type pari a text, media o url, e può contrassegnare qualsiasi primitiva come locked: true. Una pagina legge un campo come {field.NAME} nei params di una scheda (campi testo e indirizzo), come selector.media_id di un'immagine o di un video (un campo multimediale) o come src completo di un iframe (un campo indirizzo). Ogni segnaposto deve indicare un campo dichiarato del tipo giusto, ogni campo deve essere letto e una primitiva bloccata non ne legge alcuno; playlist validate lo verifica offline. Solo il proprietario o un membro che può approvare modifica una primitiva bloccata (primitive_locked). Un modello dichiara al massimo 16 campi: name è composto da 1 a 32 lettere minuscole, cifre o trattini bassi, label fino a 60 caratteri, e il max_length di un campo di testo (predefinito 200) fino a 2000. Un campo multimediale o indirizzo facoltativo lasciato senza valore esclude la primitiva che lo legge. Dichiarare fields e bloccare una primitiva fanno parte dei modelli di playlist, una funzionalità Premium. Un format di video wall da 2 o 3 schermi richiede Plus, uno da 4 a 12 schermi Enterprise. Un piano senza la funzionalità risponde feature_not_in_plan con required_plan, mentre una scrittura che mantiene ciò che la playlist ha già resta disponibile. Creare una copia da un modello è incluso in ogni piano.
Le sei primitive sono image, video caricato, stream dal vivo, iframe web e application, e card. Testo e cornice non sono tipi di trasmissione: inserisci una card per testo dal vivo, oppure carica un’immagine fissa finita creata dal tuo agente e inseriscila come immagine.
Uno stream prende una o due sorgenti ordinate con protocolli unici e un’immagine pronta dallo stesso progetto come fallback_media_id. Usa al massimo uno stream per pagina e avanzamento basato sulla durata. HLS usa un URL HTTPS pubblico; i Player Android e Qt si collegano direttamente ai flussi RTSP delle telecamere, credenziali incluse. Consulta i dettagli sui trasporti delle telecamere per i formati di URL aperti da ciascun Player; il multicast diretto UDP/MPEG-TS opzionale su Android e Qt usa un gruppo IPv4 in 239/8 e una porta. Una sorgente può indicare solo il suo url e lasciare che lo schema indichi il protocollo. Altri Player selezionano l’alternativa HLS o mostrano il fallback. I byte dello stream non sono memorizzati in cache per la riproduzione. L’audio è disattivato di default; muted impostato su false lo riproduce, con le regole per l’audio di un video descritte più avanti. L’import e l’export del bundle playlist non supportano gli stream.
{
"id": "live",
"primitive": "stream",
"sources": [
{
"protocol": "udp-mpegts",
"group": "239.10.0.1",
"port": 5000
},
{
"protocol": "hls",
"url": "https://example.com/live.m3u8"
}
],
"fallback_media_id": "med_fallback",
"muted": true,
"rect": {
"x": 0,
"y": 0,
"width": 1920,
"height": 1080
},
"layer": 0,
"content_fit": "contain"
}Usa questa primitiva su una pagina con advance: {"mode":"duration","after_ms":30000}. Sostituisci il feed di esempio e l’ID di fallback. Requisiti del lettore e configurazione del trasporto.
Ogni primitiva è piatta: id, primitive, i campi propri di quella primitiva, poi rect, layer, content_fit, e enter e motion opzionali. Non esiste un oggetto contenuto annidato. rect è x, y, width e height in unità tela e layer un numero intero da 0 a 1024. Un rect può estendersi oltre la tela per l’abbondanza: i Player adattano il contenuto all’intero rect e poi ritagliano alla tela, quindi usa content_fit cover o fill per riempire la tela visibile. Una scheda si posiziona con layout e richiede un rect solo per free; su una playlist video wall displays sostituisce rect.
Le primitive immagine e video richiedono selector. selector.by è id con un media_id pronto e one_at_a_time false, ids con da 1 a 1,024 media_ids pronti univoci, all per ogni oggetto pronto di quella primitiva, tag che corrisponde a ^[A-Za-z0-9]{1,32}$, oppure folder con il folder_id di una cartella media mfd_ esistente, che riproduce i file pronti direttamente al suo interno e nessuna delle sue sottocartelle. Non mettere media_id sulla primitiva stessa e non inviare elementi risolti dal server. Una primitiva application fissa un release_id e una primitiva iframe richiede un src e un title da 1 a 200 caratteri, quindi nessuna delle due accetta un selettore. src è qualsiasi pagina http o https che lo schermo può raggiungere, inclusa una pagina LAN o dietro un login; un link YouTube viene memorizzato come il suo embed con riproduzione automatica. src, e il fallback_src facoltativo di un iframe, possono contenere token dello schermo come {screen.field.kiosk_id}, e una primitiva application può avere params con gli stessi token, così una playlist dà a ogni schermo la propria pagina. I Player Android, Amazon Signage Stick, Linux, Raspberry Pi e Windows aprono direttamente la pagina. L'app web Player e i Player macOS, Samsung Tizen, LG webOS e BrightSign la inseriscono in un frame, quindi una pagina che invia X-Frame-Options (DENY, SAMEORIGIN o l'obsoleto ALLOW-FROM), o un elenco Content-Security-Policy frame-ancestors senza l'origine del Player, mostra un frame bloccato su di essi, e l'app web Player mostra solo pagine https senza login nell'indirizzo. Quando la pubblicazione rileva una pagina HTTPS pubblica che rifiuta il framing, la scrittura riesce comunque e la CLI stampa la voce warnings del server: codice iframe_framing_refused, page_id, primitive_id e src, l'header che ha rifiutato e il passo successivo (usare una pagina che consente il framing dall'origine del Player, o chiedere al suo proprietario di consentire quell'origine). Il server aggiunge inoltre un'avvertenza playlist.iframe_framing_refused al registro eventi, una per pagina che rifiuta, che events list stampa con primitive_id. Una pagina LAN, una pagina http e una pagina che il server non raggiunge entro pochi secondi non vengono controllate. Un Player segnala una playlist come in riproduzione una volta che il suo manifest è a schermo, quindi una pubblicazione verificata non dimostra che una pagina iframe sia stata visualizzata: agisci sull'avvertenza, o guarda lo schermo. Entrambe le primitive web richiedono content_fit di fill, perché nessuna delle due ha una dimensione intrinseca.
Un iframe accetta anche reload_s (0, il valore predefinito, non ricarica mai; da 60 a 86400 ricarica src ogni reload_s secondi mentre la pagina è sullo schermo), fallback_src (la pagina mostrata quando src non si carica, con le forme e le regole di src; un src recuperato la sostituisce al ricaricamento successivo) e navigation_allowlist (da 1 a 64 origini host nella forma [scheme://]host[:port][path], come example.com, *.example.com o https://example.com/docs/; con un elenco, i link della pagina, le navigazioni via script e i reindirizzamenti raggiungono solo src, fallback_src e gli indirizzi corrispondenti; omettilo per nessuna restrizione, un elenco vuoto viene rifiutato). Un codice di incorporamento <iframe> incollato viene letto per il suo src. Una condivisione di Google Presentazioni, Documenti o Fogli, un link Pubblica sul web o di incorporamento, o un link Incorpora di Microsoft 365 viene memorizzato ricostruito per lo schermo: le presentazioni Google e PowerPoint si ripetono, una presentazione Google avanza secondo il ritardo proprio del link limitato alla durata della pagina (assegna alla pagina il tempo dell’intera presentazione), e Documenti, Fogli, Word ed Excel si ricaricano ogni 5 minuti. Un file che chiede agli spettatori di accedere viene rifiutato con document_not_shared, il cui dettaglio indica l’impostazione di condivisione da cambiare. Vedi Mostrare una pagina web, un video o un documento.
advance.mode è duration con after_ms, che su una pagina con esattamente un video YouTube (non una playlist né una diretta) può portare anche until impostato su video_end, così la pagina dura fino alla fine del video e after_ms è il tempo per cui viene mostrata quando lo schermo non riesce a leggere la durata del video, media_end su una pagina con esattamente un primitivo immagine o video, audio_end su una pagina il cui audio_cue nomina una traccia sonora, o application con max_ms quando l’app termina il proprio turno chiamando window.screenrig.nextPage(). Una pagina application necessita esattamente un primitivo marcato controller; ogni altra modalità lo vieta. after_ms, max_ms e dwell_ms sono millisecondi interi da 1.000 a 86.400.000, e un’immagine su una pagina media_end richiede dwell_ms. Una pagina contiene al massimo un stream e al massimo due primitivi application o iframe, e media_end vieta entrambi.
transition.type è uno tra crossfade, swipe-left, swipe-right, swipe-up, swipe-down, dip, wipe-left, wipe-right, wipe-up, wipe-down, slide-left, slide-right, slide-up, slide-down o stinger. duration_ms è obbligatorio, da 0 a 60000. playlist init scrive una dissolvenza incrociata di 200 ms. Lo swipe muove entrambe le pagine insieme come un carosello. Lo slide sposta la pagina in entrata sopra quella in uscita, che si sposta di un quarto della distanza. Il wipe scopre la pagina in entrata dietro un bordo netto in movimento. Il dip dissolve la pagina in uscita in un colore solido e poi nella pagina in entrata; color è un #RRGGBB opzionale, predefinito #000000, valido solo su dip. I nomi delle direzioni indicano la direzione del movimento: wipe-left è un bordo che si muove verso sinistra. ease è opzionale: linear, in, out o in-out; il predefinito è linear per crossfade e swipe-* e in-out per dip, wipe-* e slide-*; non è consentito su stinger. La pagina in entrata gestisce la propria transizione. La prima pagina di una playlist non ha transizione.
Uno stinger è una grafica a tema a schermo intero che copre la pagina in uscita, sostituisce la pagina in entrata mentre lo schermo è coperto, poi la scopre. Usalo per nominare una sezione di una playlist: mettilo sulla prima pagina della sezione. L’oggetto stinger è obbligatorio per type: "stinger" e non consentito per altri tipi. Tutti i suoi membri sono opzionali. theme è uno tra neomustard (default), cyanotype, propaganda, signal, avant-garde, bloom o primetime, e corrisponde ai temi delle schede. title è fino a 40 caratteri e subtitle fino a 60, impostati nel tipo di visualizzazione del tema. logo è media: più l’id di un’immagine pronta nel progetto, per esempio media:med_01EXAMPLE. accent è un #RRGGBB opzionale che sostituisce l’accento del tema. duration_ms per uno stinger è da 2000 a 6000 e copre tutto il bumper; le durate tipiche sono da 2700 a 4000. Il titolo resta completamente visibile per hang_ms, da 0 a 6000, default 1000 (un secondo), e hang_ms è al massimo il 60% di duration_ms; un hang più lungo richiede un duration_ms più lungo. Un Player che non può disegnare uno stinger riproduce un crossfade della stessa durata. Vedi la pagina live Stinger card per guardare la transizione in azione.
L’esempio seguente mostra una transizione di pagina con stinger:
{ "type": "stinger", "duration_ms": 3500, "stinger": { "theme": "primetime", "title": "BREAKFAST", "subtitle": "Served until 11", "logo": "media:med_01EXAMPLE", "hang_ms": 1000 } }Un oggetto enter opzionale su una primitiva aggiunge un’animazione dell’oggetto: fade-up, fade-down, fade-left, fade-right, fade-in, zoom-in o zoom-out, e un stagger opzionale da 0 a 8 ritarda il suo inizio di 120 ms per passo. Un motion opzionale mantiene una primitiva in movimento dopo che è entrata: spin e drift ruotano o fanno scorrere un’immagine o un video, e path sposta un’immagine, un video, un’applicazione o un iframe lungo dei waypoint. Vedi Sfondo e movimento della pagina.
Un oggetto pagina visibility opzionale limita quando la pagina viene riprodotta: un booleano enabled obbligatorio, limiti civili from e until opzionali, e fino a 16 ricorrenze windows di giorni e orari civili. from e until sono YYYY-MM-DDTHH:MM nel fuso orario di ogni schermo, from incluso e until escluso e successivo a from; una finestra è days (da mon a sun) con start e end come HH:MM, indicati insieme o entrambi omessi per l’intera giornata, e un end uguale o precedente a start attraversa la mezzanotte. enabled: false nasconde la pagina; enabled: true richiede almeno uno tra from, until, windows o data. Ogni playlist mantiene almeno una pagina senza alcun campo visibility. Uno schermo legge questi orari nel suo fuso orario effettivo: il suo override, altrimenti la zona segnalata dal suo Player, altrimenti UTC.
Una condizione visibility.data di pagina, {key, path?, equals?}, mostra la pagina solo finché un documento dati della scheda corrisponde: key è una chiave dati della scheda o un ID scheda, path un puntatore RFC 6901 nel documento e equals una stringa, un numero, un booleano o null (omettilo per verificare che il valore esista). La chiave {screen.weather} legge il meteo della posizione propria di ogni schermo, che screen update ID --location LAT,LON imposta: {"enabled":true,"data":{"key":"{screen.weather}","path":"/condition","equals":"rain"}} mostra la pagina solo finché piove dove si trova quello schermo. Il documento meteo ha condition (clear, cloud, fog, rain, snow, storm o wind), band (freezing sotto 0 °C, cold da 0 a 9, mild da 10 a 17, warm da 18 a 24, hot da 25), temperatureC in gradi interi e isDay. È il meteo attuale della cella da 0,25 gradi dello schermo, aggiornato circa ogni ora, non una previsione. Uno schermo senza posizione non mostra mai la pagina, e la pubblicazione rifiuta un path o un equals che il documento non può contenere, come cloudy al posto di cloud. Un Player che non dichiara la capacità host page.conditions riceve una pagina del genere disabilitata. Le condizioni sui dati sono una funzionalità Plus: senza di essa, una scrittura che aggiunge una condizione visibility.data che la pagina non ha già riceve feature_not_in_plan, mentre mantenere o rimuovere una condizione salvata e la visibilità per fasce orarie restano disponibili. Mantieni una pagina ordinaria senza visibility come alternativa.
Una primitiva video o stream viene riprodotta senza audio a meno che non imposti muted su false. In tal caso riproduce il suo suono al volume dello schermo finché la sua pagina è quella corrente, e quella pagina mette in pausa la colonna sonora della playlist, che riprende dallo stesso punto nella pagina successiva senza suono. Più primitive su una stessa pagina riproducono tutte il proprio suono. Una pagina con suono non può avere un audio_cue: una scrittura che ne aggiunge uno risponde invalid_request in pages[i].audio_cue, «a page with sound cannot cue the soundtrack», mentre una pagina più vecchia già salvata che ha entrambi continua a essere riprodotta. Gli annunci restano senza audio.
Un oggetto audio opzionale di livello superiore aggiunge una colonna sonora che suona continuamente mentre le pagine cambiano e si mette in pausa su una pagina con audio. tracks elenca da 1 a 128 voci in ordine di riproduzione, ciascuna con un id unico (il pattern id pagina) e il media_id di un oggetto media audio pronto. loop predefinito è true e ricomincia dalla prima traccia dopo l’ultima; volume predefinito è 1 e varia da 0 a 1, moltiplicato per il volume del Player; cued predefinito è false, e true ferma la colonna sonora dopo ogni traccia così che una traccia suona solo quando una pagina audio_cue la avvia. Una pagina ordinaria può portare audio_cue con un id track da quella lista e un booleano restart opzionale (default false): quando la pagina appare, il Player passa a quella traccia dall’inizio, riavviandola solo se già in riproduzione e restart è true. I cue sono suggerimenti, le pagine adslot non possono portarli, e un cue senza colonna sonora è rifiutato. Una pagina con advance {"mode":"audio_end"} termina quando finisce la traccia che il suo audio_cue nomina, quindi richiede quel cue e una colonna sonora, non prende after_ms, e segue le regole duration per primitiva immagine e video; una primitiva stream necessita ancora di una pagina duration, e un’app sulla pagina non è mai il suo controller; max_ms è un suggerimento opzionale che il server sovrascrive. playlist update sostituisce l’intero documento, quindi omettere audio rimuove la colonna sonora; playlist patch la mantiene a meno che non sia fornito audio, e --clear-audio o audio: null la rimuove. Una fascia non ha colonna sonora. Composizione colonna sonora.