読者です 読者をやめる 読者になる 読者になる

KOYAMA Yoshiaki のブログ

プログラミングについての試行錯誤をつらつら書き溜めていきます。

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh 公開。

簡易radiko録音ツール。要swftools
https://gist.github.com/saiten/875864
簡易Radiko録音スクリプト
https://gist.github.com/matchy2/3956266


上記 URL を参考に radiko.jp プレミアム対応の簡易 Radiko 録音スクリプト rec_radiko2.sh を作成してみました。引数として放送局のステーション id、録音時間、メールアドレス、パスワードなどを渡すと mp3 形式ファイルを作成します。(スクリプトを実行すると録音が始まります。)


下記 URL で公開します。

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip
タイムフリーの仕様変更に対応した
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip

同時録音版の詳しい詳細は、下記 URL

Radiko 録音スクリプト rec_radiko2.sh を同時録音に対応。Raspberry PiSamba を
インストールして iPhoneMacRaspberry Pi にアクセス。
http://kyoshiaki.hatenablog.com/entries/2014/07/30

を参照してください。


簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh では、Login チェックと Logout 処理も追加してみました。Raspberry Pi の sh (dash) は、シェル関数に対応していません。それで bash で動作するように指定しています。Logout 処理がプログラム的に正しいのかあまり自信がありません。本来は、GitHub でフォークして公開すべきなのですが、GitHub を利用したことがないのでブログで公開しています。GitHub で公開するほどのプログラムもないし、git の使い方も精通していないのが現状です。


また、rec_radiko2.sh の 105 行目から 118 行目のコメント# をは外すと

jq
http://stedolan.github.io/jq/

jq を使用してエリアーフリー、有料会員のチェックを行なうことができます。最初は無効になっています。

Raspberry PiUbuntu 13.10、OS X Mavericks で動作確認をしています。


1) OS X Mavericks の場合

OS X 10.9 MavericksRadiko 録音する方法。 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2014/02/23/183535

基本的に上記 URL の rec_radiko.sh を rec_radiko2.sh に置き換えて読んでください。
上記 URL で説明し忘れましたが、

Homebrew — MacPortsは酒でも飲みたくなるでしょ?じゃあHomebrewを使おう!
http://brew.sh/index_ja.html

Homebrew をインストールする前に App Store を使って Xcode をダウンロードし、ターミナル上で

~$ xcode-select --install
~$ sudo xcodebuild -license

上記コマンドを使い、コマンドラインツールをインストールする必要があります。一度 Xcode を起動すると sudo xcodebuild -license は必要ないかもしれません。

jq
http://stedolan.github.io/jq/

コマンド jq のインストールは、ターミナル上で

~ $ brew install jq

を実行してください。

rec_radiko2.sh の引数については、最後に書いてある Raspberry Pi の説明を参考にしてください。


2) Ubuntu 13.10 の場合

簡易 radiko.jp プレミアム版録音スクリプト rec_radiko2.sh を実行できるように必要なプログラムをインストールする必要があります。

Terminal 上で

$ sudo apt-get update
$ sudo apt-get install rtmpdump swftools libxml2-utils ffmpeg libavcodec-extra-53 

上記 コマンドを実行してインストールしてください。

その後、

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip
タイムフリーの仕様変更に対応した
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip

上記 URL から rec_radiko2.sh をダウンロードし、

OS X 10.9 MavericksRadiko 録音する方法。 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2014/02/23/183535

上記 URL の crontab -e 設定を参考にしてください。

Rhythmbox で MP3 形式ファイルを再生できるように

$ sudo apt-get install ubuntu-restricted-extras

を実行してください。また、python がインストールされていない場合は

$ sudo apt-get install python

上記コマンドでインストールしてください。

rec_radiko2.sh の引数については、次に書いてある Raspberry Pi の説明を参考にしてください。


3) Raspberry Pi の場合

Raspberry Pi を設定するには、Mac のターミナルから ssh を使う必要があります。ssh の設定、基本的な使い方は

Raspberry Pi の入手方法と基本設定 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2014/04/20/182455

上記 URL を参考にしてください。

上記 URLで説明してある通り Raspberry Pi の IP アドレスを確認する必要があります。 Raspberry PiHDMI ケーブルでテレビに接続し、USB端子にキーボード、マウスを繋ぎ、SDカードを挿入します。また LAN ケーブルか USB 無線 LAN アダプタを接続してください。最後に電源を入れます。

Usename: pi
パスワード: raspberry

でログインし、コマンド ifconfig -a を実行します。

