Documentação

Links da frota: comandos da CLI

Crie links da frota para gerenciadores de dispositivos e mova mídia, playlists, agendamentos e telas de outra plataforma de sinalização para o screenRIG.

Cada comando funciona como descrito na referência da CLI: flags globais, saída JSON, códigos de saída, revisões e tentativas.

Migrar

migrate move para o projeto a mídia, as playlists, os layouts, as programações e as telas da sua plataforma de sinalização anterior. Roda no CLI, na sua máquina: a chave da plataforma é lida de um --credentials FILE de linhas NAME=VALUE, vai apenas para essa plataforma e nunca é armazenada, impressa, registrada em log nem enviada ao screenRIG, que vê apenas gravações comuns de mídia, playlist, link de frota, campanha e tela. migrate vendors lista as plataformas que ele lê, e o fallback files lê uma pasta ou .zip de mídia de qualquer outra plataforma.

Execute as etapas em ordem: migrate vendors (o que uma plataforma aceita), migrate scan (lê a conta e informa o que pode e o que não pode ser trazido; não precisa de login no screenRIG), migrate apply --dry-run (o plano), migrate apply (precisa de acesso Manage), depois migrate pair para cada tela.

--dir DIR é o diretório de migração, ./screenrig-migration-VENDOR por padrão, criado com o modo 0700. Ele contém scan.json (o scan e seu relatório), map.json (em qual objeto cada item antigo se tornou, vinculado a esta URL da API, projeto, fornecedor e conta de origem) e staging/ (downloads em andamento). apply e pair usam o único diretório screenrig-migration-* no diretório de trabalho, ou aceitam --dir; só um deles roda em um diretório por vez.

Código do problemaSairSignificado
migration_dir_mismatch2O diretório foi criado para outro projeto, URL da API, fornecedor ou conta de origem. Use outro --dir.
vendor_refused3A plataforma recusou a chave. Gere uma chave somente leitura (migrate vendors VENDOR mostra como), corrija o arquivo --credentials e execute o mesmo comando de novo.
vendor_not_found4A plataforma respondeu 404. --url geralmente está errado.
vendor_rate_limited7A plataforma está limitando a taxa da chave. Execute o comando de novo mais tarde.
vendor_file_gone8O endereço de um arquivo de mídia expirou ou é protegido. Executar migrate scan de novo o renova, e --files fornece um arquivo que ainda falha.
vendor_file_stalled8Um download de mídia ficou em silêncio. Execute apply novamente.
vendor_bad_response9A plataforma enviou uma resposta que o CLI não consegue usar.
vendor_unavailable9 ou 10Não foi possível acessar a plataforma ou ela continuou falhando.

migrate vendors#

Lista as plataformas que migrate lê, o que cada uma aceita e como gerar sua chave somente leitura.

migrate vendors [VENDOR]
ParâmetroTipoObrigatórioPadrãoNotas
VENDORstringnãotodas as plataformasO id de uma plataforma. Um id que não consta da lista é usage_error (exit 2) e nomeia os ids que existem.
screenrig migrate vendors
screenrig migrate vendors files

Funciona offline e não precisa de login. data.vendors contém, para cada plataforma, id e name; inputs, com as flags que ela aceita (cada uma com flag e required, e values para uma região) e as linhas credentials que o arquivo de chave contém (name, secret, required e help); connect, os passos que geram uma chave somente leitura; maps, o que é migrado; skips, o que não é; docs; e example, um comando migrate scan funcional. As plataformas são ordenadas por id, com files por último. files aceita uma pasta ou .zip e um fuso horário opcional, e não precisa de chave.

migrate scan#

Lê uma conta de sinalização e informa o que pode e o que não pode ser trazido. Grava scan.json e não envia nada ao screenRIG.

migrate scan --from VENDOR [--url ADDRESS] [--region REGION] [--timezone ZONE] [--files PATH]
    [--credentials FILE] [--dir DIR]
