#!/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;
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();
$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">
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;
}
$mode_sub = $q->param( 'mode_sub' );
+################ 定数宣言 ################
+
+
tie %type, 'Tie::IxHash';
%type = (
'search_everyday' => '隔日検索',
'cinema' => '映画',
);
+
+################ 初期化ここまで ################
+
+
if ( $mode eq 'schedule' ) {
$HTML =~ s/%HTML_TITLE_OPT%/ - Schedule Viewer/;
$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;
}
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[$_]} = $_;
}
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 ) {
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 );
$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};
$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"
$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;
$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};
$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' : '';
$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/ );
}
$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};
return %hash;
}
-