$ ifconfig -a
wlan0     Link encap:Ethernet  HWaddr **:**:**:**:**:**
          inet addr:192.168.xx.xx  Bcast:192.168.xx.255  Mask:255.255.255.0

USB 無線 LAN アダプタの場合、wlan0 の inet addr:192.168.xx.xx が目的の IP アドレス 192.168.xx.xx です。
LAN ケーブルの場合、en0 の inet addr:192.168.xx.xx が目的の IP アドレス 192.168.xx.xx です。


まず、簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh を実行できるように必要なプログラムをインストールする必要があります。Mac のターミナルで ssh を使って、Raspberry Pi にログインし

~ $ ssh pi@192.168.xx.xx
pi@192.168.xx.xx's password: 
pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get install rtmpdump swftools libxml2-utils ffmpeg

上記コマンドを使ってインストールしてください。

pi@raspberrypi ~ $ exit
logout
Connection to 192.168.1.14 closed.
~ $ 

一度、コマンド exit で Raspberry Pi をログアウトします。

次に、

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip
タイムフリーの仕様変更に対応した
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip

Mac で上記 URL から rec_radiko2.zip をダウンロードします。Finder 上でダブルクリックして展開します。展開されて作成されたフォルダ rec_radiko2 をデスクトップに移動します。

Mac のターミナルで、次のコマンド

~ $ cd Desktop/rec_radiko2/
~/Desktop/rec_radiko2 $ scp rec_radiko2.sh pi@192.168.xx.xx:/home/pi
~/Desktop/rec_radiko2 $ scp delete.py pi@192.168.xx.xx:/home/pi
~/Desktop/rec_radiko2 $ 

scp を使って rec_radiko2.sh、delete.py ファイルを Raspberry Pi の /home/pi ディレクトリにコピーします。

rec_radiko2.sh の引数は

rec_radiko2.sh <channel_name_id> <minutes> <mail address> <password> [outputdir] [prefix]

です。

引数の詳細は

channel_name_id: 放送局の station id
minutes: 何分録音するか
mail address: radiko.jp プレミアムにログインするメールアドレス
password: radiko.jp プレミアムにログインするパスワード
outputdir: 出力するディレクトリ
[prefix]: 保存ファイル名の先頭文字。指定されない場合 channel_name_id
が使われます。

例) 
pi@raspberrypi ~ $ ./rec_radiko2.sh TBS 1 mail password
TBS を 1分間録音してカレントディレクトリに名前の先頭が TBS のファイル
を MP3 形式で保存します。

pi@raspberrypi ~ $ ./rec_radiko2.sh TBS 120 mail pasword radio
TBSラジオを 120分録音してカレントディレクトリの radio ディレクトリに
名前の先頭が TBS のファイルを MP3 形式で保存します。

です。

放送局の station id は

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip
タイムフリーの仕様変更に対応した
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip

に含まれる radiko_curl_area.sh を使ってダウンロードされる XML ファイルで確認できます。

まず、最初に Mac のターミナル上で

~/Desktop/rec_radiko2 $ ./radiko_curl_area.sh

を実行してください。

地域別の放送局情報 XML都道府県別に JP1.xml ~ JP47.xml という名前のファイルでダウンロードされます。

ISO 3166-2:JP - Wikipedia
https://ja.wikipedia.org/wiki/ISO_3166-2:JP

都道府県コードは上記 URL を参照してください。

放送局情報 XMLファイルの

JP13.xml: 東京
JP27.xml: 大阪

です。

===== JP13.xml =====
<?xml version="1.0" encoding="UTF-8" ?> 
<stations area_id="JP13" area_name="TOKYO JAPAN">
 <station>
    <id>TBS</id>
    <name>TBSラジオ</name>
.
.
.
</station>
 <station>
    <id>QRR</id>
    <name>文化放送</name>
    <ascii_name>JOQR  BUNKA HOSO</ascii_name>
.
.
.
</station>
</stations>

<stations area_id="JP13" area_name="TOKYO JAPAN">

area_name が都道府県です。この場合、東京都です。

<station>
</station>

で囲まれた部分が放送局です。

 <station>
    <id>TBS</id>
    <name>TBSラジオ</name>

で囲まれた部分が channel_name_id: 放送局の station id です。この場合、TBS です。

Mac のターミナル上で下記のように ssh を使って Raspberry Pi にログインし、

~ $ ssh pi@192.168.xx.xx
pi@192.168.xx.xx's password:
. 
pi@raspberrypi ~ $ ./rec_radiko2.sh TBS 1 mail password
.
.
=== Logout: radiko.jp ===
Stream mapping:
  Stream #0.0 -> #0.0
