組み込みの カード

プレイリストにライブコンポーネントを追加します:メニュー、時計、キュー、スコア、天気、ゲージ。カードを選び、プロパティを設定して公開してください。

カードはプレイリストキャンバス上の組み込みコンポーネントです。時計やメニュー、キューなどのライブ情報で矩形を埋め、画像や動画の上にも配置できます。

レイアウトとアンカー

プレイリスト項目の card の隣に layout と anchor を設定します。layout は必須です。

layout1080pデザイン単位のボックスanchor
fullキャンバス全体、横向きまたは縦向きなし
free独自のrectとlayerなし
center900 × 420 中央揃えなし
wideキャンバスは上下80、左右30のインセットです。なし
header上端全体を80でなし
footer下端全体を80でなし
corner270 × 270、角にぴったりtop-left, top-right, bottom-left, bottom-right
chip240 × 70、2つの最寄りの端から30内側top-left, top-right, bottom-left, bottom-right
strip端全体を120でtop, bottom, left, right

サイズはmin(canvas width, canvas height) / 1080でスケールします。4Kキャンバス(3840×2160)は1080pと同じ見かけのサイズで、縦長キャンバスは横長と同じです。カードのデザインはボックスの形状に従います:ストリップ、横長、正方形、縦長、タワー。

anchor は corner、chip、strip で必須であり、full、free、center、wide、header、footer では指定できません。free 以外のレイアウトでは rect と layer を省略してください。プレイリスト保存時に screenRIG がページキャンバスから自動取得します。free アイテムには専用の rect と layer が必要です。

1つのfull、centerまたはwideカードと必要に応じてcorner、chip、stripカードでページをComposeします。ページは最大1つのfull、center、wideカード、各コーナーに最大1つのcornerまたはchipカード、各辺に最大1つのstripカードとその辺を共有する存在カードを持ちます。headerとfooterは全幅バーで高さ80、上下辺に1つずつ配置。headerは上辺のstripスロットを占有し、footerは下辺のスロットを占有するためその辺に通常のstripはありませんが存在カードは共有可能。ページはheaderとfooterを両方持てます。画像、動画、Webアイテムは制限なしで任意数のfreeカードがページを共有可能。cornerまたはchipがstripを持つ辺にある場合、120内側に移動し、headerまたはfooterがある場合は80内側に移動(両方ある場合は大きい方)。重なりません。center、wide、header、footerカードはストリップを無視します。

左または右のstripはその端の帯で、幅120、高さはキャンバスと同じです。カードは水平ストリップとして描画され、Playerは帯の中心を軸に90度回転させます。左ストリップは反時計回りでテキストは下から上へ、右ストリップは時計回りでテキストは上から下へ読みます。

カードのティアによってレイアウトが決まります。core カードは全9種類から描画するレイアウトのみを選びます。header と footer カードだけがその2つを取ります。fullscreen カードは横長または縦長の全画面用で full のみを取ります。stinger はページ遷移用バンパーでレイアウトはありません。GET /api/card-types と screenrig cards show ID で各カードのティアとレイアウトを一覧できます。

プレゼンス

条件が成立している間のみ表示されるカードがあります。例えば、下端のアラートバーや「近くに雷」チップなどです。非表示時はカードは何も描画しません。同じ端の通常のストリップは存在ストリップに置き換わり、存在しなくなると通常のストリップに戻ります。存在するカードはレイアウトに合わせた動きで現れ、去ります:ストリップは端からスライドインし、コーナーとチップは上昇してフェードアウトし、center、wide、header、footer、full、freeカードはフェードします。

レイアウトエラー

レイアウトが欠落または不明、アンカーが欠落、不明、または不要、カードのティアやビューが対応しないレイアウト、または派生していないrectやlayerの場合、プレイリストの保存はcard_layout_invalid(400)で拒否されます。ページ上で2つのカードが同じ場所を主張するとcard_layout_conflict(400)で拒否されます。errors[0].fieldはメンバー名を示します。

テーマ

params.theme を neomustard(NeoMustard)、cyanotype(Cyanotype)、propaganda(Propaganda)、signal(Signal)、avant-garde(Avant Garde)、bloom(Bloom)、clear-dark(Clear Dark)、clear-light(Clear Light)、または primetime(Primetime)に設定します。screenrig.ai のカードは Bloom で開き、テーマコントロールで切り替えます。Primetime はアニメーションテーマで、background none は透明な背景を提供し、コーナーとチップのレイアウトはテーマのコンパクトプレートを使用します。

