けもフレ2先行上映会(大日)とかradikoプレミアム録音スクリプトとか

 radikoプレミアムのエリアフリーにも対応したradikoのタイムフリー録音スクリプトを先日作ったものを元に作成。番組検索キーワードに引っかからなかった時にxmllintコマンドが出すエラーメッセージも捨てるようにした。
 引数に番組名の検索キーワードを指定、radikoプレミアムに入ってる場合は続けてユーザー名(メールアドレス)とパスワードを指定して実行する。要wgetsed、openssl、xmllint、date、ffmpeg

#!/bin/sh
# ログイン
echo "***** login"
option=""
if [ -n "$2" ]; then
	wget -q --save-cookies cookie.txt -O login --server-response --post-data="mail=$2&pass=$3" https://radiko.jp/ap/member/login/login 2> login.err
	option="--load-cookies cookie.txt"
fi
# 認証
echo "***** auth"
wget -q $option -O auth1 --server-response --trust-server-names --header="X-Radiko-App: pc_html5" --header="X-Radiko-App-Version: 0.0.1" --header="X-Radiko-User: dummy_user" --header="X-Radiko-Device: pc" https://radiko.jp/v2/api/auth1 2> auth1.err
authtoken=`sed -n -e 's/.*X-RADIKO-AUTHTOKEN: //ip' auth1.err`
keylength=`sed -n -e 's/.*X-Radiko-KeyLength: //ip' auth1.err`
keyoffset=`sed -n -e 's/.*X-Radiko-KeyOffset: //ip' auth1.err`
partialkey=`echo -n "bcd151073c03b352e1ef2fd66c32209da9ca0afa" | sed -n -e "s/.\{$keyoffset\}\(.\{$keylength\}\).*/\1/p" | openssl enc -base64`
wget -q $option -O auth2 --server-response --trust-server-names --header="X-Radiko-AuthToken: $authtoken" --header="X-Radiko-PartialKey: $partialkey" --header="X-Radiko-User: dummy_user" --header="X-Radiko-Device: pc" https://radiko.jp/v2/api/auth2 2> auth2.err
# エリアIDを取得して放送局IDの一覧を取得(複数)
echo "***** station list"
area_id=`sed -n -e 's/,.*//p' auth2`
echo "area_id=$area_id"
echo "keyword=$1"
if [ -n "$2" ]; then
	wget -q -O station.xml http://radiko.jp/v3/station/region/full.xml
else
	wget -q -O station.xml http://radiko.jp/v2/station/list/$area_id.xml
fi
for station_id in `xmllint --xpath "//id" station.xml | sed -e "s/<id>\([^<]*\)<\/id>/\1\n/g"`
do
	echo "station_id=$station_id"
	# 28時間表記で7日前から本日までの日付を取得(複数)
	for day in 7 6 5 4 3 2 1 0
	do
		program_date=`TZ="Asia/Tokyo" date --date="$day days ago 5 hours ago" +"%Y%m%d"`
		echo "program_date=$program_date"
		# 放送局IDと日付を指定した番組表からキーワードを含む番組名の開始日時と終了日時を取得(複数)
		wget -q -O program.xml http://radiko.jp/v3/program/station/date/$program_date/$station_id.xml
		for result in `xmllint --xpath "/radiko/stations/station/progs/prog/title[contains(text(),"\""$1"\"")]/parent::prog/@ft|/radiko/stations/station/progs/prog/title[contains(text(),"\""$1"\"")]/parent::prog/@to" program.xml 2> /dev/null | sed -e 's/ ft="\([^"]*\)" to="\([^"]*\)"/\1:\2\n/g'`
		do
			echo "ft=${result%:*}, to=${result#*:}"
			# 放送局IDと開始日時と終了日時を指定してタイムフリー録音
			ffmpeg -loglevel error -fflags +discardcorrupt -headers "X-Radiko-Authtoken: $authtoken" -i "https://radiko.jp/v2/api/ts/playlist.m3u8?station_id=$station_id&l=15&ft=${result%:*}&to=${result#*:}" -acodec copy -vn -bsf:a aac_adtstoasc -y "${result%:*}-${result#*:}-$station_id.m4a"
			# 同名で番組表を保存
			cp program.xml "${result%:*}-${result#*:}-$station_id.xml"
		done
	done
done
# ログアウト
echo "***** logout"
if [ -n "$2" ]; then
	wget -q $option -O logout --server-response https://radiko.jp/ap/member/webapi/member/logout 2> logout.err
