Ubuntu Weekly Recipe

第668回 CATTでCLIからGoogle系スマートデバイスにキャストする

この記事を読むのに必要な時間:およそ 4 分

最近のスマートデバイスは語りかけるだけで,さまざまなコンテンツを表示してくれます。しかしながら,距離・発音・ネットワークなどさまざまな事情で,期待通りのコンテンツを表示してくれないこともあるでしょう。そこで今回は,より確実に特定のコンテンツを表示するために,Googleのスマートデバイス向けにCLIから任意のコンテンツデータをキャストする方法を紹介しましょう。

CATT:Cast All The Things

CATTはローカル・インターネット上のコンテンツをGoogleのChromecastやNest Hubに配信するPython製のツールです。

主に指定のYouTube動画や公開されたプレイリストを再生するためのツールとして作成されているものの,VimeoやSpotifyなどのサービスにも部分的に対応していますし,ローカルのファイルやHTTP経由のストリーミングデータの再生も可能となっています。つまり「OK,グーグル」では指定しづらいコンテンツも,CLIから確実に再生できるのです。

PyPIで公開されているため,インストール方法としてはpipxを使うかpip3を使うかの二択が有力な選択肢となります。CATTではpipxを推奨しているものの,Ubuntu 21.04のpipx 0.12.3.1では,Python 3.9でうまく動かない問題を抱えています。よって21.04ではpip3を,それ以外ではpipx/pip3で好きなほうを使うと良いでしょう※1⁠。

※1
pipxで何かパッケージをインストールしようとするとTypeError: __init__() got an unexpected keyword argument 'encoding'といったエラーが表示されます。これはパッケージ版pipxが古いことによる問題なので,より最新のpipxを別途インストールするなら21.04でも問題ありません。

まずはpipxでインストールする方法です。

$ sudo apt install pipx
$ pipx install catt

次にpip3でインストールする方法です。

$ sudo apt install python3-pip
$ pip3 install catt

pipx/pip3でインストールしたコマンドは,~/.local/bin/に保存されます。Ubuntuの場合はログイン時に~/.local/bin/が存在した場合のみ,環境変数PATHに~/.local/bin/を追加する設定になっています。よってもし初めてpip3/pipxでインストールしたときなど,そこで~/.local/bin/が作られた場合は,一度ログインし直してPATHが通るようにしておきましょう。もちろん~/.local/bin/COMMANDのようにフルパスで指定してもかまいません。

まずはコマンドのヘルプを表示してみます。

$ catt --help
Usage: catt [OPTIONS] COMMAND [ARGS]...

Options:
  -d, --device NAME_OR_IP  Select Chromecast device.
  --version                Show the version and exit.
  -h, --help               Show this message and exit.

Commands:
  add           Add a video to the queue (YouTube only).
  cast          Send a video to a Chromecast for playing.
  cast_site     Cast any website to a Chromecast.
  clear         Clear the queue (YouTube only).
  del_alias     Delete the alias name of the selected device.
  del_default   Delete the default device.
  ffwd          Fastforward a video by TIME duration.
  info          Show complete information about the currently-playing video.
  pause         Pause a video.
  play          Resume a video after it has been paused.
  play_toggle   Toggle between playing and paused state.
  remove        Remove a video from the queue (YouTube only).
  restore       Return Chromecast to saved state.
  rewind        Rewind a video by TIME duration.
  save          Save the current state of the Chromecast for later use.
  scan          Scan the local network and show all Chromecasts and their IPs.
  seek          Seek the video to TIME position.
  set_alias     Set an alias name for the selected device.
  set_default   Set the selected device as default.
  skip          Skip to end of content.
  status        Show some information about the currently-playing video.
  stop          Stop playing.
  volume        Set the volume to LVL [0-100].
  volumedown    Turn down volume by a DELTA increment.
  volumeup      Turn up volume by a DELTA increment.
  write_config  DEPRECATED: Please use "set_default".

いろいろなコマンドが存在するものの,⁠YouTube only」って付いているものも多いですね。おおよそ次のようなカテゴリにわけられます。

コンテンツおよびウェブページのキャスト
cast/cast_site
Castデバイスの管理
scan/save/restore
Castデバイスのラベルと優先順位
set_alias/set_default/del_alias/del_default
再生・停止コントロール
ffwd/rewind/pause/play/play_toggle/seek/skip/stop
音量コントロール
volume/volumedown/volumeup
再生中の状態表示
info/status
YouTube用の再生キューの操作
add/clear/remove

コマンド名だけで何をするかはイメージできると思います。オプション等の詳細が知りたい場合はcatt COMMAND -hを実行してください。

さて,まずはscanコマンドでどんなCastデバイスが存在するかを確認してみましょう。

$ catt scan
Scanning Chromecasts...
192.168.0.10 - キッチン - Google Inc. Google Nest Hub
192.168.0.11 - テレビ - Google Inc. Chromecast Ultra

上記の例だと「キッチン」と名前の付けられたNest Hubと,⁠テレビ」と名前の付けられたChromecast Ultraが存在していることがわかります。キャスト先はIPアドレスもしくは名前を指定することになります。

もし英語名が良ければ,cast -s 名前 set_alias 別名のように別名を付けてしまうと良いでしょう。これらの設定は~/.config/catt/以下に保存されます。

試しにYouTubeの適当な動画を再生してみましょう。Castデバイスは家族がいるスペースにあることも多いのと,CATTではボリュームが大きめに出るため,無難かつ健全で多少大きな音でも許される動画を選ぶのが安全です。

ここでは第500回のUbuntuで!YouTuberに俺はなる!(後編)から,仰向けTVチャンネルのPCの電源に車用ヘッドライトバルブをつないだら危険すぎたを再生することにします。

$ catt -d テレビ cast https://www.youtube.com/watch?v=kTh-_1mNhPs
Casting remote file https://www.youtube.com/watch?v=kTh-_1mNhPs...
Playing "PCの電源に車用ヘッドライトバルブをつないだら危険すぎた" on "テレビ"...

無事に再生できたでしょうか。音量を調整したい場合は,volumedown/volumeupで上下させるか,volumeで0から100の間の数字を指定します。

$ catt -d テレビ volume 50

同様に早送り・巻き戻しはffwd/rewindです。一時停止・再開はpause/playとなります。また再生を終了したい場合は,stopを呼び出してください。

$ catt -d テレビ stop

castの代わりにcast_siteでウェブページを表示できます。とはいえスクロールなどはCastデバイス次第な部分もあるため,表示するとしたらインタラクティブな操作が不要な動画ページになるでしょう。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。