コア、全画面、スティンガーカード

各カードはコア、フルスクリーン、またはスティンガーのいずれかです。コアカードはすべてのレイアウトに対応し、アプリページに表示されます。フルスクリーンカードは横向きまたは縦向きのスクリーン全体を使い、下記のカードリファレンスに独自のページが掲載されています。スティンガーは2つのページ間でページ遷移時に再生されます。

共通プロパティ

これらのプロパティはすべてのカードのテーマと位置を制御します。paramsで設定してください。

名前タイプデフォルト値と制限説明
themestring"neomustard""neomustard", "cyanotype", "propaganda", "signal", "avant-garde", "bloom", "clear-dark", "clear-light", "primetime"
backgroundstring"theme""theme", "none"none は背景を描画せず、ビデオの上に重ねるために使います。
accent文字列、nullnullパターン:"^#[0-9A-Fa-f]{6}$"テーマのアクセントを上書きします。
layoutstring"full", "free", "center", "wide", "corner", "chip", "strip"カード配置場所(CONTRACT.md「レイアウト」):fullは全画面、freeはホスト指定の任意矩形、centerは900x420、wideは上下80、左右30の画面内、cornerは270x270で隅にぴったり、chipは240x70で隅から30内側、stripは高さ120で辺に沿う(1080p設計ピクセル)。指定なしは矩形が画面いっぱいならfull、そうでなければfree。
anchorstring"top-left", "top-right", "bottom-left", "bottom-right", "top", "bottom", "left", "right"レイアウトの角(cornerとchip)または辺(strip)の位置。cornerは右上、stripは下がデフォルト。他はなし。

静的および動的プロパティ

カードはプロジェクト内のインスタンスで、カードの静的プロパティとライブデータドキュメントを保持する crd_ ID を持ちます。一度作成し、その ID をページアイテムに入れれば、値はいつでも変更できます。

静的プロパティはインスタンスのparamsで、テーマ、場所、タイトルなどです。card paramsで変更してから、プレイリストをもう一度送信して反映させます。動的プロパティはカード契約のdynamic: trueで示された値で、メニューセクション、キューエントリ、ゲージ読み取りなどです。これらはカードのデータドキュメントにあり、card data putで置き換えてもプレイリストを再公開する必要はありません。

Playerはデフォルト、静的パラメータ、ドキュメントの動的プロパティの順に適用します。ライブドキュメントはスタイリングを変更できず、paramsが動的プロパティを持つことはありません。必須の動的プロパティにまだドキュメントがないカードは、ドキュメントが書き込まれるまで非表示のままです。

1 枚のカード、1 つのドキュメント

各カードには専用のデータドキュメントがあり、その crd_ ID を持つすべてのページアイテムがそのドキュメントを表示します。異なる投稿を表示する 2 つの Workplace Posts カードは、それぞれ固有の ID を持つ 2 枚のカードです。一方への書き込みは、その ID を持つアイテムだけを更新します。同じドキュメントを表示させたいときは、1 つのページまたは複数のページの複数のアイテムに同じ ID を入れます。

フィード

フィードはバックエンドが取得してキャッシュし、Player がカードに渡すサードパーティのデータです。天気の場合は、名前、緯度、経度を持つ location を設定します。バックエンドはこれらの静的プロパティからフィードキーを導出します。キャンバスアイテムに feed フィールドを送信しないでください。フィードドキュメントはソースの帰属情報と取得タイムスタンプを持ちます。各カード参照はフィードスキーマとソースの帰属情報を指定します。

フィードのデータを表示する場所では、必ずそのクレジットも表示してください。カードはこれを自動で行います。エージェントは、カードが読み取るドキュメントを GET /api/feeds/FAMILY で読み取ります。ファミリーは、下の各セクションのファミリーとカードの後ろに書かれた最初の名前です。新しい場所の最初の読み取りには、screenRIG が取得する間 Retry-After: 60 を付けた 202 を返し、同じ場所のカードはすべて 1 つのドキュメントを共有します。

潮汐

