diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2007-11-09 19:00:06 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2007-11-09 19:00:06 +0000 |
| commit | 9c6c30350161efd74faa3c3705096aecb71c0e81 (patch) | |
| tree | 52ca590d63cbe15f3ab37d649a55d1e2936b2a3e /lib | |
| parent | aa99123685e85b53583a491febe269c9dceb8222 (diff) | |
| download | xxv-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.pm | 86 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/Html.pm | 16 |
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(); } |
