summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2011-10-03 07:38:14 +0000
committerAndreas Brachold <vdr07@deltab.de>2011-10-03 07:38:14 +0000
commitf21b5bf416988471e4f414abc453ba43effc69ad (patch)
tree236b97d0446fb194a91629af66bedc5f939c4c70
parente1b5aaf5670d97b68adcbac585a2f3c79fa6d1eb (diff)
downloadxxv-f21b5bf416988471e4f414abc453ba43effc69ad.tar.gz
xxv-f21b5bf416988471e4f414abc453ba43effc69ad.tar.bz2
Support VDR > 1.7.21
-rw-r--r--lib/XXV/MODULES/RECORDS.pm21
-rw-r--r--lib/XXV/MODULES/SVDRP.pm2
2 files changed, 17 insertions, 6 deletions
diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm
index a763e85..4105ccd 100644
--- a/lib/XXV/MODULES/RECORDS.pm
+++ b/lib/XXV/MODULES/RECORDS.pm
@@ -592,15 +592,22 @@ sub dot1000 {
sub parseData {
# ------------------
my $self = shift || return error('No object defined!');
+ my $vid = shift || return error('No vid defined!');
my $vdata = shift || return error('No data defined!');
my ($event, $idx, $id, $date, $hour, $minute, $new, $duration, $title, $day, $month, $year);
my $data = {};
+ my $version = $self->{svdrp}->vdr_version($vid);
+
foreach my $record (@{$vdata}) {
- if($record =~ /\s+\d+\xB4\s+/) { # VDR is patched with recording length patch
- ($id, $date, $hour, $minute, $new, $duration, $title)
- = $record =~ /^250[\-|\s](\d+)\s+([\d|\.]+)\s+(\d+)\:(\d+)(.?)\s*(\d*).*?\s+(.+)/si;
- } else { # Vanilla VDR
+ if($version >= 10721) {
+ # 250-1 24.04.11 22:12 2:06* Discovery~Die Rose von Kerrymore Spielfilm D/2000
+ ($id, $date, $hour, $minute, $duration, $new, $title)
+ = $record =~ /^250[\-|\s](\d+)\s+([\d|\.]+)\s+(\d+)\:(\d+)\s+([\d+|\:]+)(.?).*?\s+(.+)/si;
+
+ my ($dh,$dm) = $duration =~ /^(\d+)\:(\d+)$/;
+ $duration = ($dh * 3600) + ($dm * 60);
+ } else { # older VDR < 10721
# 250-1 01.11 15:14* Discovery~Die Rose von Kerrymore Spielfilm D/2000
($id, $date, $hour, $minute, $new, $title)
= $record =~ /^250[\-|\s](\d+)\s+([\d|\.]+)\s+(\d+)\:(\d+)(.?).*?\s+(.+)/si;
@@ -636,6 +643,10 @@ sub parseData {
$event->{starttime} = timelocal(0,$minute,$hour,$day,$month-1, $year);
$event->{title} = $title;
+ if($duration) {
+ $event->{duration} = $duration;
+ }
+
$idx = sprintf("%s~%s",$title,$event->{starttime});
%{$data->{$idx}} = %{$event};
}
@@ -816,7 +827,7 @@ sub _readData {
my $l = 0;
- my $vdrData = $self->parseData($vdata);
+ my $vdrData = $self->parseData($vid, $vdata);
# Adjust waiter max value now.
$waiter->max(scalar keys %$vdrData)
diff --git a/lib/XXV/MODULES/SVDRP.pm b/lib/XXV/MODULES/SVDRP.pm
index b1e0077..5637b56 100644
--- a/lib/XXV/MODULES/SVDRP.pm
+++ b/lib/XXV/MODULES/SVDRP.pm
@@ -506,7 +506,7 @@ sub vdr_version {
&& $self->{Cache}->{$vdrid}->{version}) {
return $self->{Cache}->{$vdrid}->{version};
}
- return 'no';
+ return 'unknown';
}
sub enum_onlinehosts {