summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2007-11-09 19:00:06 +0000
committerAndreas Brachold <vdr07@deltab.de>2007-11-09 19:00:06 +0000
commit9c6c30350161efd74faa3c3705096aecb71c0e81 (patch)
tree52ca590d63cbe15f3ab37d649a55d1e2936b2a3e /lib
parentaa99123685e85b53583a491febe269c9dceb8222 (diff)
downloadxxv-9c6c30350161efd74faa3c3705096aecb71c0e81.tar.gz
xxv-9c6c30350161efd74faa3c3705096aecb71c0e81.tar.bz2
* RECORDS: Update file size, if recording running
* RECORDS: Assign EPG-event fail if event with subtitle, but timer without subtitle programmed * HTTPD: Fix warning if output_header undefined (only by waiter)
Diffstat (limited to 'lib')
-rw-r--r--lib/XXV/MODULES/RECORDS.pm86
-rw-r--r--lib/XXV/OUTPUT/Html.pm16
2 files changed, 73 insertions, 29 deletions
diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm
index 9b46053..27c7893 100644
--- a/lib/XXV/MODULES/RECORDS.pm
+++ b/lib/XXV/MODULES/RECORDS.pm
@@ -503,8 +503,10 @@ sub readData {
}
# Update duration at database entry
$db_data->{$h}->{duration} = $duration;
+ $db_data->{$h}->{FileSize} = $obj->_recordingsize($db_data->{$h}->{path}, ($duration * 8 * 25));
$obj->_updateEvent($db_data->{$h});
+ $obj->_updateFileSize($db_data->{$h});
$updatedState++;
}
@@ -518,7 +520,7 @@ sub readData {
delete $db_data->{$h};
} else {
- $waiter->next(++$l,undef, sprintf(gettext("Analyze recording '%s'"),
+ $waiter->next(++$l,undef, sprintf(gettext("Analyze recording '%s'"),
$event->{title}))
if(ref $waiter);
@@ -725,6 +727,16 @@ sub _updateState {
}
# ------------------
+sub _updateFileSize {
+# ------------------
+ my $obj = shift || return error('No object defined!');
+ my $attr = shift || return error ('No data to replace!');
+
+ my $sth = $obj->{dbh}->prepare('UPDATE RECORDS SET FileSize=?, addtime=FROM_UNIXTIME(?) where RecordMD5=?');
+ return $sth->execute($attr->{FileSize},time,$attr->{RecordMD5});
+}
+
+# ------------------
sub analyze {
# ------------------
my $obj = shift || return error('No object defined!');
@@ -847,25 +859,7 @@ sub videoInfo {
$status->{Lifetime} = $lifetime;
$status->{duration} = $obj->_recordinglength($path);
-
-
- # Calc used disc space (MB)
- my $sizeMB;
- my $mb = (1024 * 1024);
- my $size = 0;
- $status->{FileSize} = 0;
- foreach my $f (@files) {
- $size += stat($f)->size;
- if($size > $mb) {
- $sizeMB = int($size / $mb);
- $size -= $sizeMB * $mb;
- $status->{FileSize} += $sizeMB;
- }
- }
- if($size > 0) {
- $sizeMB = int($size / $mb);
- $status->{FileSize} += $sizeMB;
- }
+ $status->{FileSize} = $obj->_recordingCapacity(\@files,($status->{duration} * 8 * 25));
# Schnittmarken ermitteln
my $marks = sprintf("%s/marks.vdr", $path);
@@ -1093,6 +1087,7 @@ qq|SELECT SQL_CACHE * FROM OLDEPG WHERE
UNIX_TIMESTAMP(starttime) >= ?
AND UNIX_TIMESTAMP(starttime)+duration <= ?
AND title = ?
+ AND subtitle IS NULL
AND channel_id = ?|);
$sth->execute($start,$bis,$title,$channel)
or return error sprintf("Couldn't execute query: %s.",$sth->errstr);
@@ -1110,7 +1105,8 @@ qq|SELECT SQL_CACHE * FROM OLDEPG WHERE
qq|SELECT SQL_CACHE * FROM OLDEPG WHERE
UNIX_TIMESTAMP(starttime) >= ?
AND UNIX_TIMESTAMP(starttime)+duration <= ?
- AND title = ?|);
+ AND title = ?
+ AND subtitle IS NULL|);
$sth->execute($start,$bis,$title)
or return error sprintf("Couldn't execute query: %s.",$sth->errstr);
}
@@ -2109,8 +2105,8 @@ sub translate {
# return value as integer
sub _recordinglength {
# ------------------
- my $obj = shift || return 0, error('No object defined!');
- my $path = shift || return 0, error ('Missing path from recording!' );
+ my $obj = shift || return error('No object defined!');
+ my $path = shift || return error ('Missing path from recording!' );
my $f = sprintf("%s/index.vdr", $path);
my $r = sprintf("%s/001.vdr", $path);
@@ -2128,6 +2124,50 @@ sub _recordinglength {
}
# ------------------
+# Size of recording in MB,
+# return value as integer
+sub _recordingsize {
+# ------------------
+ my $obj = shift || return error('No object defined!');
+ my $path = shift || return error('Missing path from recording!');
+ my $size = shift || 0; # Filesize offset e.g. from index.vdr
+
+ my @files = glob("$path/[0-9][0-9][0-9].vdr");
+ return $obj->_recordingCapacity(\@files,$size);
+}
+
+# ------------------
+# Size of recording in MB,
+# return value as integer
+sub _recordingCapacity {
+# ------------------
+ my $obj = shift || return error('No object defined!');
+ my $files = shift || return error('Missing files from recording!');
+ my $size = shift || 0; # Filesize offset e.g. from index.vdr
+
+ # Calc used disc space (MB)
+ my $sizeMB;
+ my $mb = (1024 * 1024);
+ my $FileSize = 0;
+
+ # Incl. length of each xxx.vdr
+ foreach my $f (@{$files}) {
+ if($size > $mb) {
+ $sizeMB = int($size / $mb);
+ $size -= $sizeMB * $mb;
+ $FileSize += $sizeMB;
+ }
+ $size += stat($f)->size;
+ }
+ if($size > 0) {
+ $sizeMB = int($size / $mb);
+ $FileSize += $sizeMB;
+ }
+
+ return $FileSize;
+}
+
+# ------------------
sub converttitle {
# ------------------
my $obj = shift || return error('No object defined!');
diff --git a/lib/XXV/OUTPUT/Html.pm b/lib/XXV/OUTPUT/Html.pm
index a553911..fc7cdba 100644
--- a/lib/XXV/OUTPUT/Html.pm
+++ b/lib/XXV/OUTPUT/Html.pm
@@ -331,18 +331,22 @@ sub printout {
if($obj->{output} && $obj->{handle}) {
my $content;
if($obj->{browser}->{Method} ne 'HEAD') {
- $content = $obj->{output};
-
- $content = Compress::Zlib::memGzip($content)
- if(! $nopack and $obj->{Zlib} and $obj->{browser}->{accept_gzip});
+ if(! $nopack and $obj->{Zlib} and $obj->{browser}->{accept_gzip}) {
+ $content = Compress::Zlib::memGzip($obj->{output});
+ } else {
+ $content = $obj->{output};
+ }
}
- if($content) {
+ if($obj->{output_header} && $content) {
$obj->{handle}->print($obj->{output_header},$content);
$obj->{sendbytes}+= length($obj->{output_header});
$obj->{sendbytes}+= length($content);
- } else {
+ } elsif($obj->{output_header}) {
$obj->{handle}->print($obj->{output_header});
$obj->{sendbytes}+= length($obj->{output_header});
+ } elsif($content) {
+ $obj->{handle}->print($content);
+ $obj->{sendbytes}+= length($content);
}
$obj->{handle}->close();
}