ParâmetroTipoObrigatórioPadrãoNotas
--from VENDORstringsimnenhumA plataforma a ler: um id de migrate vendors, ou files.
--url ADDRESSstringpor plataformanenhumO endereço de uma plataforma auto-hospedada.
--region REGIONstringpor plataformanenhumA região de uma conta hospedada, para uma plataforma que tem regiões.
--timezone ZONEstringnãonenhumUm nome de fuso horário IANA como America/Toronto, definido em cada tela cuja plataforma antiga não nomeia nenhum. Sem ele, a tela segue o fuso que seu Player informa.
--files PATHcaminhopor plataformanenhumUma pasta ou .zip. Com --from files, contém a mídia; com outra plataforma, contém os originais que a API dessa plataforma não consegue fornecer, associados à sua mídia pelo nome do arquivo.
--credentials FILEcaminhopor plataformanenhumO arquivo de chave: linhas NAME=VALUE com os nomes que migrate vendors VENDOR lista. Linhas em branco e comentários # são ignorados, e um valor pode ficar entre um par de aspas. Um nome obrigatório ausente do arquivo é usage_error (exit 2) e o nomeia.
--dir DIRcaminhonão./screenrig-migration-VENDORO diretório de migração.
screenrig migrate scan --from files --files ./signage-media
screenrig migrate scan --from files --files ./signage-media.zip --dir ./old-signage --timezone America/Toronto

Uma flag que a plataforma não aceita, ou que ela precisa e não tem, é usage_error (exit 2) e nomeia o que a plataforma aceita. Nenhuma flag recebe a própria chave. Um novo scan substitui scan.json e mantém map.json, e sai com 0 ao terminar, mesmo quando alguns itens não podem ser trazidos.

data é o relatório: vendor, label, scanned_at, found e importable (contagens de media, playlists, layouts, schedules, groups e screens), not_imported (cada um com kind, source_id, name, um reason e, em geral, um passo next), lossy (cada um com kind, source_id, name e o change que ocorre no caminho), notes, dir e scan_file. Um arquivo que a plataforma fornece é baixado em apply. Um arquivo que ela não fornece, ou fornece apenas como cópia recodificada, é associado pelo nome em --files; sem correspondência, ou com várias, ele fica em not_imported ou lossy com o passo que o corrige.

--from files não precisa de chave. Lê cada arquivo de imagem, vídeo e áudio pelo conteúdo, não pela extensão. Um playlists.csv opcional na raiz tem as colunas playlist, file (um caminho ou um nome de arquivo único), duration (segundos) e order; sem ele, cada pasta que contém mídia vira uma playlist em ordem natural de nome de arquivo, e os arquivos na raiz formam uma playlist com o nome da pasta ou do zip. Um screens.csv opcional tem name, group (vários separados por ;), playlist e timezone, e cada linha vira uma tela em espera com seus grupos como tags. Os demais arquivos e entradas de zip criptografadas ficam em not_imported. Um scan files não tem programações: crie-as com campaign create depois que as playlists existirem.

migrate apply#

Importa o que o scan encontrou: mídia, playlists e layouts, telas em espera e campanhas. É seguro executar de novo.

migrate apply [--dir DIR] [--dry-run] [--only KINDS] [--folder ID] [--canvas WIDTHxHEIGHT]
    [--credentials FILE] [--concurrency N] [--no-transcode]
ParâmetroTipoObrigatórioPadrãoNotas
--dir DIRcaminhonãoo único diretório ./screenrig-migration-*O diretório de migração que contém scan.json.
--dry-runbooleannãodesligadoLê o projeto e imprime o plano. Não grava nada e não precisa de chave.
--only KINDSstringnãotodos os quatroSeparados por vírgula, cada um no máximo uma vez: media, playlists, screens, schedules.
--folder IDstringnãouma nova pasta chamada Imported from e o nome da plataformaUma pasta de mídia existente (mfd_…) para a mídia importada.
--canvas WIDTHxHEIGHTstringnão1920x1080O canvas das playlists simples, com cada lado de pelo menos 16 pixels. Um layout mantém seu próprio tamanho.
--credentials FILEcaminhonãonenhumO arquivo de chave, lido somente quando um arquivo de mídia é baixado da plataforma.
--concurrency Nintegernão4Mídias importadas ao mesmo tempo, de 1 a 8.
--no-transcodebooleannãodesligadoEnvie os bytes da fonte sem alterações, como media upload faz.
screenrig migrate apply --dry-run
screenrig migrate apply --dir ./screenrig-migration-files
screenrig migrate apply --only media,playlists --concurrency 2

apply importa em ordem: a mídia em uma pasta, as playlists e os layouts, uma tela em espera por tela antiga e uma campanha por programação que as campanhas conseguem expressar. Lê a plataforma de novo apenas para baixar arquivos de mídia. Uma playlist tem uma página por item: imagens e vídeos preenchem o canvas, um endereço web vira uma página iframe, o áudio vira a trilha sonora e uma playlist aninhada é incorporada. Um layout vira uma playlist em seu próprio canvas, com uma página por item de sua zona principal. Uma programação que se repete por mês, ano, hora ou minuto, ou em um dia da semana numerado do mês, não pode virar campanha: scan a lista em not_imported.

