« | ★★★★ ストライクウィッチーズ2 #5 「私のロマーニャ」 »

Linux用デジタル放送チャンネルスキャンスクリプト

Posted on 2010/08/09 (月) 13:25
Filed Under foltia | | TrackBack | このエントリをはてなブックマークに追加 Share on Tumblr

アニメ自動録画システム foltia」に組み込もうとして、チャンネルスキャンスクリプトを作った。
けど、便利そうなんで、foltiaに組み込む前にスタンドアロンで動くものをメモ代わりにここに貼ろうかと。

実行結果はこんな感じ。



[中略]


[以下略]

手元の環境では3分かからずに地デジ/BS/CSのスキャンが完了した。
テストはrecpt1でしか試してないけど類似のコマンドならそれなりに行ける気がする。
他にepgdumpが必要。

お持ち帰りはこちら。
スタンドアロンチャンネルスキャンスクリプト channelscan.pl

PERL:
  1. #!/usr/bin/perl
  2. #
  3. #
  4. # Anime recording system foltia
  5. # http://www.dcc-jpl.com/soft/foltia/
  6. #
  7. #
  8. # チャンネルスキャン
  9. # 初期インストール時に受信可能局をスキャンします
  10. #
  11. # DCC-JPL Japan/foltia project
  12. #
  13.  
  14. my $recpt1path = "/home/foltia/perl/tool/recpt1"; #ほかのキャプチャデバイス作ってる人はココを変更
  15. my $epgdumppath = "/home/foltia/perl/tool"; #epgdumpのあるディレクトリ
  16. my $recfolderpath = "/tmp";#tsを出力するディレクトリ
  17. my $xmloutpath = "/tmp";
  18. my $channel = 13 ; #地デジチャンネルは13-62
  19. my $oserr = "";
  20. my $line = "";
  21.  
  22. print "Initialize\n";
  23. print "Tool path are\n";
  24. print "REC:$recpt1path\n";
  25. print "EPGDUMP:$epgdumppath/epgdump\n";
  26. print "TS OUT:$recfolderpath/\n";
  27. print "XML OUT:$xmloutpath/\n";
  28.  
  29. #ツールがあるか確認
  30. unless (-e "$recpt1path"){
  31.     print "Please install $recpt1path.\n";
  32.     exit 1;
  33. }
  34. unless (-e "$epgdumppath/epgdump"){
  35.     print "Please install $epgdumppath/epgdump.\n";
  36.     exit 1;
  37. }
  38. unless (-e "$recfolderpath"){
  39.     print "Please make directory $recfolderpath.\n";
  40.     exit 1;
  41. }
  42. unless (-e "$xmloutpath"){
  43.     print "Please make directory $xmloutpath.\n";
  44.     exit 1;
  45. }
  46.  
  47.  
  48. #地デジスキャンループ
  49. for ($channel = 13; $channel <= 62 ; $channel++){
  50.     print "\nChannel: $channel\n";
  51.     $oserr = `$recpt1path $channel 4 $recfolderpath/__$channel.m2t`;
  52.     $oserr = `$epgdumppath/epgdump $channel $recfolderpath/__$channel.m2t $xmloutpath/__$channel-epg.xml`;
  53.  
  54.     if (-s "$xmloutpath/__$channel-epg.xml" ){
  55.         print "\t\t This channel can view :  $channel \n";
  56.         open(XML, "<$xmloutpath/__$channel-epg.xml");
  57.         while ( $line = <XML>) {
  58.             #Jcode::convert(\$line,'euc','utf8');
  59.             if($line =~ /display-name/){
  60.                 $line =~ s/<.*?>//g;
  61.                 #Jcode::convert(\$line,'utf8','euc');
  62.                 print "\t\t $channel $line\n";
  63.             }#end if
  64.         }#end while
  65.         close(XML);
  66.     }else{
  67.         print "\t\t Not Available :  $channel \n";
  68.     }#end if
  69. }#end for
  70.  
  71.  
  72. #BSデジタル
  73. $channel = 211;
  74.     print "\nBS Digital Scan\n";
  75.     $oserr = `$recpt1path $channel 4 $recfolderpath/__$channel.m2t`;
  76.     $oserr = `$epgdumppath/epgdump /BS $recfolderpath/__$channel.m2t $xmloutpath/__$channel-epg.xml`;
  77.  
  78.     if (-s "$xmloutpath/__$channel-epg.xml" ){
  79.         print "\t\t BS Digital can view :   \n";
  80.         open(XML, "<$xmloutpath/__$channel-epg.xml");
  81.         while ( $line = <XML>) {
  82.             #Jcode::convert(\$line,'euc','utf8');
  83.             if($line =~ /display-name/){
  84.                 $line =~ s/<.*?>//g;
  85.                 #Jcode::convert(\$line,'utf8','euc');
  86.                 print "\t\t $line\n";
  87.             }#end if
  88.         }#end while
  89.         close(XML);
  90.     }else{
  91.         print "\t\t Not Available :  BS Digital \n";
  92.     }#end if
  93.  
  94. #CSデジタル
  95. $channel = "CS8";
  96.     print "\nCS Digital Scan\n";
  97.     $oserr = `$recpt1path $channel 4 $recfolderpath/__$channel.m2t`;
  98.     $oserr = `$epgdumppath/epgdump /CS $recfolderpath/__$channel.m2t $xmloutpath/__$channel-epg.xml`;
  99.  
  100.     if (-s "$xmloutpath/__$channel-epg.xml" ){
  101.         print "\t\t CS Digital can view :   \n";
  102.         open(XML, "<$xmloutpath/__$channel-epg.xml");
  103.         while ( $line = <XML>) {
  104.             #Jcode::convert(\$line,'euc','utf8');
  105.             if($line =~ /display-name/){
  106.                 $line =~ s/<.*?>//g;
  107.                 #Jcode::convert(\$line,'utf8','euc');
  108.                 print "\t\t $line\n";
  109.             }#end if
  110.         }#end while
  111.         close(XML);
  112.     }else{
  113.         print "\t\t Not Available :  CS Digital \n";
  114.     }#end if

地デジチャンネルを調べるにはここが便利:「地上デジタル放送 チャンネル一覧表:マスプロ電工

Comments

Leave a Comment

TrackBack URI :http://www.dcc-jpl.com/diary/2010/08/09/foltia-channelscan/trackback/

Name

Email

ウェブサイト

コメント

1 Comment so far
  1. 家鯖構築日記 | 家鯖構築日記 2014/11/03 (月) 13:28

Recently


Categories


Archives


Wish list

宗子さんのほしい物リスト2015/5-