NOAA CO-OPS による 1 つの観測所の潮汐予測。米国とその領土のパブリックドメインのデータです。

  • ファミリーとカード: tides と tides
  • 設定: station (NOAA の 7 文字の観測所 ID)、または location (100 km 以内で最も近い予測観測所を選びます)。それほど近い観測所がない場所ではフィードキーが決まらず、カードは待機し、API は 400 invalid_request を返します。
  • データ: 2 日前から 3 日後までの満潮と干潮、および NOAA が調和解析で予測する観測所の 15 分間隔の系列。高さは MLLW を基準としたメートル、時刻は UTC です。6 時間ごとに更新されます。
  • クレジット: Tide predictions from NOAA CO-OPS, reformatted by screenRIG; not an official NOAA product.

ロケット打ち上げ

The Space Devs の Launch Library 2 による、世界の次のロケット打ち上げ。

  • ファミリーとカード: launches と launch-tracker
  • 設定: なし。すべてのカードが同じリストを表示します。
  • データ: 提供者、機体、発射台、軌道を含む直近 20 件の打ち上げを、15 分ごとに更新します。打ち上げは離昇の 24 時間後までリストに残り、カードはこれで結果を表示します。発射台にある打ち上げには、最大 20 件のイベントからなるミッションのタイムラインも付きます。
  • クレジット: Data: The Space Devs / Launch Library 2.

医薬品と食品のリコール

ある国の保健機関または食品機関によるリコール。

  • ファミリーとカード: drugalerts と drug-alerts
  • 設定: country (us、ca、gb) と category (デフォルトの drug、または food)。
  • データ: 過去 90 日分。クラス I が先で、同じクラスの中では新しい順に、最大 100 件です。米国: openFDA 経由の FDA 執行報告で、報告日を日付とし、完了・終了したリコールは除きます。カナダ: Health Canada と CFIA のリコールおよび安全警告。英国: MHRA の医薬品リコール (クラス 1 〜 3) と Food Standards Agency の食品警告。3 〜 6 時間ごとに更新されます。
  • クレジット: 各機関のもので、それぞれのオープンライセンスに従います: openFDA (CC0)、Open Government Licence – Canada、Open Government Licence v3.0。

呼吸器感染症

インフルエンザ、COVID-19、RSV の週ごとの活動状況。

  • ファミリーとカード: respiratory と respiratory-activity
  • 設定: country (us または gb) と region: 米国の州、準州、DC を名前または郵便番号で、あるいはイングランドまたは UKHSA の地域。空の地域は国全体を表します。
  • データ: ウイルスごとに、非常に低いから非常に高いまでのレベル、傾向 (上昇、横ばい、下降。直近 2 週間を、その前の 2 週間と比べて screenRIG が算出します)、最新の値、26 週間の履歴。米国: CDC の週ごとの入院レベルと率で、6 時間ごとに更新されます。イングランド: UKHSA の臨床検査陽性率で、12 時間ごとに更新されます。UKHSA はレベルを公表していないため、screenRIG が最新週を過去 52 週の最高値と比べて決めます: 5% 未満は非常に低い、20% 未満は低い、40% 未満は中程度、70% 未満は高い、それ以上は非常に高いです。
  • クレジット: CDC。CDC、HHS、米国政府が screenRIG を推奨するものではなく、内容は変更されていません。UKHSA は Open Government Licence v3.0 に従います。

アルマナック

today カードが日付に加えるもの: 記念日、その日の歴史上の出来事、太陽と月。

  • ファミリーとカード: almanac と today
  • 設定: language (ar、bs、cs、de、en、es、fr、it、pt、ru、sv、tr、uk、zh。デフォルトは en)、country (ISO 3166-1 コード)、location ({screen.location} で入力できます)、date。これらをどれも設定しないカードは、英語の歴史と国際デーを表示します。
  • データ: その国の祝日、記念日、国際デー (祝日の名前は言語を問わず英語)、Wikipedia の On This Day から最大 10 件のその日の出来事、そして場所を設定した場合は、日の出、日の入り、南中、市民薄明の開始と終了、昼の長さ、月の満ち欠け。太陽と月は取得ではなく計算で求めます。ドキュメントは前日から 2 日先までを含むため、ページは現地時間の午前 0 時に切り替わります。
  • クレジット: Wikipedia の寄稿者。CC BY-SA 4.0 に従います。

屋外の安全