Press ctrl-c to stop encoding
size=     940kB time=60.12 bitrate= 128.0kbits/s    
video:0kB audio:939kB global headers:0kB muxing overhead 0.015906%

スクリプト rec_radiko2.sh が正しく動作するか、rec_radiko2.sh TBS 1 mail password を実行してください。mail、password は、radiko.jp プレミアムにログインする時に使用するメールアドレスとパスワードです。TBS ラジオを1分間録音し MP3 形式ファイルに書き込んでいます。(長時間録音すると MP3 形式に変換するのに時間がかかるので注意してください。)

pi@raspberrypi ~ $ ls
delete.py  public_html          radio           run.sh
Desktop    python_games         rec_radiko2.sh  svnc.sh
pi.conf    radiko_wget_area.sh  rec_radiko.sh   TBS_2014-xx-xx-xx_xx.mp3
pi@raspberrypi ~ $ 

上記のように TBS_2014-xx-xx-xx_xx.mp3 が目的のファイルです。

システム環境設定を開いて '共有/リモートログイン' にチェックを入れてください。上図の右中央部分の 'リモードログイン: 入' 文字列の下に

このコンピュータにリモートログインするには、
"ssh username@192.168.yy.yy" と入力してください。

と表示されているはずです。IP アドレス: 192.168.yy.yy、username を確認して下さい。

Raspberry Pi から Mac にコマンド scp を使って

pi@raspberrypi ~ $ scp TBS_2014-xx-xx-xx_xx.mp3 username@192.168.yy.yy:/Users/username

TBS_2014-xx-xx-xx_xx.mp3 ファイルを Macホームフォルダにコピーします。
上記 scp コマンドで IP アドレス 1箇所と username を2箇所間違いなく置き換えてください。

pi@raspberrypi ~ $ scp TBS_2014-xx-xx-xx_xx.mp3 username@192.168.yy.yy:/Users/username

The authenticity of host '192.168.yy.yy (192.168.yy.yy)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.yy.yy' (RSA) to the list of known hosts.
Password:
TBS_2014-xx-xx-xx_xx.mp3                      100%  940KB 939.5KB/s   00:01    

pi@raspberrypi ~ $ 

ホストの認証が確立できないので続けて良いか尋ねられますが、yes とタイプし、 Mac にログインする時に使うパスワードを入力してください。これでコピーできるはずです。

ホームフォルダを Finder 上で開き、TBS_2014-xx-xx-xx_xx.mp3 ファイルにカーソルを合わせてしばらくすると再生ボタンが現れるのでクリックしてください。再生されるはずです。

OS X 10.9 MavericksRadiko 録音する方法。 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2014/02/23/183535

上記 URL にも cron の説明があります。私は Raspberry Pi 上で radiko.jp プレミアムを cron を使ってタイマー録音しています。

いちいちコマンド scp を使ってコピーするのは面倒なので、Raspberry PiSamba をインストールして Mac の Finder から直接再生したり、iPhone (iPod touch) から

Documents 5 (Free)
カテゴリ: 仕事効率化
無料
Documents 5 – 高速 PDF リーダー、メディアプレーヤー、ダウンロードマネージャ - Readdle

GoodReader for iPhone 
カテゴリ: 仕事効率化
¥500
GoodReader for iPhone - Good.iWare Ltd.

GoodReader 4 (GoodReader 最新版)
カテゴリ: 仕事効率化
¥300
GoodReader 4 - Good.iWare Ltd.

上記アプリを使って MP3 ファイルをダウンロードし、再生しています。有料ですが GoodReader for iPhone は30秒早送りもできるので便利です。Raspberry PiSamba をインストールする方法と Mac の Finder からアクセスする方法、上記アプリの使用方法は次回説明したいと思います。


Raspberry Pi での cron 設定は、まず Mac のターミナル上でコマンド ssh を実行し Raspberry Pi にログインします。

~ $ ssh pi@192.168.xx.xx
pi@192.168.xx.xx's password: 
Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l
pi@raspberrypi ~ $ crontab -e

上のように crontab -e を実行します。

#
# m h  dom mon dow   command

0 8 * * 0 /home/pi/delete.py -y -d /home/pi/radio 12
0 1 * * 0,5 /home/pi/rec_radiko2.sh LFR 120 mail password /home/pi/radio/night
0 1 * * 2 /home/pi/rec_radiko2.sh TBS 120 mail password /home/pi/radio/junk
0 13 * * 1-5 /home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama

エディタ nano が起動します。カーソルキーで一番下に移動し、上記内容を入力してください。画面下に表示されているように CTRL+O を入力するとファイル名が表示されるので Return Key を押して保存します。CTRL+X で終了してください。mail (3箇所)、password (3箇所) は、radiko.jp プレミアムにログインする時に使用するメールアドレスとパスワードです。

