簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh 公開。 http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748
上記 URL も参考にしてください。
まず最初に OS X 10.9 Mavericks で動作するように修正した
2ch Script version 0.4 http://kyoshiaki.sakura.ne.jp/osx/index.html
を上記URLで公開します。フリーウェアなので、良かったら気軽にダウンロードして下さい。
最近、マンネリ気味なので新しいことに挑戦してみようと海外のサイト
Raspberry Pi(ラズベリーパイ) http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0411-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-raspberry%20pi_Broad
から Raspberry Pi を直接購入してみました。詳しい内容はまた次回に紹介したいと思います。現在、Radiko 録音装置として使っています。
Raspberry Pi 到着まで、12日かかりました。その間に Raspberry Pi の情報をウェブ上で収集していたのですが、Radiko の録音ツールとして利用している
ピコピコ日記: RaspberryPiでRadikoを録音する http://shinyamatsuyama.blogspot.jp/2013/06/raspberrypiradiko.html
上記サイトを発見しました。Raspberry Pi が到着するまで暇なので OS X で試してみることにしました。ただし、Radiko を録音するスクリプトは
簡易Radiko録音スクリプト https://gist.github.com/matchy2/3956266
を使うことにしました。
まず、簡易Radiko録音スクリプトを実行できるように必要なプログラムをインストールする必要があります、
プログラムのインストールに
Homebrew — MacPortsは酒でも飲みたくなるでしょ?じゃあHomebrewを使おう! http://brew.sh/index_ja.html
を利用することにしました。ターミナル上で次のコマンド
~ $ brew update ~ $ brew install wget rtmpdump swftools libxml2 ffmpeg
を使って必要なプログラムをインストールします。
次に
簡易Radiko録音スクリプト https://gist.github.com/matchy2/3956266
上記 URL の左部分 ‘Download Gist’ ボタンをクリックしてダウンロードします。
ダウンロードされた gistxxxxxxx.tar.gz ファイルを Finder 上でダブルクリックして展開します。作成されたフォルダの中のファイル rec_radiko.sh をホームフォルダに移動します。 rec_radiko.sh ファイルを移動したら、作成されたフォルダはゴミ箱に捨ててください。
ターミナル上でファイル rec_radiko.sh に実行属性をつけます。
~ $ chmod +x rec_radiko.sh
次に
radiko.jp http://radiko.jp/
に Safari でアクセスして地域と放送局を確認して下さい。(Radiko は IP アドレスを基準に地域を判定します。)
私が
radikoの番組表XML :宗子時空 http://www.dcc-jpl.com/diary/2011/06/13/radiko-xml/
を参考にしたエリア情報取得シェルスクリプト radiko_curl_area.sh、radiko_wget_area.sh と指定したフォルダ内の最新のファイル最大数を設定する Python スクリプト delete.py (delete.py は危険なプログラムです。むやみに実行しないでください。) を下記 URL
radiko_utility.zip http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip
で公開します。上の URL からダウンロードしたファイル radiko_utility.zip を Finder 上で展開し、ファイル radiko_curl_area.sh、radiko_wget_area.sh、 delete.py をそれぞれホームフォルダに移動してください。作成されたフォルダはゴミ箱に捨ててください。
~ $ ./radiko_curl_area.sh
上記コマンドをターミナル上で実行してください。地域別の放送局情報 XML が都道府県別に JP1.xml ~ JP47.xml という名前のファイルでダウンロードされます。
ここで
radiko.jp http://radiko.jp/
にアクセスした時に表示される地域がどの XML のファイルか確認します。
例えば、放送局の地域が東京ならコマンド grep で “TBSラジオ” で検索します。
~ $ grep -e "TBSラジオ" *.xml JP10.xml: <name>TBSラジオ</name> JP11.xml: <name>TBSラジオ</name> JP12.xml: <name>TBSラジオ</name> JP13.xml: <name>TBSラジオ</name> JP14.xml: <name>TBSラジオ</name> JP8.xml: <name>TBSラジオ</name> JP9.xml: <name>TBSラジオ</name> ~ $
Finder 上で JP13.xml ファイルをダブルクリックすると Xcode が立ち上がります。
================ JP13.xml ======================= <?xml version="1.0" encoding="UTF-8" ?> <stations area_id="JP13" area_name="TOKYO JAPAN"> <station> <id>TBS</id> <name>TBSラジオ</name> <ascii_name>TBS RADIO</ascii_name> . . </station> <station> <id>QRR</id> <name>文化放送</name> <ascii_name>JOQR BUNKA HOSO</ascii_name> <href>http://www.joqr.co.jp/</href> <name>TBSラジオ</name> . . ================ JP13.xml =======================
2行目の area_name=”TOKYO JAPAN” より、JP13.xml が東京の放送局情報 XMLだとわかります。
rec_radiko.sh の引数は
rec_radiko.sh <channel_name_id> <minutes> <outputdir> [prefix]
です。引数の詳細は
channel_name_id: 放送局の station id minutes: 何分録音するか outputdir: 出力するディレクトリ [prefix]: 保存ファイル名の先頭文字。指定されない場合 channel_name_id が使われます。 例) ~ $ ./rec_radiko.sh TBS 1 TBS を 1分間録音してカレントディレクトリに名前の先頭が TBS のファイル を MP3 形式で保存します。 ~ $ ./rec_radiko.sh TBS 120 radio TBSラジオを 120分録音してカレントディレクトリの radio ディレクトリに 名前の先頭が TBS のファイルを MP3 形式で保存します。
です。
自分の地域の放送局を確認するには、放送局情報 XML ファイル、東京の場合は JP13.xml の
<station></station>
で囲まれた部分がそれぞれの放送局の情報です。例えば
<station> <id>TBS</id> <name>TBSラジオ</name> <ascii_name>TBS RADIO</ascii_name>
の部分
<id>TBS</id>
が TBSラジオの channel_name_id です。
<station> <id>QRR</id> <name>文化放送</name> <ascii_name>JOQR BUNKA HOSO</ascii_name>
文化放送の場合は channel_name_id は QRR です。
~ $ ./rec_radiko.sh QRR 120 radio
文化放送を 120分録音して radio ディレクトリに名前の先頭が QRR のファイルを MP3 形式で保存します。
実際に正しく動作するか、自分の地域の放送局 station_name_id で1分間録音を試してみてください。(ここでは文化放送を指定しています。)
~ $ ./rec_radiko.sh QRR 1
カレントディレクトリ(この場合、ホームフォルダ) に、ファイル QRR_2014-XX-XX-XX_XX.mp3 が作成されているはずです。
Finder 上で ファイル QRR_2014-XX-XX-XX_XX.mp3 をダブルクリックすると iTunes に登録されてしまうので ‘/アプリケーション’ フォルダの QuickTime Player にドラッグ・ドロップして再生してください。
これで Radiko の録音に成功しました。
ただし、
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "ja_JP.utf8"
という警告が表示されます。問題はないのですが、いやなら .bashrc、.profile ファイルに
export LC_ALL=en_US.UTF-8 export LANG=ja_JP.utf8
を追加してください。
export LC_ALL=C
だと Ruby などで
invalid byte sequence in US-ASCII (ArgumentError)
上記のようなエラーが出ます。注意してください。
後は、cron を使って指定した時間に録音するようにします。次のコマンドを使って
~ $ sudo launchctl unload /System/Library/LaunchDaemons/com.vix.cron.plist ~ $ sudo launchctl load /System/Library/LaunchDaemons/com.vix.cron.plist
cron を起動してください。
次に crontab -e を使用して時間を設定します。
crontab -e を実行するとテキストエディタ vim が起動します。
まず最初に簡単な vim の説明をしたいと思います。vim には、4つのモード (ノーマルモード、コマンドモード、ビジュアルモード、挿入モード) があります。
ノーマルモード: 最初の状態 コマンドモード: ノーマルモードで : キーを押す ビジュアルモード: ノーマルモードで v キーを押す 挿入モード: ノーマルモードで i キーを押す。 コマンドモード、ビジュアルモード、挿入モードで ESC キーを押すとノーマルモードに戻る。
位置の移動: カーソルキー 文字の入力: 挿入モードで、キーをタイプすると入力できます。delete キーで削除できます。 文字の削除: ノーマルモードで x キーを押すと一文字削除できます。 コピー: ノーマルモードでコピーしたい最初の位置に移動、その後ビジュアルモードに変更、 右カーソルキーで範囲を指定し、y キーを押すとコピーできます。 ペースト: ノーマルモードでペーストしたい位置にカーソルキーで移動し、p キーを押す。 ファイルを保存して終了: ノーマルモードで : w q の順に3つのキーを押して Return キーを押す。
簡単な vim の説明は、これで終わりです。詳しい説明は
Vimの使い方 http://www15.ocn.ne.jp/~tusr/vim/vim_text0.html
を参考にしてください。
それではコマンド crontab -e を実行します。
~ $ crontab -e
vim が起動します。
PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin 0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio
と入力して保存し、vim を終了してください。コマンド crontab -e を終了したら、入力されたデータが正しいかチェックされ結果がターミナル上に英語で表示されます。
PATH を忘れずに指定してください。
録音した MP3 ファイルを保存する radio ディレクトリを次のコマンド
~ $ mkdir radio
で作成してください。(Finder 上で作成しても構いません。)
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio
の xxxxxx の部分はターミナル上で pwd コマンドで
~ $ pwd /Users/xxxxxx
確認して置き換えてください。
crontab の日付時刻設定は
# m h dom mon dow command # 何分(0-59) 何時(0-23) 何日(1-31) 何月(1-12) 何曜日(0-6) コマンド 0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio 数字は、時刻、日付、曜日を表し、 * は、毎月、毎日、毎時、毎分です。 曜日は 0: 日曜日 1: 月曜日 2: 火曜日 3: 水曜日 4: 木曜日 5: 金曜日 6: 土曜日
です。
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio
0,2-6 は、複数の曜日を指定しています。日曜日,火曜日〜土曜日を表しています。
上の例は日曜日と火曜日から土曜日の午前1時にコマンド
/Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio
を実行します。
すなわち、ニッポン放送で日曜日と火曜日から土曜日の午前1時に2時間 (120 分) オールナイトニッポンを録音します。
radiko_utility.zip http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip
に含まれる delete.py は、次の
~ $ ./delete.py -d radio 10
コマンドをターミナル上で実行すると radio フォルダの中の日付が最新 10 個以外の削除されるファイルを表示します。
~ $ ./delete.py -y -d radio 10
上のように -y を引数と指定すると ( -y を指定する場合、十分注意してください。) radio フォルダ内の最新 10 個以外のファイルを削除します。radio フォルダの中にフォルダがある場合、そのフォルダ内も最新10 個のファイル以外削除します。
~ $ ./delete.py -a -d radio
radio フォルダのすべてのファイルを表示します。
PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin 0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio 0 10 * * 0 /Users/xxxxxx/delete.py -y /Users/xxxxxx/radio 10
上のように crontab -e で設定すると毎週日曜日の午前10時に radio フォルダ内のファイルを最新 10 個以外削除します。そのためディスク容量を気にする必要がありません。本来、Raspberry Pi 用に作成したものです。
後、失敗した録音ファイルは
~ $ open /tmp
で確認して下さい。
You have mail. ~ $
cron で指定したコマンドが実行されると上記のようにメールが届きます。
ターミナル上で
~ $ cd /var/mail /var/mail $ ls xxxxxx
上記コマンドを実行するとユーザー名: xxxxxx のファイルが確認できます。このファイルがメールの実体です。
/var/mail $ cat xxxxxx
上記コマンドで中身が見れます。削除するには
/var/mail $ sudo rm xxxxxx
を実行してください。