録音してみる
深夜まで起きてるのは無理なので
さらっとスクリプトで録音開始できるやつを作ってみる。
◇要求仕様
・cronで1分前に起動して録音するかどうか判定
・1分前から録音開始して1分後まで録音
・rec.pl --start 0:59 --end 3:01 --channel xxxx --outfile rec.flv
・とりあえず日をまたぐのは考えない
まずは radiko - ymkoの日記 で録音ツール準備。
crontabってどう書くんだっけか・・・
crontabの書き方 | server-memo.net
らめぇー作ってる間にラジオはじまっちゃうw
なのでとりあえずなものでごまかす。
cronから起動させて、終了は乱暴にkillallでコマンドを落とす。
$ crontab -e
*/1 * * * * /home/hato/rec/rec.pl 01 3 19 3 * killall rtmpdump
うまくいきますように。
#!/usr/bin/perl use strict; use warnings; use File::Basename; use File::Path; use Fcntl; use Getopt::Long; my %opt; GetOptions(\%opt, 'start=s', 'end=s', 'channel=s'); $opt{start} = "0:58"; $opt{end} = "3:01"; $opt{channel} = "FMT"; $opt{outfile} = "/home/hato/rec/log/FMT.flv"; main(); exit(0); sub main { log_out("--------"); log_out("$0 start"); while (my ($k, $v) = each %opt) { log_out("$k=$v"); } # --- now my $now_min; { my $time = now_time(); $time =~ /(\d+):(\d+):\d+$/; my ($h,$m) = ($1,$2); $m += $h*60; $now_min = $m; } # --- start my $start_min; { my ($h,$m) = split /:/, $opt{start}; $start_min = $h * 60 + $m; } # --- end my $end_min; { my ($h,$m) = split /:/, $opt{end}; $end_min = $h * 60 + $m; } log_out("now $now_min"); log_out("start $start_min"); log_out("end $end_min"); if ($now_min >= $start_min && !-f $opt{outfile}) { my $rtmpdump = "/home/hato/rec/rtmpdump-2.2/rtmpdump "; my $cmd = "$rtmpdump " . "--playpath 'simul-stream' " . "--rtmp 'rtmp://radiko.smartstream.ne.jp:1935' " . "--swfUrl 'http://radiko.jp/player/player_0.0.9.swf' " . "--pageUrl 'http://radiko.jp/player/player.html#$opt{channel}' " . "--app '$opt{channel}/_defInst_' " . "--flashVer 'LNX 10,0,45,2' " . "--live " . "--flv $opt{outfile} "; log_out("$cmd"); system($cmd); my $rc = $? >> 8; log_out("rc=$rc"); } log_out("$0 end"); return; }