From: longinus Date: Sat, 3 Apr 2010 16:37:12 +0000 (+0000) Subject: add version check X-Git-Url: http://git.osdn.net/view?p=rec10%2Frec10-git.git;a=commitdiff_plain;h=dd91ca7af007e6cec713319f517aff1cf54c228c add version check git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@551 4e526526-5e11-4fc0-8910-f8fd03428081 --- diff --git a/rectool/trunk/rectool.pl b/rectool/trunk/rectool.pl index 56fc562..801ac52 100755 --- a/rectool/trunk/rectool.pl +++ b/rectool/trunk/rectool.pl @@ -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 .= < @@ -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 {
\n $tmp}; - $HTML =~ s/%HTML_TITLE_OPT%/ - $ENV{'HTTP_AUTHORIZATION'}/; + goto end; +} + +if ( $rec10_version != $rectool_version ) { + $HTML .= qq {
\n}; + + if ( $rec10_version > $rectool_version ) { + $HTML .= qq {Rec10本体のバージョンが新しいため、実行できません。
\n}; + $HTML .= qq {rectoolのバージョンアップを行ってください。
\n}; + } + + if ( $rec10_version < $rectool_version ) { + $HTML .= qq {Rec10本体のバージョンが古いため、実行できません。
\n}; + $HTML .= qq {Rec10のバージョンアップを行ってください。
\n}; + } + + $HTML .= qq {Rec10のバージョンは$rec10_version、rectoolのバージョンは$rectool_versionです。
\n}; + $HTML .= qq {公式ページ\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 {\n}; } $HTML .= qq {\n}; - $HTML .= qq {\n}; +# $HTML .= qq {\n}; $HTML .= qq {\n
\n\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&mode_sub=proc&type=$line->[0]&chtxt=$line->[1]&title=$line->[3]}; + $url = qq {rectool.pl?mode=confirm&mode_sub=proc&type=$line->[0]&chtxt=$line->[1]&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 {\n
\n\n}; + $HTML .= qq {
\n番組表のカテゴリ一覧と内蔵のカテゴリ一覧の合致を確認中...\n}; $ary_ref = $dbh->selectcol_arrayref( "SELECT DISTINCT category FROM epg_timeline" ); my @category = sort values %category; - $HTML .= qq {
\n番組表のカテゴリ一覧と内蔵の一覧の合致を確認中...\n}; if ( List::Compare->new( $ary_ref, \@category )->get_symdiff ) { $HTML .= qq {一致しません
\n}; $HTML .= qq {番組表:@{$ary_ref}
\n内蔵:@category
\n}; @@ -1440,12 +1485,13 @@ if ( $mode eq 'expert' ) { $HTML .= qq {一致しました
\n}; } + my @ary = $dbh->selectrow_array( "SELECT terec, bscsrec, b252ts, ts2avi FROM in_status" ); $HTML .= qq {
\n地上波録画数:$ary[0]\n衛星波録画数:$ary[1]\n解読数:$ary[2]\n縁故数:$ary[3]\n
\n}; + + $HTML .= qq {
\n番組表の欠落
\n}; $ary_ref = $dbh->selectall_arrayref( "SELECT chname, chtxt FROM epg_ch" ); - my $prev; - $HTML .= "
\n番組表の欠落
\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%||; $HTML .= qq {
\n}; + require Data::Dumper; $tmp = Perl6::Slurp::slurp( 'config.ini' ); $tmp =~ s/\n/
\n/gs; $HTML .= $tmp; @@ -1630,9 +1677,10 @@ sub draw_menu { $HTML_HEADER .= qq {玄人仕様\n}; $HTML_HEADER .= qq {復旧支援\n}; $HTML_HEADER .= qq {地引\n}; + $HTML_HEADER .= qq {録画履歴\n}; $HTML_HEADER .= qq {文字認識\n}; - $HTML_HEADER .= qq {新規予約\n}; - $HTML_HEADER .= qq {新規予約2\n}; + $HTML_HEADER .= qq {新規予約\n}; +# $HTML_HEADER .= qq {新規予約\n}; $HTML_HEADER .= qq {\n}; $HTML_HEADER .= qq {
\n}; $HTML_HEADER .= qq {
\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 {\n}; + + $HTML .= qq {\n}; - $HTML .= qq {アニメ\n}; - $HTML .= qq {速度優先\n}; - $HTML .= qq {画質優先\n}; + + $HTML .= qq {\n}; + + $HTML .= qq {\n}; + + $HTML .= qq {24fps(主にアニメ)\n}; $HTML .= qq {二ヶ国語放送\n}; - $HTML .= qq {2passモード\n}; +# $HTML .= qq {2passモード\n}; $HTML .= qq {5.1ch放送\n}; $HTML .= qq {
\n}; $HTML .= qq {