diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2011-10-03 07:38:14 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2011-10-03 07:38:14 +0000 |
| commit | f21b5bf416988471e4f414abc453ba43effc69ad (patch) | |
| tree | 236b97d0446fb194a91629af66bedc5f939c4c70 | |
| parent | e1b5aaf5670d97b68adcbac585a2f3c79fa6d1eb (diff) | |
| download | xxv-f21b5bf416988471e4f414abc453ba43effc69ad.tar.gz xxv-f21b5bf416988471e4f414abc453ba43effc69ad.tar.bz2 | |
Support VDR > 1.7.21
| -rw-r--r-- | lib/XXV/MODULES/RECORDS.pm | 21 | ||||
| -rw-r--r-- | lib/XXV/MODULES/SVDRP.pm | 2 |
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 { |
