文档

设备组链接 CLI 命令

为设备管理工具创建设备组链接,并把其他标牌平台的媒体、播放列表、排程和屏幕迁入 screenRIG。

这里的每个命令都按 CLI 参考所述运行:全局标志、JSON 输出、退出代码、修订和重试。

Migrate

migrate 将你之前的标牌平台的媒体、播放列表、布局、排程和屏幕迁入项目。它在你机器上的 CLI 中运行:平台的密钥从 --credentials FILE(由 NAME=VALUE 行组成)中读取,只发送给该平台,绝不会被存储、打印、记录或发送给 screenRIG;screenRIG 看到的只是普通的媒体、播放列表、车队链接、活动和屏幕写入。migrate vendors 列出它所读取的平台,files 后备方式则读取来自任何其他平台的媒体文件夹或 .zip。

按顺序运行这些步骤:migrate vendors(平台接受的内容)、migrate scan(读取账号并报告哪些内容可以迁入、哪些不能;无需登录 screenRIG)、migrate apply --dry-run(计划)、migrate apply(需要 Manage 访问权限),然后对每块屏幕运行 migrate pair。

--dir DIR 是迁移目录,默认为 ./screenrig-migration-VENDOR,以模式 0700 创建。其中包含 scan.json(扫描及其报告)、map.json(每个旧项目变成了哪个对象,绑定到此 API URL、项目、服务商和源账号)和 staging/(进行中的下载)。apply 和 pair 使用工作目录中唯一的 screenrig-migration-* 目录,或接受 --dir;同一时间一个目录中只运行其中一个。

问题代码退出含义
migration_dir_mismatch2该目录是为另一个项目、API URL、服务商或源账号创建的。请使用另一个 --dir。
vendor_refused3平台拒绝了该密钥。请生成只读密钥(migrate vendors VENDOR 会说明方法),修正 --credentials 文件,然后再次运行同一命令。
vendor_not_found4平台返回了 404。通常是 --url 有误。
vendor_rate_limited7平台正在对该密钥限速。请稍后再次运行该命令。
vendor_file_gone8媒体文件地址已过期或受保护。再次运行 migrate scan 会刷新它,--files 可为仍然失败的文件提供文件。
vendor_file_stalled8媒体下载无响应。再次运行 apply。
vendor_bad_response9平台返回了 CLI 无法使用的响应。
vendor_unavailable9 或 10无法连接平台,或平台持续失败。

migrate vendors#

列出 migrate 读取的平台、每个平台接受的内容,以及如何生成其只读密钥。

migrate vendors [VENDOR]
参数类型必填默认备注
VENDORstring否所有平台一个平台的 id。它未列出的 id 会返回 usage_error(退出码 2),并指明存在的 id。
screenrig migrate vendors
screenrig migrate vendors files

它离线工作,无需登录。data.vendors 为每个平台列出其 id 和 name;inputs,含其接受的 flags(每个带有 flag 和 required,区域另带 values)以及其密钥文件包含的 credentials 行(name、secret、required 和 help);connect,即生成只读密钥的步骤;maps,即可迁入的内容;skips,即无法迁入的内容;docs;以及 example,一条可用的 migrate scan 命令。平台按 id 排序,files 排在最后。files 接受文件夹或 .zip 以及可选的时区,无需密钥。

migrate scan#

读取数字标牌账号,并报告哪些内容可以迁入、哪些不能。它写入 scan.json,不向 screenRIG 发送任何内容。

migrate scan --from VENDOR [--url ADDRESS] [--region REGION] [--timezone ZONE] [--files PATH]
    [--credentials FILE] [--dir DIR]
