summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2011-02-19 17:03:49 +0000
committerAndreas Brachold <vdr07@deltab.de>2011-02-19 17:03:49 +0000
commitcfe8b1035d1dd5cda6c9ef8e0ea8662be418d542 (patch)
treee24a3d2147a67a7bcc71f85666e99ece86454155 /lib
parent8ae18f266387c843a0d27b461b2f1265cc7c50da (diff)
downloadxxv-cfe8b1035d1dd5cda6c9ef8e0ea8662be418d542.tar.gz
xxv-cfe8b1035d1dd5cda6c9ef8e0ea8662be418d542.tar.bz2
RECORDS: Warn if info file missed (fix database insert)
RECORDS: Generate some more preview images
Diffstat (limited to 'lib')
-rw-r--r--lib/XXV/MODULES/RECORDS.pm22
1 files changed, 15 insertions, 7 deletions
diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm
index ca6b8f4..c9e0a65 100644
--- a/lib/XXV/MODULES/RECORDS.pm
+++ b/lib/XXV/MODULES/RECORDS.pm
@@ -298,7 +298,7 @@ sub _init {
return 0;
}
- my $version = 33; # Must be increment if rows of table changed
+ my $version = 34; # Must be increment if rows of table changed
# this tables hasen't handmade user data,
# therefore old table could dropped if updated rows
if(!tableUpdated($self->{dbh},'RECORDS',$version,1)) {
@@ -313,8 +313,8 @@ sub _init {
hash varchar(32) NOT NULL,
path text NOT NULL,
track text NOT NULL,
- priority tinyint NOT NULL,
- lifetime tinyint NOT NULL,
+ priority tinyint default '1',
+ lifetime tinyint default '99',
status set('new', 'cutted'),
size int unsigned default '0',
cutlength int unsigned default '0',
@@ -936,7 +936,7 @@ sub _readData {
last;
}
- my $info = $self->analyze($vid,$files,$event);
+ my $info = $self->analyze($vid,$files,$event,$forceUpdate);
if(ref $info eq 'HASH') {
$self->{Capacity}->{$vid}->{duration} += $info->{duration};
$self->{Capacity}->{$vid}->{size} += $info->{size};
@@ -1222,6 +1222,7 @@ sub analyze {
my $vid = shift; # ID of Video disk recorder
my $files = shift; # Hash with md5 and path to recording
my $vdrdata = shift;
+ my $forceUpdate = shift; # Read manual or Once at day, make full scan
lg sprintf('Analyze recording "%s"', $vdrdata->{title} );
@@ -1261,7 +1262,7 @@ sub analyze {
}
# Make Preview
- my $job = $self->videoPreview( $info );
+ my $job = $self->videoPreview( $info, 0, $forceUpdate );
push(@{$self->{JOBS}}, $job) if($job);
my $ret = {
@@ -1495,6 +1496,8 @@ sub readinfo {
}
}
}
+ } else {
+ error sprintf("Can't read file %s", $file);
}
return $info;
}
@@ -1591,6 +1594,7 @@ sub videoPreview {
my $self = shift || return error('No object defined!');
my $info = shift || return error ('No information defined!');
my $rebuild = shift || 0;
+ my $forceUpdate = shift || 0; # Read manual or Once at day, make full scan
$info->{preview} = [];
@@ -1618,14 +1622,18 @@ sub videoPreview {
# Stop here if enough files present
my @images = glob("$outdir/[0-9]*.jpg");
if(scalar @images >= $count && !$rebuild) {
+ my $loop = 0;
foreach(@images) {
my $frame = basename($_);
$frame =~ s/\.jpg$//ig;
push(@{$info->{preview}},$frame);
- last if(scalar @{$info->{preview}} >= $self->{previewcount});
+ shift(@{$info->{preview}}) if(scalar @{$info->{preview}} >= $self->{previewcount});
+ last if($loop++ > $self->{previewcount});
}
return 0;
}
+ # add some reserved images (if recordings frames has incorrect data )
+ $count += (($count / 2)+1);
my $startseconds = ($self->{timers}->{prevminutes} * 60) * 2;
my $endseconds = ($self->{timers}->{afterminutes} * 60) * 2;
@@ -1645,7 +1653,7 @@ sub videoPreview {
# or stop if log's present
my $log = sprintf('%s/preview.log', $outdir);
- if(-e $log) {
+ if(-e $log && !$forceUpdate) {
return 0;
}