FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

アニラジを録音・録画・保存する方法……のメモ(KoRec攻略編1)

いらっしゃいませ。またお会いできましたね



今回は、またもやラジオ録音ツールKoRecを取り上げます。
KoRecは、アニラジ関係の機能が盛りだくさん。
アニラジ好きには、なくてはならないかどうかは、さてお立合い。
この素晴らしさを味わわなくては損ですよ。

ただ、優秀なKoRecにも欠点があります。
「説明がよく分かんない」
「設定がめんどくさい」
これですよ。

私はこれを解決するために、一人旅立ちました。
アイスランドをさまよう日々。
温泉につかっては、立ちくらみを楽しんでいました。
つらく苦しい観光の後に待ち受けていたのは、プログラミング。

なぜ why?
いまさら、プログラミングだって、そりゃないぜジェーン。

しつこいですか。

ちょっと思いついたんですよ
KoRec補助ツールのアイデアがね。

その機能とは!
・設定リストに、番組名の一部を書いておく
・30毎にKoRecを起動するよう、タスクスケジューラを仕掛ける
・起動したときに、リストにある番組か判断する
・全自動で録音

なんとなく、いい感じじゃないですか。
今は、このコードのテストしているところです。
調子が良ければ、2~3日でお見せしましょう。

一応、ここに、ソースを置いておきます。
うわ。またPerlかよ。そうなんです。Perlなんです。
ただ、Perlをインストールしてなくて使う方法もあります。
PerlのEXE化です。
そっちは、今、研究中です。

ああ、手前味噌なことばっかり書いてすみません。
なんか、プログラミングが楽しくなっちゃって。

そんなこんなで、らたまいしゅう!



use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

sub katto{
$_[0] =~ /^\s*(.*)\s*$/;

return $1;
}

sub dusk{
my %cfg = @_;

my $image;
my $pid;
my $sessionname;
my $session;
my $memusage;
my $stat;
my $username;
my $cputime;
my $windowtitle;
my $paipu;
my $tmpflag = 1;

while($tmpflag){
$tmpflag = 0;
open $paipu, "tasklist /FO CSV /NH /V |";
while(<$paipu>){
chomp;
$_ = Encode::decode('cp932', $_);
s/^\s*\"//;
s/\"\s*$//;
($image, $pid, $sessionname, $session, $memusage, $stat, $username, $cputime, $windowtitle) = split(/\Q","\E/,$_);
if($windowtitle =~ /JoyToTheWorld/i){
printf "*KoRec 発見 (+PID = $pid +WindowTitle = \"$windowtitle\")\n";
if((kill 9, $pid) || (kill 15, $pid)){
printf "*KILL シグナル送信成功\n";
}else{
printf "*KILLシグナル送信失敗\n";
printf "*taskkillも大雑把に放つ\n";
system('taskkill /F /T /FI "WINDOWTITLE eq JoyToTheWorld" >nul');
}
$tmpflag = 1;
}
}
close $paipu;
}
printf "*ログ消去\n";
unlink glob($cfg{logpath}.'\\*.log');
}




sub JoyToTheWorld{
my $dh00;
my $fh00;
my $keepvideo;
my $title;
my %cfg = @_;


&dusk(%cfg);

printf "*番組表取得タスク起動\n";
system("start \"JoyToTheWorld\" /REALTIME /MIN $cfg{korecpath}\\korec.exe -i agqr -margin $cfg{JTTW} -v -log -o $cfg{logpath} -LogFolder $cfg{logpath} -l auto -wait -ntp");

printf "*今から$cfg{JTTW}秒後の番組を調べるよ\n";
printf "*ログファイル出現待ち\n";
LASTLABEL:while(1){
opendir $dh00, "$cfg{logpath}" or die "肉じゃが作るよ : $!\n\n";
while($_ = readdir $dh00){
chomp;
/agqr\.log$/ and last LASTLABEL;
}
closedir $dh00;
sleep 1;
}

printf "*処理待ち\n";
$_ = "$cfg{logpath}\\$_";
while(-s $_ < 1300){
sleep 1;
printf "*-ログ容量 =%5d bytes, now.\n", -s $_;
}

$keepvideo = "";
printf "*ログ検索 \($_\)\n";
open $fh00, "<:utf8", $_;
while($_ = readline $fh00){
chomp;
if(s/^Title:\s*//i){
$title = $_;
}
if(s/^Keep video:\s*//i){
/Yes/i and $keepvideo = "-keepvideo";
last;
}
}
close $fh00;

printf "*$cfg{JTTW}秒後は";
printf "【$title】らしい\n";

&dusk(%cfg);

return $title, $keepvideo;
}


