日々

 日中、昨日に引き続いてradikoプレミアムに対応したタイムフリーの録音スクリプトを作る。色々調べるうちにまた1つ便利なことを知った。XMLを検索する方法を以前何度か調べたけど判らなかったが、xmllintコマンドでgrepサブコマンドが使えると判明。結果から位置を拾って、その位置の情報を個別に得ることも出来る。
 それはともかくradikoプレミアム。認証ステップがログインしない場合とはURLとか手順が色々異なってるっぽいことが判明。さらに認証ステップの1回目はリダイレクトされるのでwgetコマンドを使うならオプションが必要。あとは認証キーが固定値でswfを展開する必要が無いっぽい。
 何とか雛形が出来たところで本日は終了。下記はfoo@example.comのメールアドレスとbarのパスワードでログインしてCRKラジオ関西)の20181201223000(2018/12/1 22:30:00)から20181201230000(2018/12/1 23:00:00)までタイムフリーで録音するシェルスクリプトの例。

#!/bin/sh
wget -q --save-cookies cookie.txt -O login --server-response --post-data="mail=foo@example.com&pass=bar" https://radiko.jp/ap/member/login/login 2> login.err
wget -q --load-cookies cookie.txt -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" | base64`
wget -q --load-cookies cookie.txt -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
ffmpeg -loglevel error -fflags +discardcorrupt -headers "X-Radiko-Authtoken: $authtoken" -i "https://radiko.jp/v2/api/ts/playlist.m3u8?station_id=CRK&l=15&ft=20181201223000&to=20181201230000" -acodec copy -vn -bsf:a aac_adtstoasc -y "20181201223000-CRK.m4a"
wget -q --load-cookies cookie.txt -O logout --server-response https://radiko.jp/ap/member/webapi/member/logout 2> logout.err

 定時後、第二神明で帰宅。晩御飯は焼きめしとポタージュスープ。ふと、Moto Z Playに自分のFUSION IP-Phone SMARTのアカウントをSIPで入れておくと便利かなーと思って試そうとするも、SIPアカウントの項目が殺されていた(滝汗)これだからAOSP以外は…。
 そういえば、Moto Z Playはバッテリーを十分に減らした状態でACアダプタに繋いでみたが、やはり充電を開始すると電池残量が(見た目上は)減ってゆく。再起動すれば、ちゃんと正しい残量表示になるものの、その状態でACアダプタが繋がってるとまた同じことになるので、これは修理かな?(滝汗)
 母親が海外旅行に行くので前回同様にSIMを買いたいってことで前回と同じ会社さんが販売している安価なものを注文。あと、Edyカードも欲しいと言い出したので、楽天から直接注文。税込54円だったけどポイントで全額支払えた。