fi

 昨日届いたグリーンハウスのHDMIセレクタ GH-HSWC3を開封して確認。本体はプラスチック製。付属品は電源供給用USBケーブル、ケーブル付きの赤外線受光部、受光部固定用両面シール、リモコン、取扱説明書、保証書だけ。

 本体は前側がHDMI入力ポート1~3、奥側がHDMI出力ポートとUSB給電端子、右側面がリモコン接続端子、上面に入力切り替えボタンと入力1~3のランプがある。
 USB給電端子は取扱説明書によると5V 1Aで、外径はノギスで測ってみたところ3.5mmではないかと思われる。カモンのUSB電源供給ケーブル DC-3513Aが使えたので、センタープラスで、外径3.5mm、内径1.35mmなんだと思う。
 ただ、中華系で良く使われるDC-3413A(外径3.4mm、内径1.3mm)も使えたり。あとDC-3814Aも差し込めた。USB給電端子はかなりマージンがあるように思える。
 USB給電をすることで自動的に電源が入る。特に電源スイッチ等は無い。もちろん、USB給電せずともHDMI入力ポートに何らかの機器をつなぐことでも電源は入るが、安定性を考えると給電端子があるのはありがたい。
 あと受光部だけを引っ張り出すことでHDMIセレクタを背面に隠しておいても良いとことか、自動切り替え機能でゲーム中にレコーダーの録画予約が始まって自動的に画面が切り替えられるといった問題も自動切換非対応で手動切換のみだから安心して使える。
 今日も定時1時間前に早退させてもらって、湊川から阪神高速へ。が、とにかく大渋滞であちこち全然動かない。何とか中之島西で降りて乗り継ぎすべく堂島へ向かうも下道も大渋滞。やっとこさ乗り継ぎして守口線へ。ここからは快適。
 守口で降りてイオンシネマ大日に無事到着。トイレに駆け込んで出てきたら歌ちゃんがちょうど到着したところで無事合流。途中、昨日はせっかく目の前だったのにメガネ忘れてボヤケてたので今日は忘れずに車に一旦戻ってメガネを確保。
 そういえば、歌ちゃんの知人のフレンズの方が挨拶してきてツイッターのプロフィール画面を見せてくれた際に風船飛んでて、今日誕生日なんですって言ったので、そういえばヲレも誕生日だったと思いだして同じようにプロフィール画面見せてご挨拶。

 ほどなく案内が始まって館内へ。今回はほぼ最後部だけど、なんばパークスシネマと違って広くないのでスクリーン前は比較的見やすい。そして、小野早稀本宮佳奈が入場してきてトークショーが開始。前日までの組み合わせと違って勝手知ったるコンビなので良いカンジ。

 とは言え、相変わらずちゃんさきは物怖じしたようなカンジで、逆にもとかなは相方が判ってることもあってか今日はかなりトークが暴走気味。天王寺動物園に行ってきたらしく、好きな動物トークが止まらない。当然のようにデグーのきすけについても語り始める。
 質問コーナーでじゃぱりまんを食べてみたい、きっと美味しいに違いないと妄想するちゃんさきに対して、きっと動物のエサの味だよ?とぶった切るもとかな。でも、フレンズ化してるから人間に必要な栄養が全部入ってるとしたらサプリ全部入りみたいになってない?とか言い出す(笑)
 終始脱線しまくりのグダグダ暴走トークで楽しかった。二人の衣装も今日はちゃんさきが薄い赤というかピンクっぽい上着で、もとかなは白っぽい上着だったので昨日までの何故か黒系が多くて場内の黒さに溶け込むこともなかったところも良いカンジだった。
 で、今回も写真撮影。後ろの割にはスクリーンまでの距離が近いこともあって顔がわかるレベルで映っていた。
 んで、けもフレ2第1話先行上映。既に昨日までで2回見てることと、3日間連続で動いていることもあって疲れていたのがトークショー終わって満足してたのか、かなり何度もうつらうつらと寝落ちしてた(汗)
 終わってから歌ちゃん知り合いのフレンズさん達とフードコートに移動してダベりつつ、グッズとか並べつつ、晩御飯。

 丸亀製麺できつねうどん(大)とご飯を注文して食った。ちょうど、まるちゃんがフリーになったと連絡があってこっちに来たので適当に先に別れて帰ることに。

 まるこめさんを自宅まで送ってから帰りにセブン・イレブン寄って軽くドリンクを査収して阪神高速守口線から一気に帰還。湊川JCTから北神戸線周りで第二神明に。
 先日Amazonで注文したJBL Pebblesが届いてたので早速開封

 軽く動作確認。ディスプレイの音声出力端子が普通のテレビのヘッドホン端子と同じことに気付いたり、昨日届いたHDMIセレクタを設置したらリモコンの入力切り替えボタンが普段使ってるメディアプレーヤーのリモコンの右移動ボタンと同じでかぶってることに気付いて涙したり。