--dry-run lê apenas o projeto e responde data.plan (para media, playlists, layouts, screens e schedules: contagens de create, reuse, recreate, waiting e fail), data.items, data.bytes a baixar, contagens de data.placeholders e data.project, os links de frota e as campanhas em uso em relação aos máximos de 50 e 100. O progresso vai para stderr como linhas JSON (migrate_progress com phase, done e total), ou como texto com --human. Uma nova execução reaproveita o que ainda existe, refaz o que você excluiu e nunca altera o que criou. Uma execução real responde data.applied (as mesmas contagens), data.waiting (itens que esperam por mídia ou por uma playlist que não foi importada, cada um com um reason), data.failed, data.placeholders (uma entrada por tela antiga com source_id, name e state: linked, unlinked, paired, finished ou waiting), data.tags e data.folder_id.

Um grupo vira uma tag formada por letras e dígitos, numerada quando colide com uma tag que outra tela possui. Uma campanha tem como alvo as tags dos grupos e das telas que sua programação nomeia, com suas datas, dias, horas e prioridade. Uma campanha lê suas datas e horas no fuso horário próprio de cada tela e precisa de uma playlist padrão (no_default_playlist): scan anota as telas que não a têm, e screen assign a define após o pareamento.

Uma tela em espera é um link de frota de uma tela que carrega o nome antigo, os grupos como tags e a playlist. Uma organização comporta no máximo 50 links de frota em todos os seus projetos; os demais ficam unlinked em data.placeholders e esperam por um código Player (migrate pair). Um Player que abre um link vira uma tela, e executar apply de novo dá a ele o nome antigo e o fuso horário e exclui o link. apply nunca imprime a URL de um link de frota: fleet-links show imprime.

Um item com falha mantém ok true com data.failed (cada um com key, name, code, status e detail) e o aviso migration_items_failed; os itens que dependem dele esperam, e o código de saída segue o status da última falha. Um arquivo de mídia que falha sozinho (um endereço expirado, uma resposta que não é um arquivo, um download que fica em silêncio) falha somente essa mídia; para um endereço expirado, execute migrate scan de novo. Uma recusa que se repetiria para todos os itens (quota_exceeded, campaign_limit_reached, insufficient_access, pending_review, a plataforma recusando a chave, uma conexão perdida) encerra a execução com data.stopped (code, detail e next) e o código de saída desse problema. Corrija a causa e execute o mesmo comando de novo: ele continua de onde parou.

migrate pair#

Pareia um código Player com uma tela em espera, com o nome antigo, a playlist, o fuso horário e as tags dela.

migrate pair <CODE...> --screen ID_OR_NAME [--dir DIR]
ParâmetroTipoObrigatórioPadrãoNotas
<CODE...>stringsimnenhumO código que o Player mostra, como ABC 234: seis caracteres de 23456789ABCDEFGHJKMNPQRSTUVWXYZ, em maiúsculas ou minúsculas. Espaços e hifens entre eles são ignorados, então não precisa de aspas.
--screen ID_OR_NAMEstringsimnenhumA tela em espera: seu id de origem ou seu nome antigo exato. Um nome que duas telas compartilham lista os ids delas.
--dir DIRcaminhonãoo único diretório ./screenrig-migration-*O diretório de migração.
screenrig migrate pair ABC 234 --screen "Front desk"
screenrig migrate pair ABC234 --screen 3 --dir ./old-signage

Execute migrate apply primeiro: o pareamento precisa do mapa e da playlist que ele criou. pair reivindica o código para a tela com o nome antigo, define a playlist, o fuso horário e o campo migrated_from dela, define suas tags, exclui o link da tela em espera e registra o resultado. data contém source_id, name, screen_id, steps (paired, updated, tagged, link deleted, recorded), next e, quando esta execução reivindicou o código, public_url. Cada passo é registrado à medida que é concluído, então uma nova execução termina o que um pareamento interrompido deixou. Uma tela que já está pareada é resource_conflict (exit 5) e a nomeia. O Player conclui o pareamento na próxima vez que contata o serviço; screen show então informa state active.

Outros grupos de comandos