sub kkorec{

my %cfg;
my $fh00;

my $title00;
my $title01;
my $keepvideo00;
my $keepvideo01;

my $tmpflag;
my $tmpline;
my $tmpgo;



printf "================================================\n";
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$year += 1900;
$mon += 1;
printf " ${year}年${mon}月${mday}日 ${hour}時${min}分${sec}秒\n";
printf " の定時巡回です\n";
printf "================================================\n";
printf "\nCFG読出し\n";
open $fh00, "<:utf8", "kkorec.ini" or die "No ini file : $!";
$tmpflag = 0;
while($_ = readline $fh00){
if(/\[(\d+)\]/i){
if("config" eq lc($1)){
$tmpflag = 1;
}else{
$tmpflag = 0;
}
}elsif($tmpflag = 1){
s/;.*$//;
if(/^\s*(.*)\s*=\s*(.*)\\?\s*$/){
$cfg{lc($1)} = $2;
}
}
}
close $fh00;

printf "\n\n*** 番組表チェック 1 ***\n";
($title00, $keepvideo00) = JoyToTheWorld(%cfg, 'JTTW' => "$cfg{margin0}");
printf "\n\n*** 番組表チェック 2 ***\n";
($title01, $keepvideo01) = JoyToTheWorld(%cfg, 'JTTW' => "$cfg{margin1}");

printf "\n";
printf "*番組リスト読み出し\n";
open $fh00, "<:utf8", "kkorec.ini" or die "No ini file : $!";
$tmpgo = 0;
$tmpflag = 0;
while($_ = readline $fh00){
s/;.*$//g;
$_ = &katto($_) or next;
chomp;
if(/\[(\w+)\]/){
if("program" eq lc($1)){
$tmpflag = 1;
}else{
$tmpflag = 0;
}
}elsif($tmpflag == 1){
$_ = &katto($_) or next;
defined($_) or next;
if($title00 =~ /$_/i){
$tmpgo = 1;
printf "【●】$_ ★HIT! $keepvideo00\n";
}else{
printf "【 】$_\n";
}
}
}
close $fh00;

printf "\n";
if($title00 eq $title01){
printf "*今やってる番組は、今から録っても手遅れよ\n";
}else{
if($tmpgo == 1){
printf "*次の番組を";
if($keepvideo00 eq "-keepvideo"){
print "録画";
}else{
print "録音";
$keepvideo00 = "";
}
printf "するよ\n";
printf "*【$title00】\n*KoRecは待機中\n";
system("start \"Tinkle\" /REALTIME /MIN $cfg{korecpath}\\korec.exe -i agqr -margin $cfg{margin0} -v -log -o $cfg{logpath} -LogFolder $cfg{logpath} -l auto -wait -ntp $keepvideo00");
}else{
printf "*今回は見送りする\n";
}
}
print "*これでいいかな?\n";
}
kkorec;



結果も載せておきますね

================================================
2015年5月12日 22時4分55秒
の定時巡回です
================================================

CFG読出し


*** 番組表チェック 1 ***
*ログ消去
*番組表取得タスク起動
*今から1800秒後の番組を調べるよ
*ログファイル出現待ち
*処理待ち
*ログ検索 (..\arc\20150512220458agqr.log)
*1800秒後は【RADIO 4Gamer Tap(仮)】らしい
*KoRec 発見 (+PID = 7024 +WindowTitle = "JoyToTheWorld")
*KILL シグナル送信成功
*ログ消去


*** 番組表チェック 2 ***
*ログ消去
*番組表取得タスク起動
*今から300秒後の番組を調べるよ
*ログファイル出現待ち
*処理待ち
*ログ検索 (..\arc\20150512220505agqr.log)
*300秒後は【RADIO 4Gamer Tap(仮)】らしい
*KoRec 発見 (+PID = 8028 +WindowTitle = "JoyToTheWorld")
*KILL シグナル送信成功
*ログ消去

*番組リスト読み出し
【 】CATCH
【 】FIVE STARS
【 】GENERATION
【 】Lady
【 】アニラブ
【 】内田さんと
【 】東山奈央
【 】井口裕香
【 】阿澄佳奈
【 】竹達彩奈
【 】ごぶごぶ
【 】ありがた系
【 】りめいく!
【 】えじまる
【 】井上麻里奈
【 】早見沙織
【 】初ラジ
【 】久保ユリカ
【 】TRYangle
【 】洲崎西
【 】中村繪里子
【 】花澤香菜
【 】お時間よろしいですか
【 】新番組
【 】津田のラジオ
【 】由佳・ありさ・未奈未
【 】高垣彩陽
【 】今村彩夏
【 】野水いおり
【 】豊崎愛生
【 】三澤紗千香
【 】村川梨衣
【 】長縄まりあ
【 】金田朋子
【 】みなとそふと
【 】高橋美佳子
【 】木戸衣吹
【 】姫イド隊
【 】進化論
【 】ライトノベル
【 】飯田里穂
【 】内田真礼
【 】エジソン
【 】こむちゃ
【 】ハルカス
【 】ラフラフ
【 】あどりぶ
【 】青春学園
【 】セハガール
【 】ラジオどっとあい
【 】セカンドショットアワー
【 】進化論
【 】丹下桜

*今やってる番組は、今から録っても手遅れよ
*これでいいかな?
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。