参数类型必填默认备注
--from VENDORstring是无要读取的平台:来自 migrate vendors 的 id,或 files。
--url ADDRESSstring每个平台无自托管平台的地址。
--region REGIONstring每个平台无托管账号的区域,适用于有区域划分的平台。
--timezone ZONEstring否无IANA 时区名称,例如 America/Toronto,为旧平台未指明时区的每个屏幕设置。未设置时,屏幕沿用其播放器报告的时区。
--files PATH路径每个平台无文件夹或 .zip。使用 --from files 时,它包含媒体;使用其他平台时,它包含该平台 API 无法提供的原始文件,并按文件名与其媒体匹配。
--credentials FILE路径每个平台无密钥文件:带有 migrate vendors VENDOR 所列名称的 NAME=VALUE 行。空行和 # 注释会被跳过,值可以放在一对引号中。文件中缺少必需的名称会返回 usage_error(退出码 2),并指明该名称。
--dir DIR路径否./screenrig-migration-VENDOR迁移目录。
screenrig migrate scan --from files --files ./signage-media
screenrig migrate scan --from files --files ./signage-media.zip --dir ./old-signage --timezone America/Toronto

平台不接受的标志,或平台需要却缺失的标志,会返回 usage_error(退出码 2),并指明平台接受什么。没有任何标志接受密钥本身。新的扫描会替换 scan.json 并保留 map.json,完成时退出 0,即使某些项目无法迁入。

data 是报告:vendor、label、scanned_at、found 和 importable(media、playlists、layouts、schedules、groups 和 screens 的计数)、not_imported(每项含 kind、source_id、name、一个 reason,通常还有一个 next 步骤)、lossy(每项含 kind、source_id、name 以及途中发生的 change)、notes、dir 和 scan_file。平台提供的文件在 apply 下载。平台不提供的文件,或只提供重新编码副本的文件,会在 --files 中按名称匹配;没有匹配或匹配到多个时,它会连同修复步骤列在 not_imported 或 lossy 中。

--from files 不需要密钥。它按内容而非扩展名识别每个图片、视频和音频文件。根目录下可选的 playlists.csv 含有列 playlist、file(路径或唯一的文件名)、duration(秒)和 order;没有它时,每个包含媒体的文件夹成为一个播放列表,按文件名自然顺序排列,根目录下的文件组成一个以该文件夹或 zip 命名的播放列表。可选的 screens.csv 含有 name、group(多个以 ; 分隔)、playlist 和 timezone,每一行成为一个待配对屏幕,其分组成为标签。其他文件和加密的 zip 条目列在 not_imported 中。files 扫描没有排程:播放列表存在后,用 campaign create 创建排程。

migrate apply#

导入扫描发现的内容:媒体、播放列表和布局、待配对屏幕和活动。可安全地重新运行。

migrate apply [--dir DIR] [--dry-run] [--only KINDS] [--folder ID] [--canvas WIDTHxHEIGHT]
    [--credentials FILE] [--concurrency N] [--no-transcode]
参数类型必填默认备注
--dir DIR路径否唯一的 ./screenrig-migration-* 目录包含 scan.json 的迁移目录。
--dry-runboolean否关闭读取项目并打印计划。它不写入任何内容,也不需要密钥。
--only KINDSstring否全部四项以逗号分隔,每个至多出现一次:media、playlists、screens、schedules。
--folder IDstring否以 Imported from 和平台名称命名的新文件夹用于导入媒体的现有媒体文件夹(mfd_…)。
--canvas WIDTHxHEIGHTstring否1920x1080普通播放列表的画布,每边至少 16 像素。布局保持其自身尺寸。
--credentials FILE路径否无密钥文件,仅在从平台下载媒体文件时读取。
--concurrency Ninteger否4同时导入的媒体数量,1 到 8。
--no-transcodeboolean否关闭上传源字节,不做更改,如 media upload 所示。
screenrig migrate apply --dry-run
screenrig migrate apply --dir ./screenrig-migration-files
screenrig migrate apply --only media,playlists --concurrency 2

apply 按顺序导入:媒体导入同一个文件夹,然后是播放列表和布局,每个旧屏幕对应一个待配对屏幕,每个 活动能够表达的排程对应一个活动。它只在下载媒体文件时再次读取该平台。播放列表的每个项目对应一个页面:图片和视频铺满画布,网页地址变为 iframe 页面,音频变为配乐,嵌套的播放列表会被内联展开。布局变为位于其自身画布上的播放列表,其主区域的每个项目对应一个页面。按月、年、小时或分钟重复的排程,或按当月第几个星期几重复的排程,无法成为活动:scan 将其列在 not_imported 中。

