OSDN Git Service

add version check
authorlonginus <longinus@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 3 Apr 2010 16:37:12 +0000 (16:37 +0000)
committerlonginus <longinus@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 3 Apr 2010 16:37:12 +0000 (16:37 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@551 4e526526-5e11-4fc0-8910-f8fd03428081

rectool/trunk/rectool.pl

index 56fc562..801ac52 100755 (executable)
@@ -1,10 +1,12 @@
 #!/usr/bin/perl
 # -d:SmallProf
+#use Perl6::Slurp;
 #use XML::Simple;
 #use CGI;
 #use CGI::Lite;
 #use Date::Manip;
 #Date_Init("TZ=JST","ConvTZ=JST");
+#use SVG;
 #use KCatch;
 use CGI::Carp qw( fatalsToBrowser );
 use warnings;
@@ -23,6 +25,17 @@ use Perl6::Slurp;
 use Sort::Naturally;
 #require SVG Time::Simple XML::Atom Encode Text::Ngram List::Compare List::Util
 #use utf8;
+
+
+################ バージョン定義 ################
+
+
+my $rectool_version = 93;
+
+
+################ 初期化ここから ################
+
+
 %DB::packages = ( 'main' => 1 ); 
 my $tz = DateTime::TimeZone->new( name => 'local' );
 my $hires = Time::HiRes::time();
@@ -47,11 +60,12 @@ if ( $sql eq 'MySQL' ) {
        $dbh->do( 'SET NAMES utf8' );
 }
 
+my $rec10_version = eval {
+       $dbh->selectrow_array( "SELECT version FROM in_status " );
+};
 
 my $HTML;
 
-#print "Content-Type: text/html\n\n";
-
 $HTTP_HEADER = "Content-Type: text/html\n\n";
 $HTML .= <<EOM;
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
@@ -98,8 +112,24 @@ else {
 if ( !$auth ) {
        my ( $base64 ) = $ENV{'REMOTE_USER'} =~ /Basic (.*)/;
        $HTTP_HEADER = qq {Status: 401 Authorization Required\nWWW-Authenticate: Basic realm="Protected Rec10 $ENV{'HTTP_AUTHORIZATION'}"\n} . $HTTP_HEADER;
-       $HTML .= qq {<div>\n $tmp};
-       $HTML =~ s/%HTML_TITLE_OPT%/ - $ENV{'HTTP_AUTHORIZATION'}/;
+       goto end;
+}
+
+if ( $rec10_version != $rectool_version ) {
+       $HTML .= qq {<div style="font-size: 200%; font-weight: bold; color: red">\n};
+
+       if ( $rec10_version > $rectool_version ) {
+               $HTML .= qq {Rec10本体のバージョンが新しいため、実行できません。<br>\n};
+               $HTML .= qq {rectoolのバージョンアップを行ってください。<br>\n};
+       }
+
+       if ( $rec10_version < $rectool_version ) {
+               $HTML .= qq {Rec10本体のバージョンが古いため、実行できません。<br>\n};
+               $HTML .= qq {Rec10のバージョンアップを行ってください。<br>\n};
+       }
+
+       $HTML .= qq {Rec10のバージョンは$rec10_version、rectoolのバージョンは$rectool_versionです。<br>\n};
+       $HTML .= qq {<a href="http://sourceforge.jp/projects/rec10/">公式ページ</a>\n};
        goto end;
 }
 
@@ -108,6 +138,9 @@ $mode = $q->param( 'mode' );
 $mode_sub = $q->param( 'mode_sub' );
 
 
+################ 定数宣言 ################
+
+
 tie %type, 'Tie::IxHash';
 %type = (
        'search_everyday'          => '隔日検索',
@@ -175,6 +208,10 @@ $type_user_made = "( 'search_everyday', 'search_today', 'reserve_flexible', 'res
        'cinema'      => '映画', 
 );
 
+
+################ 初期化ここまで ################
+
+
 if ( $mode eq 'schedule' ) {
 
        $HTML =~ s/%HTML_TITLE_OPT%/ - Schedule Viewer/;
@@ -296,7 +333,7 @@ EOM
                $HTML .= qq {</tr>\n};
        }
        $HTML .= qq {</table>\n};
-       $HTML .= qq {<input type="submit" name="edit" value="編集(要JS)">\n};
+#      $HTML .= qq {<input type="submit" name="edit" value="編集(要JS)">\n};
        $HTML .= qq {<input type="submit" name="delete" value="削除">\n</div>\n</form>\n};
        goto end;
 }
@@ -984,7 +1021,7 @@ if ( $mode eq 'list' ) {
                local $path = shift;
                local %list = ();
                my @exp = ( 'log', 'ts.b25', 'ts.tsmix', 'ts', 'ts.log.mbtree', 'ts.log', 
-                       'sa.avi', 'sa.avi.log', 'aac', 'srt', 'm2v', 'wav', 'avi', 'mkv' );
+                       'sa.avi', 'sa.avi.log', 'aac', 'srt', 'm2v', 'wav', 'avi', '264', 'mp4', 'mkv' );
                for ( 0..$#exp ) {
                        $exp{$exp[$_]} = $_;
                }
@@ -1236,7 +1273,7 @@ if ( $mode eq 'proc' ) {
                                WHERE ( type LIKE 'convert_avi%' OR type = 'convert_mkv' ) 
                                AND title = '$line->[2]' "
                        ) ) {
-                               $url = qq {rectool.pl?mode=change&amp;mode_sub=proc&amp;type=$line->[0]&amp;chtxt=$line->[1]&amp;title=$line->[3]};
+                               $url = qq {rectool.pl?mode=confirm&amp;mode_sub=proc&amp;type=$line->[0]&amp;chtxt=$line->[1]&amp;title=$line->[3]};
                        }
                }
                if ( $url ) { 
@@ -1369,17 +1406,25 @@ if ( $mode eq 'recognize' ) {
        if ( $text ) {
                my ( $year, $month, $day );
                my ( $hour, $minute );
+               my $next_day = 0;
                foreach ( split /\n/, $text ) {
-                       my @date = /(\d{4}).(\d{2}).(\d{2})/;
-                       my @time = /(\d{1,2})[::](\d{2})/;
+                       my @date = /(\d{4}).(\d{1,2}).(\d{1,2})/;
+                       my @time = /(\d{1,2})[::](\d{1,2})/;
                        s/(\d{4}).(\d{2}).(\d{2})//;
                        s/(\d{1,2})[::](\d{2})//;
                        s/\(.*\)//;
+                       if ( !@date ) {
+                               $date[0] = Time::Piece->localtime->year;
+                               ( $date[1], $date[2] ) = /(\d{1,2})月(\d{1,2})日/;
+                               s/(\d{1,2})月(\d{1,2})日//;
+                       }
                        next if (!( @date || @time ));
                        ( $year, $month, $day ) = @date if ( $date[0] && $date[1] && $date[2] );
                        ( $hour, $minute )      = @time if ( defined $time[0] && defined $time[1] );
+                       $next_day = 1 if ( $_ =~ /深夜/ );
                        if ( $year && $month && $day && defined $hour && defined $minute ) {
                                my $tp = Time::Piece->strptime( "$year-$month-$day $hour:$minute", '%Y-%m-%d %H:%M' );
+                               $tp += ONE_DAY if ( $next_day );
                                my $start = $tp->strftime( '%Y%m%d%H%M%S' );
                                my $stop  = ( $tp + ONE_MINUTE * 30 )->strftime( '%Y%m%d%H%M%S' );
                                $title = $_ if ( !$title );
@@ -1427,11 +1472,11 @@ if ( $mode eq 'expert' ) {
        $HTML .= qq {<input type="submit" value="保存">\n</div>\n</form>\n};
 
 
+       $HTML .= qq {<hr>\n番組表のカテゴリ一覧と内蔵のカテゴリ一覧の合致を確認中...\n};
        $ary_ref = $dbh->selectcol_arrayref(
                "SELECT DISTINCT category FROM epg_timeline"
        );
        my @category = sort values %category;
-       $HTML .= qq {<hr>\n番組表のカテゴリ一覧と内蔵の一覧の合致を確認中...\n};
        if ( List::Compare->new( $ary_ref, \@category )->get_symdiff ) {
                $HTML .= qq {一致しません<br>\n};
                $HTML .= qq {番組表:@{$ary_ref}<br>\n内蔵:@category<br>\n};
@@ -1440,12 +1485,13 @@ if ( $mode eq 'expert' ) {
                $HTML .= qq {一致しました<br>\n};
        }
 
+
        my @ary = $dbh->selectrow_array( "SELECT terec, bscsrec, b252ts, ts2avi FROM in_status" );
        $HTML .= qq {<hr>\n地上波録画数:$ary[0]\n衛星波録画数:$ary[1]\n解読数:$ary[2]\n縁故数:$ary[3]\n<br>\n};
 
+
+       $HTML .= qq {<hr>\n番組表の欠落<br>\n};
        $ary_ref = $dbh->selectall_arrayref( "SELECT chname, chtxt FROM epg_ch" );
-       my $prev;
-       $HTML .= "<hr>\n番組表の欠落<br>\n";
        foreach my $line ( @{$ary_ref} ) {
                my $ary_ref = $dbh->selectall_arrayref( 
                        "SELECT start, stop, title FROM epg_timeline WHERE channel = '$line->[1]' ORDER BY start" 
@@ -1577,6 +1623,7 @@ if ( $mode eq 'test' ) {
        $HTML =~ s|%REFRESH%|<meta http-equiv="refresh" content="300">|;
        $HTML .= qq {<div>\n};
 
+       require Data::Dumper;
        $tmp = Perl6::Slurp::slurp( 'config.ini' );
        $tmp =~ s/\n/<br>\n/gs;
        $HTML .= $tmp;
@@ -1630,9 +1677,10 @@ sub draw_menu {
        $HTML_HEADER .= qq {<a href="rectool.pl?mode=expert">玄人仕様</a>\n};
        $HTML_HEADER .= qq {<a href="rectool.pl?mode=proc">復旧支援</a>\n};
        $HTML_HEADER .= qq {<a href="rectool.pl?mode=jbk">地引</a>\n};
+       $HTML_HEADER .= qq {<a href="rectool.pl?mode=log">録画履歴</a>\n};
        $HTML_HEADER .= qq {<a href="rectool.pl?mode=recognize">文字認識</a>\n};
-       $HTML_HEADER .= qq {<a href="../rec10web/rec10web.py">新規予約</a>\n};
-       $HTML_HEADER .= qq {<a href="rectool.pl?mode=edit">新規予約2</a>\n};
+       $HTML_HEADER .= qq {<a href="rectool.pl?mode=edit">新規予約</a>\n};
+#      $HTML_HEADER .= qq {<a href="../rec10web/rec10web.py">新規予約</a>\n};
        $HTML_HEADER .= qq {</span>\n};
        $HTML_HEADER .= qq {<hr style="clear: both; background-color: grey; height: 4px">\n};
        $HTML_HEADER .= qq {</div>\n};
@@ -1721,14 +1769,16 @@ sub draw_form_opt {
                $selected{F} = 'selected';
        }
        elsif ( $chtxt  =~ /movieplus|nihoneiga/ ) {
-               $selected{G} = 'selected';
+               $selected{H} = 'selected';
        }
        elsif ( $chtxt =~ /bs-nhk/ || $bctype =~ /cs/ ) {
-               $selected{L} = 'selected';
+               $selected{W} = 'selected';
        }
        elsif ( $bctype =~ /bs|te/ ) {
-               $selected{G} = 'selected';
+               $selected{H} = 'selected';
        }
+       $selected{g} = 'selected';
+       $selected{s} = 'selected';
        $checked{a} = $chtxt =~ /animax|atx|disney|kids/ || $category =~ /アニメ/ ? 'checked' : '';
        $checked{l} = '';
        $checked{d} = $title =~ /\Q[二]\E|[二]|\Q(二)\E|(二)/ ? 'checked' : '';
@@ -1736,6 +1786,8 @@ sub draw_form_opt {
        $checked{2} = 'checked';
 
        if ( $opt ) {
+               undef %checked;
+               undef %selected;
                my @opt = split //, $opt;
                foreach my $opt ( @opt ) {
                        $selected{$opt} = 'selected' if ( $opt =~ /S|L|G|H|F/ );
@@ -1744,17 +1796,37 @@ sub draw_form_opt {
        }
 
        $HTML .= qq {<select name="opt">\n};
-       $HTML .= qq {<option value="S" $selected{S}>S 720x480 1250kbps</option>\n};
-       $HTML .= qq {<option value="L" $selected{L}>L ***x*** 1250kbps</option>\n};
-       $HTML .= qq {<option value="G" $selected{G}>G 1280x720 2500kbps</option>\n};
-       $HTML .= qq {<option value="H" $selected{H}>H 1280x720 3750kbps</option>\n};
-       $HTML .= qq {<option value="F" $selected{F}>F 1920x1080 5000kbps</option>\n};
+       $HTML .= qq {<option value="S" $selected{S}>S 720x480</option>\n};
+       $HTML .= qq {<option value="W" $selected{W}>W 854x480</option>\n};
+       $HTML .= qq {<option value="H" $selected{H}>H 1280x720</option>\n};
+       $HTML .= qq {<option value="F" $selected{F}>F 1920x1080</option>\n};
+       $HTML .= qq {</select>\n};
+
+       $HTML .= qq {<select name="opt">\n};
+       $HTML .= qq {<option value="u" $selected{u}>最低</option>\n};
+       $HTML .= qq {<option value="i" $selected{i}>低</option>\n};
+       $HTML .= qq {<option value=""  $selected{g}>画質</option>\n};
+       $HTML .= qq {<option value="o" $selected{o}>高</option>\n};
+       $HTML .= qq {<option value="p" $selected{p}>最高</option>\n};
        $HTML .= qq {</select>\n};
-       $HTML .= qq {<input type="checkbox" name="opt" value="a" $checked{a}>アニメ\n};
-       $HTML .= qq {<input type="checkbox" name="opt" value="l" $checked{l}>速度優先\n};
-       $HTML .= qq {<input type="checkbox" name="opt" value="h" $checked{h}>画質優先\n};
+
+       $HTML .= qq {<select name="opt">\n};
+       $HTML .= qq {<option value="q" $selected{q}>最低</option>\n};
+       $HTML .= qq {<option value="w" $selected{w}>低</option>\n};
+       $HTML .= qq {<option value=""  $selected{s}>圧縮率</option>\n};
+       $HTML .= qq {<option value="e" $selected{e}>高</option>\n};
+       $HTML .= qq {<option value="r" $selected{r}>最高</option>\n};
+       $HTML .= qq {</select>\n};
+
+       $HTML .= qq {<select name="opt">\n};
+       $HTML .= qq {<option value=""  $selected{s}>コンテナ</option>\n};
+       $HTML .= qq {<option value="m" $selected{e}>MKV</option>\n};
+       $HTML .= qq {<option value="4" $selected{r}>MP4</option>\n};
+       $HTML .= qq {</select>\n};
+
+       $HTML .= qq {<input type="checkbox" name="opt" value="a" $checked{a}>24fps(主にアニメ)\n};
        $HTML .= qq {<input type="checkbox" name="opt" value="d" $checked{d}>二ヶ国語放送\n};
-       $HTML .= qq {<input type="checkbox" name="opt" value="2" $checked{2}>2passモード\n};
+#      $HTML .= qq {<input type="checkbox" name="opt" value="2" $checked{2}>2passモード\n};
        $HTML .= qq {<input type="checkbox" name="opt" value="5" $checked{5}>5.1ch放送\n};
        $HTML .= qq {<br>\n};
        $HTML .= qq {<select name="opt">\n};
@@ -2000,4 +2072,3 @@ sub sqlgetsuggested {
 
        return %hash;
 }
-