tl;dr
AppleTVでニュースの生配信を見たい
- 生配信のm3uプレイリストのURLを取得
- pyaTVでAppleTVにリモート再生を開始させる
背景
AppleTVに日本国内のニュース配信は行われていない(あってもNHK海外版しかない)為、どうにかしたいと思います。
1. プレイリスト取得
- 日テレnews24
https://www.news24.jp/livestream/index.m3u8
- ウェザーニューズ
http://movie.mcas.jp/mcas/wn1_2/master.m3u8
- TBS (公式から提供なし。以下のスクリプトを使って取得します)
ヤフーニュースのライブ配信のプレイリストを取得
-
Policy Keyはアカウントごとに固定しているっぽいです。Revokeされない限りずっと使えと思います。
-
以下のファイルを
get-yahoo-news-live-playlist-url.sh
に保存しておきます。 -
使うには
jq
が必要です。(macOSではbrew install jq
、raspberry piではsudo apt install -y jq
でインストールしておきます)
#!/bin/bash
#
# https://news.yahoo.co.jp/live から見れるニュースのライブ配信
#
POLICY_KEY_HEADER='Accept: application/json;pk=BCpkADawqM0Q9Hmq-rorJvkNmoOS44SlR_2FiG826OEOA1d3hAwJJOKIRjbuxxvsWYq3oXZkKtsfu03c9MrVUGhVfsjLNqa4lOVpNjlCfYc-WcQNVKf_qQVk-j0ReGDd_CzXPOEgBqUHU-w7'
NTV='https://edge.api.brightcove.com/playback/v1/accounts/5690807595001/playlists/5743160747001?limit=1000'
TBS='https://edge.api.brightcove.com/playback/v1/accounts/5690807595001/playlists/5743480071001?limit=1000'
BBC='https://edge.api.brightcove.com/playback/v1/accounts/5690807595001/playlists/5794804965001?limit=1000'
URL=""
usage_exit() {
echo "Get m3u URLs for yahoo news live broadcast" >&2
echo "Usage: `basename "$0"` -c ['bbc'|'tbs'|'ntv']" >&2
exit 1
}
while getopts c:h OPT
do
case $OPT in
c) case `awk '{print tolower($0)}' <<< "$OPTARG"` in
ntv) URL="$NTV" ;;
tbs) URL="$TBS" ;;
bbc) URL="$BBC" ;;
esac
;;
h) usage_exit
;;
\?) usage_exit
;;
esac
done
shift $((OPTIND - 1))
if [[ -z "$URL" ]]; then
usage_exit
fi
curl -s "$URL" -H "$POLICY_KEY_HEADER" | jq -r '.videos[] | .sources[] | .src'
2. PyaTVを動かす
参照 : https://pyatv.dev/getting-started/
PyaTV初期設定
-
先にpython3 をインストールしてください。
-
インストールします
pip3 install pyatv
-
ネットワーク内のAppleTVを検索し、Identifierを取得します。
$ atvremote scan Scan Results ======================================== Name: 主寝室 Model/SW: 4K tvOS 13.4.8 Address: 192.168.xx.xx MAC: 00:11:22:33:44:55 Deep Sleep: False Identifiers: - EC4B936E-54C6-46F5-8DA6-000000000000 - 00:11:22:33:44:55 Services: - Protocol: MRP, Port: 49152, Credentials: None - Protocol: AirPlay, Port: 7000, Credentials: None
上記
00:11:22:33:44:55
が主寝室
という名のAppleTVの識別子です。適宜にメモしておきます。 -
ペアリングします。Enter PIN on screenが表示されたら、アップルTVの画面に表示される4桁の暗証番号を入力します。
$ atvremote --id 00:11:22:33:44:55 --protocol airplay pair Enter PIN on screen:(ひそひそ) Pairing seems to have succeeded, yey! You may now use these credentials: 1234567890123:12345678890ABCDEF123456......
最後に表示される16進の文字列は CREDENTIALS 文字列です。コピーしてテキストファイルに保存しておきます。
PyaTVで指定AppleTVにAirplay指示を流す
使い方:
atvremote --id [APPLETV_ID] --airplay-credentials `cat CREDENTIAL_FILE.txt` "play_url="$PLAYLIST_URL"
使用例:(AppleTV IDをAPPLE_TV_ID.txt
に、Airplay認証情報はCREDENTIAL_FILE.txt
に予め保存しておいたことにします)
-
TBSを再生するには
atvremote --id `cat APPLE_TV_ID.txt` --airplay-credentials `cat CREDENTIAL_FILE.txt` "play_url=`bash get-yahoo-news-live-playlist-url.sh -c tbs | head -n1`"
-
日テレnews24を再生するには
atvremote --id `cat APPLE_TV_ID.txt` --airplay-credentials `cat CREDENTIAL_FILE.txt` "play_url=https://www.news24.jp/livestream/index.m3u8"
その他
atvremote コマンドをcrontabに合わせて使うとAppleTV目覚し時計が出来ます。
更にこちらに紹介されるシェルスクリプトに合わせて使うと、平日に限定することも出来ます。
いろいろ試してみてください。( ˇωˇ )