outdoor-safety カードが表示する暑さの値。

  • ファミリーとカード: outdoorsafety と outdoor-safety
  • 設定: location。
  • データ: 日なたの開けた場所を想定した湿球黒球温度の推定値で、その場所の気象 (気温、湿度、風、雲、太陽の高さ) から計算します。日陰ではそれより低く表示されます。これは推定値であり、センサーの測定値ではなく、ドキュメントにもそう記されます。観測は 1 時間ごとなので、カードの staleMinutes は 120 以上に設定してください。
  • 落雷: このフィードが運ぶのは暑さだけです。カードの show を heat に設定するか、落雷をカードのデータに書き込んでください。

交通機関の出発

1 つの交通事業者の 1 〜 4 か所の停留所から、次の出発を出発順に表示します。

  • ファミリーとカード: departures と departures
  • 設定: provider (tfl、entur、digitransit) と stops (事業者の停留所 ID。API ではカンマ区切り)。ID は事業者自身の停留所検索で調べてください。
  • データ: スクリーンがボードを表示している間は、1 分ごとに更新されます。運休の出発は運休として残り、出発のない停留所は空のボードになります。事業者が知らない停留所があるとボード全体が失敗し、直前のボードが残ります。TfL はリアルタイムの予測しか提供しないため、その行には遅延がありません。
事業者停留所 ID の例クレジット
tfl940GZZLUOXC (Oxford Circus)、490008660N (バス停)Powered by TfL Open Data
enturNSR:StopPlace:337, NSR:Quay:568Contains data under the Norwegian licence for Open Government data (NLOD) distributed by Entur
digitransitHSL:1040129© Digitransit, CC BY 4.0

シェアサイクル

GBFS を公開しているシステムから、ある場所に最も近いシェアサイクルのステーション。

  • ファミリーとカード: bikeshare と bike-share
  • 設定: location ({screen.location} が使えます)、および任意で system (Mobibikes_CA_Vancouver、dublin、nextbike_bn のような MobilityData のシステム ID)。system を指定しない場合は、その場所を含む区域を持つ、最も近い掲載システムが対応します。どの掲載システムもカバーしない場所ではキーが決まらず、カードは待機し、API は system で invalid_request を返します。
  • データ: 近い順に最大 40 か所のステーション (20 km 以内)。それぞれ自転車、電動自転車、ドック、ステータスを含み、1 分ごとに更新されます。
  • システム: 再配布と商用表示を認めるライセンスをフィード自体に記載している 28 システム。ODbL の Mobi (バンクーバー) と City Bikes Helsinki、CC BY 4.0 の docomo (東京)、Licence Ouverte の JCDecaux のシステム (ダブリン、リヨン、トゥールーズ、ナント、ブリュッセル、ルクセンブルク、バレンシア、リュブリャナ)、そして CC0 の nextbike (ベルリン、ケルン、デュッセルドルフ、ハノーファー、ニュルンベルク、ボン、ウィーン、リンツ、インスブルック、プラハ、ブルノ、ワルシャワ、ヴロツワフ、ザグレブ、バルセロナ、ヨーテボリ、ストラスブール) です。
  • クレジット: 運営者。そのライセンスに従います。

カードキャンバスを公開

開始に従って公式プラグインをインストールし、プロジェクトを選択して Player をペアリングします。カードを作成し、その ID をプレイリストに入れて公開します。このページでは center レイアウトのゲージカードを使います。

カードの静的プロパティを gauge-params.json として保存します。

{"theme":"neomustard"}

プラグインに同梱の CLI でカードを作成します。結果にはその crd_ ID が含まれます。

screenrig card create --type gauge --file gauge-params.json

またはAPIを、タイプとそのパラメータを指定して呼び出します。201 レスポンスにカードの id が含まれます。

curl --request POST "https://api.screenrig.ai/api/cards" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"type":"gauge","params":{"theme":"neomustard"}}'

次の内容を playlist.json として保存し、crd_01EXAMPLEGAUGE000000000 をあなたのカードの ID に置き換えます。ページアイテムが送るのは ID とそのレイアウトだけで、カードの params とデータはカード側に残ります。

