new;$w->agent('IE');$html = $w->get($uri)->content;@title = $html =~ m|<title>(.*)</title>|;@link = $html =...">

響ラジオをperlとcrontabで自動で定期的に落とす

/ Perl / Comment[0]
響ラジオを落とすPerlスクリプトを適当に書いてみました。
mmsのダウンロードにはmimmsというツールを使うのでインストールしておきましょう。
$ sudo apt-get install mimms

hibiki.pl
#!/usr/bin/perl
use LWP;
( $slug, $dir ) = @ARGV;
$uri = "http://hibiki-radio.jp/description/$slug";

$w = LWP::UserAgent->new;
$w->agent('IE');
$html = $w->get($uri)->content;
@title = $html =~ m|<title>(.*)</title>|;
@link = $html =~ m|src="([^"]+.aspx[^"]+)"|g;
print "$title[0]\n";

$asxsrc = $w->get($link[0])->content;
@mmstitle = $asxsrc =~ m|<title>(.*)</title>|;
@mmsuri = $asxsrc =~ m|="(.*.wma)"|;
print "$mmstitle[0]\n";
if( !-f "$dir/$mmstitle[0].wma" ) {
system( "mimms $mmsuri[0] \"$dir/$mmstitle[0].wma\"" );
} else {
print "File already exists\n";
}

使い方はいたって簡単
引数にスラッグと保存先ディレクトリを指定するだけです
例: $ perl hibiki.pl kawaisou または $ perl hibiki.pl lovelive_ms /storage

スラッグというのは番組の詳細ページURLの最後の部分です。
たとえば、
僕らはみんな可合荘なら http://hibiki-radio.jp/description/kawaisou
ラブライブryなら http://hibiki-radio.jp/description/lovelive_ms

例として可合荘を落としてみましょう。
$ perl hibiki.pl kawaisou
響 - HiBiKi Radio Station -「僕らはみんな河合荘 ~ラジオもみんな河合荘~」番組詳細
[毎]140710 僕らはみんな河合荘 ~ラジオもみんな河合荘~ #16
mms://wms.uliza.jp/uliza/910/140710_kawaisou_140710_kawaisou-wm.wma => [毎]140710 僕らはみんな河合荘 ~ラジオもみんな河合荘~ #16.wma.1
194.56 kB / 28.17 MB (9.50 kB/s, 00:49:04 remaining)

ディレクトリを指定して「ラブライブ! μ's広報部 ~にこりんぱな~」を落としてみます。
$ perl hibiki.pl lovelive_ms /storage
響 - HiBiKi Radio Station -「ラブライブ! μ's広報部 ~にこりんぱな~」番組詳細
[毎]140709 ラブライブ! μ's広報部 ~にこりんぱな~ #53
mms://wms.uliza.jp/uliza/910/140709_lovelive_ms_20140709_lovelive_ms-wm.wma => /storage/[毎]140709 ラブライブ! μ's広報部 ~にこりんぱな~ #53.wma
59.39 kB / 25.36 MB (4.53 kB/s, 01:33:05 remaining)

まあこんな感じですが、これを毎回実行するのは面倒ですよね。
というわけでcrontabに自動で定期実行させましょう。

crontabで定期的に自動で落とすようにしてみる


crontabの書き方は左から分, 時, 日, 月, 曜日となっています。
曜日の番号は日曜日から0で始まります。

例として毎週水曜日更新の「ラブライブ! μ's広報部 ~にこりんぱな~」を定期で落とすには次のように設定します。

$ crontab -e
30 19,23 * * 3 /home/user/hibiki.pl lovelive_ms /storage/lovelive
#水曜日の19:30と23:30にスクリプトが実行されます。取りこぼしのリスクを減らすために2回実行させています。

crontabが面倒だよっていう方にこんなサービスがありますので参考にしてみましょう。
CRONTAB設定ヘルパー
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可