この場合、

日曜日、午前8時にスクリプト /home/pi/delete.py -y -d /home/pi/radio 12 
を実行します。

ニッポン放送 (LFR) 日曜日と金曜日、午前1時から2時間、'オールナイトニッポン
(オードリー、ナインティナイン)' を録音します。

TBS ラジオ (TBS) 火曜日、午前1時から2時間、'月曜 JUNK 伊集院光 深夜の馬鹿力'
 を録音します。

TBS ラジオ (TBS) 月曜日から金曜日まで、午後1時から2時間30分、'たまむすび' 
を録音します。

です。

録音した MP3 ファイルを保存する radio ディレクト

pi@raspberrypi ~ $ mkdir radio

を作成し、radio ディレクトリ内に night、junk、tama ディレクトリをそれぞれ

pi@raspberrypi ~ $ cd radio
pi@raspberrypi ~/radio $ mkdir night
pi@raspberrypi ~/radio $ mkdir junk
pi@raspberrypi ~/radio $ mkdir tama
pi@raspberrypi ~/radio $ 

上記のように作成してください。

crontab の日付時刻設定は

#
# m h  dom mon dow   command
# 何分(0-59) 何時(0-23) 何日(1-31) 何月(1-12) 何曜日(0-6) コマンド

0 8 * * 0 /home/pi/delete.py -y -d /home/pi/radio 12
0 1 * * 0,5 /home/pi/rec_radiko2.sh LFR 120 mail password /home/pi/radio/night
0 1 * * 2 /home/pi/rec_radiko2.sh TBS 120 mail password /home/pi/radio/junk
0 13 * * 1-5 /home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama

数字は、時刻、日付、曜日を表し、
* は、毎月、毎日、毎時、毎分です。

曜日は
0: 日曜日
1: 月曜日
2: 火曜日
3: 水曜日
4: 木曜日
5: 金曜日
6: 土曜日

です。

0 1 * * 0,5 /home/pi/rec_radiko2.sh LFR 120 mail password /home/pi/radio/night

0,5 は、複数の曜日を指定しています。日曜日と金曜日を表しています。

0 13 * * 1-5 /home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama

1-5 は、複数の曜日を指定しています。月曜日から金曜日を表しています。

上の例は月曜日から金曜日の午後1時にコマンド

/home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama

を実行します

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2.zip
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_1.zip
タイムフリーの仕様変更に対応した
同時録音に対応した簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh
http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip

に含まれる delete.py は、次の

pi@raspberrypi ~ $ ./delete.py -d radio 12

コマンドをターミナル上で実行すると radio フォルダの中の日付が最新 12 個以外の削除されるファイルを表示します。

pi@raspberrypi ~ $ ./delete.py -y -d radio 12

上のように -y を引数と指定すると ( -y を指定する場合、十分注意してください。) radio フォルダ内の最新 12 個以外のファイルを削除します。radio フォルダの中にフォルダがある場合、そのフォルダ内も最新 12 個のファイル以外を削除します。

pi@raspberrypi ~ $ ./delete.py -a -d radio

radio フォルダのすべてのファイルを表示します。

0 8 * * 0 /home/pi/delete.py -y -d /home/pi/radio 12
0 1 * * 0,5 /home/pi/rec_radiko2.sh LFR 120 mail password /home/pi/radio/night
0 1 * * 2 /home/pi/rec_radiko2.sh TBS 120 mail password /home/pi/radio/junk
0 13 * * 1-5 /home/pi/rec_radiko2.sh TBS 150 mail password /home/pi/radio/tama

上のように crontab -e で設定すると毎週日曜日の午前8時に radio フォルダ内のファイルを最新 12 個以外削除します。最新 12 個のファイルだけ残るので、ディスク容量を気にする必要がありません。SD カードの容量に合わせて個数を設定してください。2 時間録音した MP3 形式ファイルのサイズは 109.8 MB です。

ディスク容量の確認は、コマンド df -h を使います。

pi@raspberrypi ~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           13G  9.1G  3.3G  74% /
/dev/root        13G  9.1G  3.3G  74% /
devtmpfs        180M     0  180M   0% /dev
tmpfs            38M  744K   37M   2% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            75M     0   75M   0% /run/shm
/dev/mmcblk0p5   60M   19M   41M  32% /boot

上の例は、私の16 GB SD カードの状態です。crontab -e の設定は、上記例とは違います。


ssh を終了するには

pi@raspberrypi ~ $ exit
logout
Connection to 192.168.xx.xx closed.

上記のように exit を実行してください。