{
  "name": "Live gauge",
  "pages": [
    {
      "id": "main",
      "canvas": {
        "width": 1920,
        "height": 1080,
        "background": "#000000FF",
        "viewport_fit": "contain"
      },
      "transition": {
        "type": "crossfade",
        "duration_ms": 500
      },
      "advance": {
        "mode": "duration",
        "after_ms": 15000
      },
      "primitives": [
        {
          "id": "gauge",
          "primitive": "card",
          "card": "crd_01EXAMPLEGAUGE000000000",
          "layout": "center",
          "content_fit": "fill"
        }
      ]
    }
  ]
}

認可には API 認証 を使用してください。エージェントトークンはすでにプロジェクトを指定しているため、例では ScreenRig-Project ヘッダーを送信しません。送信する場合はトークンのプロジェクトと一致する必要があります。トークンの値はプレイリストファイルの外に保管してください。

curl --request POST "https://api.screenrig.ai/api/playlists" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "Content-Type: application/json" \
  --data @playlist.json

レスポンスはプレイリストを pl_ ID で識別します。pending_review レスポンスはプロジェクトのレビューを待ってから公開されます。静的プロパティを変更するには、screenrig card params crd_ID --file gauge-params.json(PATCH /api/cards/{id} と {"params": {...}})でカードを更新し、{name, pages} ドキュメントを PUT /api/playlists/{id} でもう一度送信します。プレイリストは保存時にカードの現在のパラメータを取り込みます。カードの major は作成時には省略可能で、契約を固定します。省略すると現在のメジャーが選択されます。

インラインの params と data でカタログのタイプを指定する従来のページアイテムと、その背後にある /api/card-data/{key} ルートは、引き続き受け付けられます。各レスポンスには、置き換え先を示す非推奨の警告が付きます。置き換え先は /api/cards のカードインスタンス ID と /api/cards/{id}/data です。

ライブ値を書く

コマンドを含むCLIを推奨します。ドキュメントをgauge-data.jsonとして保存してください。ファイルはドキュメント本体のみを保持し、ラッパーはありません。

{"metrics":[{"label":"Capacity","value":72,"unit":"%"}]}
screenrig card data put crd_01EXAMPLEGAUGE000000000 --file gauge-data.json

書き込みはドキュメント全体を置き換え、カードの動的プロパティに照らして検証されます。カードが拒否するドキュメントは card_data_invalid (409) で拒否され、何も変わりません。何も更新しない場合に、オフラインのものを含むすべてのスクリーンでデータを空にするには、--ttl 30m または --expires-at INSTANT を追加します。card_data_stale の条件の通知は、何も更新しなかったためにカードのデータが期限切れになったことをプロジェクトに知らせます。

またはAPIを直接呼び出します。APIは同じドキュメントをdocumentフィールドでラップします。ドキュメントは最大1MiBのJSONオブジェクトです。

curl --request PUT "https://api.screenrig.ai/api/cards/crd_01EXAMPLEGAUGE000000000/data" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"document":{"metrics":[{"label":"Capacity","value":72,"unit":"%"}]}}'

スクリーンがカードを表示すると、ドキュメントを再取得してその場で更新します。GET /api/cards/{id}/dataでドキュメントを読み取り、そのリビジョンETagは次の書き込み時にIf-Matchとして送信できます。安全に繰り返せる書き込みにはIdempotency-Keyを追加し、有効期限にはdocumentの隣にttl_secondsまたはexpires_atを追加します。GET /api/cardsでプロジェクトのカードを一覧表示し、どのプレイリストも使っていないカードはDELETE /api/cards/{id}で削除します。

カードプロパティの画像は media:<mediaId> を使用し、同じプロジェクト内の準備済み画像を参照します。ライブデータの書き込みにはこれらの画像の承認が必要です。カードプロパティに画像URLを絶対に入れないでください。

CLI で割り当てと検証

同じプロジェクトの公式プラグインのバンドル CLI を使用してください。API レスポンスからプレイリスト ID を取得し、screen list からスクリーン ID を取得して、割り当てと検査を行います。

screenrig screen list
screenrig screen assign scr_EXAMPLE --playlist-id pl_EXAMPLE
screenrig screen screenshot scr_EXAMPLE

割り当ては希望のプレイリストを記録。報告前に Player の証拠を確認。CLI リファレンス · API リファレンス。

カード参照

カード参照は3つのグループをカバーします:コアカード、全画面カード、スティンガー。コアカードはすべてのレイアウトに適合し、全画面カードは画面全体を埋め、スティンガーはページ間で再生されます。

コアカード

全画面カード

スティンガー