--dry-run 只读取项目,并返回 data.plan(对于 media、playlists、layouts、screens 和 schedules:create、reuse、recreate、waiting 和 fail 计数)、data.items、待下载的 data.bytes、data.placeholders 计数和 data.project,即正在使用的车队链接和活动与其上限 50 和 100 的对比。进度以 JSON 行的形式输出到 stderr(带有 phase、done 和 total 的 migrate_progress),使用 --human 时则为文本。重新运行会复用仍然存在的内容,重新创建你删除的任何内容,并且绝不会更改它已创建的内容。真正运行时返回 data.applied(相同的计数)、data.waiting(等待尚未导入的媒体或播放列表的项目,每项带有一个 reason)、data.failed、data.placeholders(每个旧屏幕一条,含其 source_id、name 和 state:linked、unlinked、paired、finished 或 waiting)、data.tags 和 data.folder_id。

分组变为由字母和数字组成的标签,与其他屏幕已有的标签冲突时会加编号。活动以其排程所指名的分组和屏幕的标签为目标,并带有其日期、星期、小时和优先级。活动按每个屏幕自己的时区读取其日期和小时,并需要默认播放列表(no_default_playlist):scan 会注明缺少它的屏幕,配对后用 screen assign 设置。

待配对屏幕是一块屏幕的车队链接,携带旧名称、作为标签的分组和播放列表。一个组织在其所有项目中最多持有 50 个车队链接;其余的在 data.placeholders 中为 unlinked,等待播放器代码(migrate pair)。打开链接的播放器会成为屏幕,再次运行 apply 会赋予它旧名称和时区并删除该链接。apply 从不打印车队链接 URL:fleet-links show 会打印。

失败的项目保留 ok true,带有 data.failed(每项含 key、name、code、status 和 detail)以及警告 migration_items_failed;依赖它的项目会等待,退出码取决于最后一次失败的状态。单独失败的媒体文件(地址过期、响应不是文件、下载无响应)只会使该媒体失败;地址过期时请再次运行 migrate scan。对每个项目都会重复出现的拒绝(quota_exceeded、campaign_limit_reached、insufficient_access、pending_review、平台拒绝密钥、连接中断)会以 data.stopped(code、detail 和 next)以及该问题的退出码结束运行。修复原因后再次运行同一命令:它会从停止处继续。

migrate pair#

将播放器代码与一个待配对屏幕配对,沿用其旧名称、播放列表、时区和标签。

migrate pair <CODE...> --screen ID_OR_NAME [--dir DIR]
参数类型必填默认备注
<CODE...>string是无播放器显示的代码,例如 ABC 234:来自 23456789ABCDEFGHJKMNPQRSTUVWXYZ 的六个字符,大小写均可。其间的空格和短横线会被忽略,因此无需加引号。
--screen ID_OR_NAMEstring是无待配对屏幕:其源 id 或其确切的旧名称。两块屏幕共用的名称会列出它们的 id。
--dir DIR路径否唯一的 ./screenrig-migration-* 目录迁移目录。
screenrig migrate pair ABC 234 --screen "Front desk"
screenrig migrate pair ABC234 --screen 3 --dir ./old-signage

请先运行 migrate apply:配对需要它生成的映射和播放列表。pair 以旧名称为屏幕认领该代码,设置其播放列表、时区和 migrated_from 字段,设置其标签,删除待配对屏幕的链接并记录结果。data 包含 source_id、name、screen_id、steps(paired、updated、tagged、link deleted、recorded)、next,以及本次运行认领了该代码时的 public_url。每个步骤落地时即被记录,因此重新运行会完成被中断的配对所遗留的部分。已配对的屏幕会返回 resource_conflict(退出码 5),并指明该屏幕。播放器在下次联系服务时完成配对;screen show 随后报告 state active。

其他命令组