diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2008-12-21 13:41:47 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2008-12-21 13:41:47 +0000 |
| commit | f08caeba615e92e258d8284516778ccf2f06f0d9 (patch) | |
| tree | 8dba929419b79c30dc310c3f35c171b24bca67bb | |
| parent | 7885d3624e79e2d5c5b1eddb7cd20af1b28113d7 (diff) | |
| download | xxv-f08caeba615e92e258d8284516778ccf2f06f0d9.tar.gz xxv-f08caeba615e92e258d8284516778ccf2f06f0d9.tar.bz2 | |
SHARE: Fix hang if'nt couldn't connect to popularity web service
RECORDS: Store cutted state
RECORDS: add options to define default order for series
RECORDS: ignore mark for cutted recording by order
| -rw-r--r-- | lib/XXV/MODULES/KEYWORDS.pm | 2 | ||||
| -rw-r--r-- | lib/XXV/MODULES/RECORDS.pm | 330 | ||||
| -rw-r--r-- | lib/XXV/MODULES/SHARE.pm | 7 | ||||
| -rw-r--r-- | locale/de.po | 315 | ||||
| -rw-r--r-- | locale/de/LC_MESSAGES/xxv.mo | bin | 81332 -> 81500 bytes |
5 files changed, 356 insertions, 298 deletions
diff --git a/lib/XXV/MODULES/KEYWORDS.pm b/lib/XXV/MODULES/KEYWORDS.pm index fb51765..71107d3 100644 --- a/lib/XXV/MODULES/KEYWORDS.pm +++ b/lib/XXV/MODULES/KEYWORDS.pm @@ -314,7 +314,7 @@ sub recording_keywords { } my $query = buildsearch("k.keyword",$text); - return $rmod->_search($console,$query->{query}.' ) AND ( r.RecordMD5 = k.hash ',$query->{term},$params,', KEYWORDS as k'); + return $rmod->_search($console,$query->{query}.' ) AND ( r.hash = k.hash ',$query->{term},$params,', KEYWORDS as k'); } # ------------------ diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm index 05b3c5c..e436f65 100644 --- a/lib/XXV/MODULES/RECORDS.pm +++ b/lib/XXV/MODULES/RECORDS.pm @@ -51,6 +51,16 @@ sub module { type => 'integer', required => gettext("This is required!"), }, + seriesorder => { + description => gettext('Default order for series'), + type => 'list', + choices => [ + [gettext('By date'), 'date'], + [gettext('By title'), 'title'] + ], + default => 'date', + level => 'guest' + }, previewbinary => { description => gettext('Location of used program to produce thumbnails on your system.'), default => '/usr/bin/mplayer', @@ -78,6 +88,7 @@ sub module { description => gettext('Display recording list with thumbnails?'), default => 'n', type => 'confirm', + level => 'guest' }, previewimages => { description => gettext('Common directory for preview images'), @@ -202,15 +213,15 @@ sub module { Msg => 'delr', }, # Search for a Match and extract the information - # of the RecordId + # of the id # ... Match => { - RecordId => qr/delr\s+(\d+)/s, + id => qr/delr\s+(\d+)/s, }, Actions => [ q|sub{ my $args = shift; my $event = shift; - my $record = getDataById($args->{RecordId}, 'RECORDS', 'RecordId'); + my $record = getDataById($args->{id}, 'RECORDS', 'id'); my $epg = main::getModule('EPG')->getId($record->{eventid}, 'title, subtitle, description'); my $title = sprintf(gettext("Recording deleted: %s"), $epg->{title}); @@ -291,7 +302,7 @@ sub _init { return 0; } - my $version = 31; # Must be increment if rows of table changed + my $version = 32; # 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)) { @@ -302,12 +313,13 @@ sub _init { $self->{dbh}->do(qq| CREATE TABLE IF NOT EXISTS RECORDS ( eventid int unsigned NOT NULL, - RecordId int unsigned not NULL, - RecordMD5 varchar(32) NOT NULL, + id int unsigned NOT NULL, + hash varchar(32) NOT NULL, Path text NOT NULL, + track text NOT NULL, priority tinyint NOT NULL, lifetime tinyint NOT NULL, - State tinyint NOT NULL, + status set('new', 'cutted'), FileSize int unsigned default '0', cutlength int unsigned default '0', Marks text, @@ -315,8 +327,8 @@ sub _init { preview text NOT NULL, aux text, addtime timestamp, - PRIMARY KEY (eventid), - UNIQUE KEY (eventid) + PRIMARY KEY (eventid), + UNIQUE KEY (eventid) ) COMMENT = '$version' |); @@ -523,16 +535,16 @@ sub parseData { # ------------------ my $self = shift || return error('No object defined!'); my $vdata = shift || return error('No data defined!'); - my ($event, $hash, $id, $date, $hour, $minute, $state, $duration, $title, $day, $month, $year); - my $dataHash = {}; + my ($event, $idx, $id, $date, $hour, $minute, $new, $duration, $title, $day, $month, $year); + my $data = {}; foreach my $record (@{$vdata}) { if($record =~ /\s+\d+\xB4\s+/) { # VDR is patched with recording length patch - ($id, $date, $hour, $minute, $state, $duration, $title) + ($id, $date, $hour, $minute, $new, $duration, $title) = $record =~ /^250[\-|\s](\d+)\s+([\d|\.]+)\s+(\d+)\:(\d+)(.?)\s*(\d*).*?\s+(.+)/si; } else { # Vanilla VDR # 250-1 01.11 15:14* Discovery~Die Rose von Kerrymore Spielfilm D/2000 - ($id, $date, $hour, $minute, $state, $title) + ($id, $date, $hour, $minute, $new, $title) = $record =~ /^250[\-|\s](\d+)\s+([\d|\.]+)\s+(\d+)\:(\d+)(.?).*?\s+(.+)/si; } @@ -550,14 +562,26 @@ sub parseData { if($year < 1900); # Adjust year, 70-99 => 1977-1999 ... 2000-2069 $event->{id} = $id; - $event->{state} = $state eq '*' ? 1 : 0; + + my @status; + push(@status,'new') + if($new && $new eq '*'); + my @t = split(/~/,$title); + if($t[-1] =~ /^%/) { + push(@status,'cutted'); + $t[-1] =~ s/^%//g; + } + + $event->{status} = join(',',@status); + $event->{track} = join('~',@t); + $event->{starttime} = timelocal(0,$minute,$hour,$day,$month-1, $year); $event->{title} = $title; - $hash = sprintf("%s~%s",$title,$event->{starttime}); - %{$dataHash->{$hash}} = %{$event}; + $idx = sprintf("%s~%s",$title,$event->{starttime}); + %{$data->{$idx}} = %{$event}; } - return ($dataHash); + return ($data); } # ------------------ @@ -578,8 +602,8 @@ sub scandirectory { my $filename = $File::Find::name; my $path = dirname($filename); - my $md5 = md5_hex($path); - unless(exists $files->{$md5}) { + my $hash = md5_hex($path); + unless(exists $files->{$hash}) { my $rec; $rec->{path} = $path; # Splitt 2005-01-16.04:35.88.99 @@ -602,11 +626,11 @@ sub scandirectory { # add file push(@{$rec->{files}},$filename); - $files->{$md5} = $rec; + $files->{$hash} = $rec; } else { - push(@{$files->{$md5}->{files}},$filename); + push(@{$files->{$hash}->{files}},$filename); } } @@ -633,17 +657,17 @@ sub _readData { my $outdatedRecordings; if($onlyvid) { - my $sth = $self->{dbh}->prepare('SELECT RecordMD5,CONCAT_WS("~",e.title,e.subtitle,UNIX_TIMESTAMP(e.starttime)) as hash FROM RECORDS as r,OLDEPG as e where r.eventid = e.eventid and vid = ?'); + my $sth = $self->{dbh}->prepare('SELECT hash,CONCAT_WS("~",e.title,e.subtitle,UNIX_TIMESTAMP(e.starttime)) as idx FROM RECORDS as r,OLDEPG as e where r.eventid = e.eventid and vid = ?'); if(!$sth->execute($onlyvid)) { con_err($console, sprintf("Couldn't execute query: %s.",$sth->errstr)); } - $outdatedRecordings = $sth->fetchall_hashref('hash'); + $outdatedRecordings = $sth->fetchall_hashref('idx'); } else { - my $sth = $self->{dbh}->prepare('SELECT RecordMD5,CONCAT_WS("~",e.title,e.subtitle,UNIX_TIMESTAMP(e.starttime)) as hash FROM RECORDS as r,OLDEPG as e where r.eventid = e.eventid'); + my $sth = $self->{dbh}->prepare('SELECT hash,CONCAT_WS("~",e.title,e.subtitle,UNIX_TIMESTAMP(e.starttime)) as idx FROM RECORDS as r,OLDEPG as e where r.eventid = e.eventid'); if(!$sth->execute()) { con_err($console, sprintf("Couldn't execute query: %s.",$sth->errstr)); } - $outdatedRecordings = $sth->fetchall_hashref('hash'); + $outdatedRecordings = $sth->fetchall_hashref('idx'); } if($forceUpdate) { @@ -721,17 +745,17 @@ sub _readData { my $db_data; unless($forceUpdate) { # read database for compare with vdr data - my $sql = qq|SELECT SQL_CACHE r.eventid as eventid, r.RecordId as id, + my $sql = qq|SELECT SQL_CACHE r.eventid as eventid, r.id as id, UNIX_TIMESTAMP(e.starttime) as starttime, - e.duration as duration, r.State as state, + e.duration, r.status, CONCAT_WS("~",e.title,e.subtitle) as title, - CONCAT_WS("~",e.title,e.subtitle,UNIX_TIMESTAMP(e.starttime)) as hash, + CONCAT_WS("~",e.title,e.subtitle,UNIX_TIMESTAMP(e.starttime)) as idx, UNIX_TIMESTAMP(e.addtime) as addtime, r.Path as path, r.Type as type, r.FileSize, r.Marks as marks, - r.RecordMD5 + r.hash from RECORDS as r,OLDEPG as e where e.vid = ? and r.eventid = e.eventid |; my $sth = $self->{dbh}->prepare($sql); @@ -741,7 +765,7 @@ sub _readData { if($console); next; } - $db_data = $sth->fetchall_hashref('hash'); + $db_data = $sth->fetchall_hashref('idx'); lg sprintf( 'Compare recording database with data from %s : %d / %d', $hostname, scalar keys %$db_data,scalar keys %$vdrData ); @@ -761,8 +785,8 @@ sub _readData { if(ref $waiter); # Compare fields - foreach my $field (qw/id state/) { - if($db_data->{$h}->{$field} != $event->{$field}) { + foreach my $field (qw/id status/) { + if($db_data->{$h}->{$field} ne $event->{$field}) { $self->_updateState($db_data->{$h}, $event); @@ -789,7 +813,7 @@ sub _readData { my $job = $self->videoPreview( $db_data->{$h}, 1); if($job) { push(@{$self->{JOBS}}, $job); - $self->_updatePreview($self->{dbh}, $job->{RecordMD5}, $db_data->{$h}->{preview}); + $self->_updatePreview($self->{dbh}, $job->{hash}, $db_data->{$h}->{preview}); } } $self->_updateEvent($db_data->{$h}); @@ -836,7 +860,7 @@ sub _readData { delete $outdatedRecordings->{$h}; $insertedData++; - $self->{keywords}->insert('recording',$info->{RecordMD5},$info->{keywords}); + $self->{keywords}->insert('recording',$info->{hash},$info->{keywords}); } else { push(@{$err},sprintf(gettext("Can't add recording '%s' into database!"),$info->{title})); @@ -848,15 +872,15 @@ sub _readData { } if($forceUpdate) { - foreach my $md5 (keys %{$files}) { - push(@{$err},sprintf(gettext("Recording '%s' without id or unique title and date from '%s'!"),$files->{$md5}->{title},$hostname)); + foreach my $idx (keys %{$files}) { + push(@{$err},sprintf(gettext("Recording '%s' without id or unique title and date from '%s'!"),$files->{$idx}->{title},$hostname)); } } if($db_data && scalar keys %$db_data > 0) { foreach my $t (keys %{$db_data}) { delete $outdatedRecordings->{$t}; - push(@todel,$db_data->{$t}->{RecordMD5}); + push(@todel,$db_data->{$t}->{hash}); } } @@ -866,9 +890,9 @@ sub _readData { debug sprintf 'Finish .. %d recordings inserted, %d recordings updated, %d recordings removed', $insertedData, $updatedState, $removedData; - map { push(@todel,$outdatedRecordings->{$_}->{RecordMD5}); } keys %{$outdatedRecordings}; + map { push(@todel,$outdatedRecordings->{$_}->{hash}); } keys %{$outdatedRecordings}; if(!$forceUpdate && scalar @todel) { - my $sql = sprintf('DELETE FROM RECORDS WHERE RecordMD5 IN (%s)', join(',' => ('?') x @todel)); + my $sql = sprintf('DELETE FROM RECORDS WHERE hash IN (%s)', join(',' => ('?') x @todel)); my $sth = $self->{dbh}->prepare($sql); $sth->execute(@todel) or return con_err($console, sprintf("Couldn't execute query: %s.",$sth->errstr)); @@ -901,8 +925,8 @@ sub _readData { # alte PreviewDirs loeschen - foreach my $md5 (@todel) { - my $dir = sprintf('%s/%s_shot', $self->{previewimages} , $md5); + foreach my $hash (@todel) { + my $dir = sprintf('%s/%s_shot', $self->{previewimages} , $hash); lg sprintf("Remove old preview files : '%s'",$dir); deleteDir($dir); } @@ -913,12 +937,16 @@ sub _readData { my @jobs = @{$self->{JOBS}}; $self->{JOBS} = []; - defined(my $child = fork()) or return con_err($console, sprintf("Couldn't fork : %s",$!)); - if($child == 0) { + my $child = fork(); + if ($child < 0) { + con_err($console, sprintf("Couldn't fork : %s",$!)); + } elsif ($child > 0) { + + } elsif ($child == 0) { $self->{dbh}->{InactiveDestroy} = 1; my $dbh = $self->{dbh}->clone(); error(sprintf("Couldn't clone database handle : %s",$!)) unless($dbh); - while(scalar @jobs > 0) { + while($dbh && scalar @jobs > 0) { my $job = shift (@jobs); my $preview = []; @@ -928,10 +956,10 @@ sub _readData { foreach(@images) { my $frame = basename($_); $frame =~ s/\.jpg$//ig; - push(@{$preview},$frame); - last if(scalar @{$preview} >= $self->{previewcount}); + push(@{$preview},$frame) + if(scalar @{$preview} < $self->{previewcount}); } - $self->_updatePreview($dbh, $job->{RecordMD5},$preview) if($dbh); + $self->_updatePreview($dbh, $job->{hash},$preview); } undef $dbh; exit 0; @@ -1021,8 +1049,8 @@ sub insert { my $sth = $self->{dbh}->prepare( qq| REPLACE INTO RECORDS - (eventid, RecordId, RecordMD5, Path, priority, lifetime, State, FileSize, cutlength, Marks, Type, preview, aux, addtime ) - VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NOW()) + (eventid, track, id, hash, Path, priority, lifetime, status, FileSize, cutlength, Marks, Type, preview, aux, addtime ) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,NOW()) |); $attr->{Marks} = "" @@ -1030,12 +1058,13 @@ sub insert { return $sth->execute( $attr->{eventid}, - $attr->{RecordId}, - $attr->{RecordMD5}, + $attr->{track}, + $attr->{id}, + $attr->{hash}, $attr->{Path}, $attr->{priority}, $attr->{lifetime}, - $attr->{State}, + $attr->{status}, $attr->{FileSize}, $attr->{cutlength}, $attr->{Marks}, @@ -1066,8 +1095,8 @@ sub _updateState { my $oldattr = shift || return error ('No data defined!'); my $attr = shift || return error ('No data to replace!'); - my $sth = $self->{dbh}->prepare('UPDATE RECORDS SET RecordId=?, State=?, addtime=NOW() where RecordMD5=?'); - return $sth->execute($attr->{id},$attr->{state},$oldattr->{RecordMD5}); + my $sth = $self->{dbh}->prepare('UPDATE RECORDS SET id=?, status=?, addtime=NOW() where hash=?'); + return $sth->execute($attr->{id},$attr->{status},$oldattr->{hash}); } # ------------------ @@ -1075,11 +1104,11 @@ sub _updatePreview { # ------------------ my $self = shift || return error('No object defined!'); my $dbh = shift || return error ('No dbh defined!'); - my $RecordMD5 = shift || return error ('No data defined!'); + my $hash = shift || return error ('No data defined!'); my $preview = shift || return error ('No data to replace!'); my $images = join(',',@{$preview}); - my $sth = $dbh->prepare('UPDATE RECORDS SET preview=?, addtime=NOW() where RecordMD5=?'); - return $sth->execute($images,$RecordMD5); + my $sth = $dbh->prepare('UPDATE RECORDS SET preview=?, addtime=NOW() where hash=?'); + return $sth->execute($images,$hash); } # ------------------ sub _updateFileSize { @@ -1087,8 +1116,8 @@ sub _updateFileSize { my $self = shift || return error('No object defined!'); my $attr = shift || return error ('No data to replace!'); - my $sth = $self->{dbh}->prepare('UPDATE RECORDS SET FileSize=?, addtime=NOW() where RecordMD5=?'); - return $sth->execute($attr->{FileSize},$attr->{RecordMD5}); + my $sth = $self->{dbh}->prepare('UPDATE RECORDS SET FileSize=?, addtime=NOW() where hash=?'); + return $sth->execute($attr->{FileSize},$attr->{hash}); } # ------------------ @@ -1141,9 +1170,10 @@ sub analyze { push(@{$self->{JOBS}}, $job) if($job); my $ret = { - RecordMD5 => $info->{RecordMD5}, + hash => $info->{hash}, title => $recattr->{title}, - RecordId => $recattr->{id}, + track => $recattr->{track}, + id => $recattr->{id}, Duration => $info->{duration}, Start => $recattr->{starttime}, Path => $info->{path}, @@ -1151,7 +1181,7 @@ sub analyze { lifetime => $info->{lifetime}, eventid => $event->{eventid}, Type => $info->{type} || 'UNKNOWN', - State => $recattr->{state}, + status => $recattr->{status}, FileSize => $info->{FileSize}, cutlength => $info->{cutlength}, aux => $info->{aux}, @@ -1179,8 +1209,8 @@ sub videoInfo { my $hour=$ltime[2]; my $minute=$ltime[1]; - foreach my $md5 (keys %{$files}) { - my $rec = $files->{$md5}; + foreach my $hash (keys %{$files}) { + my $rec = $files->{$hash}; if($rec->{title} eq $title # && $rec->{year} == $year && $rec->{month} == $month @@ -1190,7 +1220,7 @@ sub videoInfo { my $info = $self->readinfo($rec->{path}); - $info->{RecordMD5} = $md5; + $info->{hash} = $hash; $info->{path} = $rec->{path}; $info->{priority} = $rec->{priority}; $info->{lifetime} = $rec->{lifetime}; @@ -1202,7 +1232,7 @@ sub videoInfo { map { $info->{$_} = $marks->{$_}; } keys %{$marks}; $info->{cutlength} = $self->_calcmarks($info->{marks} , $info->{duration}); - delete $files->{$md5}; # remove from hash, avoid double lookup + delete $files->{$hash}; # remove from hash, avoid double lookup return $info; } } @@ -1473,7 +1503,7 @@ sub videoPreview { return 0; } - my $outdir = sprintf('%s/%s_shot', $self->{previewimages}, $info->{RecordMD5}); + my $outdir = sprintf('%s/%s_shot', $self->{previewimages}, $info->{hash}); my $count = $self->{previewcount}; # Stop here if enough files present @@ -1568,7 +1598,7 @@ sub videoPreview { return { command => $mversions->{$self->{previewcommand}}, previewdir => $outdir, - RecordMD5 => $info->{RecordMD5} + hash => $info->{hash} } } @@ -1677,16 +1707,16 @@ sub display { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); my $config = shift || return error('No config defined!'); - my $recordid = shift; + my $id = shift; - unless($recordid) { + unless($id) { con_err($console,gettext("No recording defined for display! Please use rdisplay 'rid'")); return; } my $sql = qq| SELECT SQL_CACHE - r.RecordMD5 as RecordId, + r.hash as RecordId, r.eventid, e.Duration, r.Marks, @@ -1697,7 +1727,7 @@ SELECT SQL_CACHE e.title as Title, e.subtitle as SubTitle, e.description as Description, - r.State as New, + r.status as New, r.Type as Type, (SELECT Name FROM CHANNELS as c @@ -1709,17 +1739,17 @@ from RECORDS as r,OLDEPG as e where r.eventid = e.eventid - and RecordMD5 = ? + and hash = ? |; my $erg; # my $fields; my $sth = $self->{dbh}->prepare($sql); - if(!$sth->execute($recordid) + if(!$sth->execute($id) # || !($fields = $sth->{'NAME'}) || !($erg = $sth->fetchrow_hashref())) { - con_err($console,sprintf(gettext("Recording '%s' does not exist in the database!"),$recordid)); - return; + con_err($console,gettext("This recording does not exist in the database!")); + return undef; } if($console->{TYP} ne 'HTML') { @@ -1733,7 +1763,7 @@ where $_ =~ s/\s*\:.*$//; } @reccmds; - my ($keywords,$keywordmax,$keywordmin) = $self->{keywords}->list('recording',[ $erg->{'RecordId'} ]); + my ($keywords,$keywordmax,$keywordmin) = $self->{keywords}->list('recording',[ $erg->{'id'} ]); my $param = { reccmds => \@reccmds, @@ -1748,17 +1778,18 @@ sub play { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); my $config = shift || return error('No config defined!'); - my $recordid = shift || return con_err($console,gettext("No recording defined for playback! Please use rplay 'rid'.")); + my $id = shift || return con_err($console,gettext("No recording defined for playback! Please use rplay 'rid'.")); my $params = shift; - my $sql = qq|SELECT SQL_CACHE vid, RecordID, RecordMD5, duration + my $sql = qq|SELECT SQL_CACHE vid, id, hash, duration FROM RECORDS as r, OLDEPG as e - WHERE e.eventid = r.eventid and RecordMD5 = ?|; + WHERE e.eventid = r.eventid and hash = ?|; my $sth = $self->{dbh}->prepare($sql); my $rec; - if(!$sth->execute($recordid) + if(!$sth->execute($id) || !($rec = $sth->fetchrow_hashref())) { - return con_err($console,sprintf(gettext("Recording '%s' does not exist in the database!"),$recordid)); + con_err($console,gettext("This recording does not exist in the database!")); + return undef; } my $start = 0; @@ -1780,10 +1811,10 @@ sub play { $vdr = $params->{vdr}; } - my $cmd = sprintf('PLAY %d %s', $rec->{RecordID}, $start); + my $cmd = sprintf('PLAY %d %s', $rec->{id}, $start); if($self->{svdrp}->scommand($console, $config, $cmd, $vdr)) { - $console->redirect({url => sprintf('?cmd=rdisplay&data=%s',$rec->{RecordMD5}), wait => 1}) + $console->redirect({url => sprintf('?cmd=rdisplay&data=%s',$rec->{hash}), wait => 1}) if(ref $console and $console->typ eq 'HTML'); return 1; @@ -1797,17 +1828,18 @@ sub cut { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); my $config = shift || return error('No config defined!'); - my $recordid = shift || return con_err($console,gettext("No recording defined for playback! Please use rplay 'rid'.")); + my $id = shift || return con_err($console,gettext("No recording defined for playback! Please use rplay 'rid'.")); my $params = shift; - my $sql = qq|SELECT SQL_CACHE vid, RecordID, RecordMD5 + my $sql = qq|SELECT SQL_CACHE vid, id, hash FROM RECORDS as r, OLDEPG as e - WHERE e.eventid = r.eventid and r.RecordMD5 = ?|; + WHERE e.eventid = r.eventid and r.hash = ?|; my $sth = $self->{dbh}->prepare($sql); my $rec; - if(!$sth->execute($recordid) + if(!$sth->execute($id) || !($rec = $sth->fetchrow_hashref())) { - return con_err($console,sprintf(gettext("Recording '%s' does not exist in the database!"),$recordid)); + con_err($console,gettext("This recording does not exist in the database!")); + return undef; } my $vdr = $rec->{vid}; @@ -1815,10 +1847,10 @@ sub cut { $vdr = $params->{vdr}; } - my $cmd = sprintf('EDIT %d', $rec->{RecordID}); + my $cmd = sprintf('EDIT %d', $rec->{id}); if($self->{svdrp}->scommand($console, $cmd, $vdr)) { - $console->redirect({url => sprintf('?cmd=rdisplay&data=%s',$rec->{RecordMD5}), wait => 1}) + $console->redirect({url => sprintf('?cmd=rdisplay&data=%s',$rec->{hash}), wait => 1}) if(ref $console and $console->typ eq 'HTML'); return 1; @@ -1856,7 +1888,7 @@ AND ( } my %f = ( - 'RecordMD5' => gettext('Index'), + 'hash' => gettext('Index'), 'Title' => gettext('Title'), 'Subtitle' => gettext('Subtitle'), 'Duration' => gettext('Duration'), @@ -1865,13 +1897,13 @@ AND ( my $sql = qq| SELECT SQL_CACHE - r.RecordMD5 as \'$f{'RecordMD5'}\', + r.hash as \'$f{'hash'}\', r.eventid as __EventId, e.title as \'$f{'Title'}\', e.subtitle as \'$f{'Subtitle'}\', SUM(e.duration) as \'$f{'Duration'}\', UNIX_TIMESTAMP(e.starttime) as \'$f{'starttime'}\', - SUM(State) as __New, + SUM(FIND_IN_SET('new',status)) as __New, r.Type as __Type, COUNT(*) as __Group, SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle), '~', $deep) as __fulltitle, @@ -1886,12 +1918,15 @@ WHERE e.eventid = r.eventid $where GROUP BY - SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle,RecordMD5), '~', $deep) + SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle,hash), '~', $deep) ORDER BY __IsRecording asc, |; - my $sortby = $text ? "starttime" : "__fulltitle"; + my $sortby = "track"; + $sortby = "starttime" + if($text && $config->{seriesorder} eq 'date'); + if(exists $params->{sortby}) { while(my($k, $v) = each(%f)) { if($params->{sortby} eq $k or $params->{sortby} eq $v) { @@ -1942,13 +1977,13 @@ ORDER BY __IsRecording asc, my $keywordmin; unless($console->typ eq 'AJAX') { - my $md5; + my $hash; map { - push(@$md5,$_->[0]); + push(@$hash,$_->[0]); $_->[5] = datum($_->[5],'short'); } @$erg; - ($keywords,$keywordmax,$keywordmin) = $self->{keywords}->list('recording',$md5); + ($keywords,$keywordmax,$keywordmin) = $self->{keywords}->list('recording',$hash); unshift(@$erg, $fields); } @@ -1959,7 +1994,7 @@ ORDER BY __IsRecording asc, used => $self->{CapacityPercent}, total => $self->{CapacityTotal}, free => $self->{CapacityFree}, - previewcommand => $self->{previewlistthumbs}, + previewcommand => $config->{previewlistthumbs}, keywords => $keywords, keywordsmax => $keywordmax, keywordsmin => $keywordmin, @@ -1995,7 +2030,7 @@ sub _search { my %f = ( - 'RecordMD5' => gettext('Index'), + 'hash' => gettext('Index'), 'Title' => gettext('Title'), 'Subtitle' => gettext('Subtitle'), 'Duration' => gettext('Duration'), @@ -2004,13 +2039,13 @@ sub _search { my $sql = qq| SELECT SQL_CACHE - r.RecordMD5 as \'$f{'RecordMD5'}\', + r.hash as \'$f{'hash'}\', r.eventid as __EventId, e.title as \'$f{'Title'}\', e.subtitle as \'$f{'Subtitle'}\', e.duration as \'$f{'Duration'}\', UNIX_TIMESTAMP(e.starttime) as \'$f{'starttime'}\', - r.State as __New, + FIND_IN_SET('new',r.status) as __New, r.Type as __Type, 0 as __Group, CONCAT_WS('~',e.title,e.subtitle) as __fulltitle, @@ -2078,13 +2113,13 @@ ORDER BY my $keywordmin; unless($console->typ eq 'AJAX') { - my $md5; + my $hash; map { - push(@$md5,$_->[0]); + push(@$hash,$_->[0]); $_->[5] = datum($_->[5],'short'); } @$erg; - ($keywords,$keywordmax,$keywordmin) = $self->{keywords}->list('recording',$md5); + ($keywords,$keywordmax,$keywordmin) = $self->{keywords}->list('recording',$hash); unshift(@$erg, $fields); } @@ -2095,7 +2130,7 @@ ORDER BY used => $self->{CapacityPercent}, total => $self->{CapacityTotal}, free => $self->{CapacityFree}, - previewcommand => $self->{previewcommand}, + previewcommand => $config->{previewlistthumbs}, keywords => $keywords, keywordsmax => $keywordmax, keywordsmin => $keywordmin, @@ -2117,7 +2152,7 @@ sub delete { my @rcs = split(/[^0-9a-fl\:]/, $record); my $todelete; - my $md5delete; + my $hashdelete; my %rec; foreach my $item (@rcs) { @@ -2133,10 +2168,10 @@ sub delete { my @recordings = keys %rec; my $sql = sprintf( -qq|SELECT SQL_CACHE e.vid, r.RecordId,CONCAT_WS('~',e.title,e.subtitle),r.RecordMD5 +qq|SELECT SQL_CACHE e.vid, r.id,CONCAT_WS('~',e.title,e.subtitle),r.hash FROM RECORDS as r,OLDEPG as e - WHERE e.eventid = r.eventid and r.RecordMD5 IN (%s) - ORDER BY e.vid, r.RecordId desc|, join(',' => ('?') x @recordings)); + WHERE e.eventid = r.eventid and r.hash IN (%s) + ORDER BY e.vid, r.id desc|, join(',' => ('?') x @recordings)); my $sth = $self->{dbh}->prepare($sql); $sth->execute(@recordings) or return con_err($console, sprintf("Couldn't execute query: %s.",$sth->errstr)); @@ -2148,7 +2183,7 @@ qq|SELECT SQL_CACHE e.vid, r.RecordId,CONCAT_WS('~',e.title,e.subtitle),r.Record vid => $recording->[0], Id => $recording->[1], Title => $recording->[2], - MD5 => $recording->[3] + hash => $recording->[3] }; if(ref $console and $console->{TYP} eq 'CONSOLE') { @@ -2170,12 +2205,12 @@ qq|SELECT SQL_CACHE e.vid, r.RecordId,CONCAT_WS('~',e.title,e.subtitle),r.Record $self->{svdrp}->queue_add(sprintf("delr %s",$r->{Id}), $r->{vid}); push(@{$todelete},$r->{Title}); # Remember title - push(@{$md5delete},$r->{MD5}); # Remember hash + push(@{$hashdelete},$r->{hash}); # Remember hash # Delete recordings from request, if found in database my $i = 0; for my $x (@recordings) { - if ( $x eq $r->{MD5} ) { # Remove known MD5 from user request + if ( $x eq $r->{hash} ) { # Remove known hash from user request splice @recordings, $i, 1; } else { $i++; @@ -2183,10 +2218,8 @@ qq|SELECT SQL_CACHE e.vid, r.RecordId,CONCAT_WS('~',e.title,e.subtitle),r.Record } } - con_err($console, - sprintf(gettext("Recording '%s' does not exist in the database!"), - join('\',\'',@recordings))) - if(scalar @recordings); + con_err($console,gettext("This recording does not exist in the database!")) + if(scalar @recordings); if($self->{svdrp}->queue_count()) { @@ -2205,12 +2238,12 @@ qq|SELECT SQL_CACHE e.vid, r.RecordId,CONCAT_WS('~',e.title,e.subtitle),r.Record con_msg($console,$msg); } - my $dsql = sprintf("DELETE FROM RECORDS WHERE RecordMD5 IN (%s)", join(',' => ('?') x @{$md5delete})); + my $dsql = sprintf("DELETE FROM RECORDS WHERE hash IN (%s)", join(',' => ('?') x @{$hashdelete})); my $dsth = $self->{dbh}->prepare($dsql); - $sth->execute(@{$md5delete}) + $sth->execute(@{$hashdelete}) or return con_err($console, sprintf("Couldn't execute query: %s.",$sth->errstr)); - $self->{keywords}->remove('recording',$md5delete); + $self->{keywords}->remove('recording',$hashdelete); } $self->_readData($console,$waiter) @@ -2252,11 +2285,11 @@ sub redit { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); my $config = shift || return error('No config defined!'); - my $recordid = shift || return con_err($console,gettext("No recording defined for editing!")); + my $id = shift || return con_err($console,gettext("No recording defined for editing!")); my $data = shift || 0; my $rec; - if($recordid) { + if($id) { my $sql = qq| SELECT SQL_CACHE e.vid, @@ -2270,12 +2303,13 @@ FROM OLDEPG as e WHERE e.eventid = r.eventid - AND ( r.RecordMD5 = ? ) + AND ( r.hash = ? ) |; my $sth = $self->{dbh}->prepare($sql); - if(!$sth->execute($recordid) + if(!$sth->execute($id) || !($rec = $sth->fetchrow_hashref())) { - return con_err($console,sprintf(gettext("Recording '%s' does not exist in the database!"),$recordid)); + con_err($console,gettext("This recording does not exist in the database!")); + return undef; } } @@ -2481,11 +2515,11 @@ WHERE } if($ChangeRecordingData) { - my $sth = $self->{dbh}->prepare('DELETE FROM RECORDS WHERE RecordMD5 = ?'); - $sth->execute($recordid) + my $sth = $self->{dbh}->prepare('DELETE FROM RECORDS WHERE hash = ?'); + $sth->execute($id) or return con_err($console,sprintf("Couldn't execute query: %s.",$sth->errstr)); my $todel; - push(@$todel,$recordid); + push(@$todel,$id); $self->{keywords}->remove('recording',$todel); } if($dropEPGEntry || $ChangeRecordingData) { @@ -2560,9 +2594,13 @@ sub conv { $self->list($console); } - my ($cmdid, $recid) = split(/[\s_]/, $data); + my ($cmdid, $hash) = split(/[\s_]/, $data); my $cmd = (split(':', $self->{reccmds}->[$cmdid-1]))[-1] || return con_err($console,gettext("Couldn't find this command ID!")); - my $path = $self->IdToPath($recid) || return con_err($console,sprintf(gettext("Recording '%s' does not exist in the database!"),$recid)); + my $path = $self->IdToPath($hash); + unless($path) { + con_err($console,gettext("This recording does not exist in the database!")); + return undef; + } my $command = sprintf("%s %s",$cmd,qquote($path)); debug sprintf('Call command %s%s', @@ -2600,7 +2638,7 @@ sub status { my $sql = qq| SELECT SQL_CACHE - r.RecordMD5 as __Id, + r.hash as __Id, r.eventid as __EventId, e.title, e.subtitle, @@ -2636,7 +2674,7 @@ sub IdToData { my $self = shift || return error('No object defined!'); my $id = shift || return undef; - my $sth = $self->{dbh}->prepare('SELECT SQL_CACHE * from RECORDS as r, OLDEPG as e where e.eventid = r.eventid and RecordMD5 = ?'); + my $sth = $self->{dbh}->prepare('SELECT SQL_CACHE * from RECORDS as r, OLDEPG as e where e.eventid = r.eventid and hash = ?'); $sth->execute($id) or return error sprintf("Couldn't execute query: %s.",$sth->errstr); my $erg = $sth->fetchrow_hashref(); @@ -2649,7 +2687,7 @@ sub IdToPath { my $self = shift || return error('No object defined!'); my $id = shift || return undef; - my $sth = $self->{dbh}->prepare('SELECT SQL_CACHE Path from RECORDS where RecordMD5 = ?'); + my $sth = $self->{dbh}->prepare('SELECT SQL_CACHE Path from RECORDS where hash = ?'); $sth->execute($id) or return error sprintf("Couldn't execute query: %s.",$sth->errstr); my $erg = $sth->fetchrow_hashref(); @@ -2660,11 +2698,11 @@ sub IdToPath { sub getGroupIds { # ------------------ my $self = shift || return error('No object defined!'); - my $recid = shift || return error ('No recording defined!'); + my $hash = shift || return error ('No recording defined!'); - my $data = $self->IdToData($recid); + my $data = $self->IdToData($hash); unless($data) { - error sprintf("Couldn't find recording '%s'!", $recid); + error sprintf("Couldn't find recording '%s'!", $hash); return; } my $text = $data->{title}; @@ -2676,7 +2714,7 @@ sub getGroupIds { my $sql = qq| SELECT SQL_CACHE - r.RecordMD5 + r.hash FROM RECORDS as r, OLDEPG as e @@ -2688,7 +2726,7 @@ AND ( SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle), '~', $deep) LIKE ? ) GROUP BY - SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle,RecordMD5), '~', $deep) + SUBSTRING_INDEX(CONCAT_WS('~',e.title,e.subtitle,hash), '~', $deep) |; my $sth = $self->{dbh}->prepare($sql); @@ -2866,7 +2904,7 @@ sub recover { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); my $config = shift || return error('No config defined!'); - my $recordid = shift || 0; + my $id = shift || 0; my $data = shift || 0; my $files; @@ -2922,13 +2960,13 @@ sub recover { if(ref $data eq 'HASH') { my $ChangeRecordingData = 0; - foreach my $md5 (split(/\s*,\s*/, $data->{restore})) { - unless(exists $files->{$md5}) { + foreach my $hash (split(/\s*,\s*/, $data->{restore})) { + unless(exists $files->{$hash}) { con_err($console,gettext("Can't recover recording, maybe was this in the meantime deleted!")); next; } - my $path = $files->{$md5}->{path}; + my $path = $files->{$hash}->{path}; my $newPath = $path; $newPath =~ s/\.del$/\.rec/g; lg sprintf("Recover recording, rename '%s' to %s",$path,$newPath); @@ -3033,15 +3071,15 @@ sub image { return $console->status404('NULL','Wrong image parameter') unless($data); - my ($recordid, $frame) + my ($id, $frame) = $data =~ /^([0-9a-f]{32}).(.*)$/si; return $console->status404('NULL','Wrong image parameter') - unless($recordid && $frame); + unless($id && $frame); if(length($frame) < 8) { $frame = sprintf("%08d",$frame); } - return $console->datei(sprintf('%s/%s_shot/%s.jpg', $self->{previewimages}, $recordid, $frame)); + return $console->datei(sprintf('%s/%s_shot/%s.jpg', $self->{previewimages}, $id, $frame)); } 1; diff --git a/lib/XXV/MODULES/SHARE.pm b/lib/XXV/MODULES/SHARE.pm index 50abc4d..a3f5bd9 100644 --- a/lib/XXV/MODULES/SHARE.pm +++ b/lib/XXV/MODULES/SHARE.pm @@ -291,7 +291,12 @@ sub ConnectToService { $ua->agent(sprintf("xxv %s",$version)) if($ua); } } - my $webservice = $client->service($service); + + my $webservice = eval "\$client->service(\$service)"; + if($@) { + return error("Couldn't connect to popularity web service: $@"); + } + my $usrkey; if($webservice) { diff --git a/locale/de.po b/locale/de.po index 8353e84..6bf283c 100644 --- a/locale/de.po +++ b/locale/de.po @@ -49,7 +49,7 @@ msgid "Data source for the connection to the database" msgstr "Name der Datenquelle für die Verbindung zur Datenbank" #-------------------- -#: ../bin/xxvd:682 ../bin/xxvd:688 ../bin/xxvd:694 ../lib/XXV/MODULES/AUTOTIMER.pm:30 ../lib/XXV/MODULES/AUTOTIMER.pm:682 ../lib/XXV/MODULES/CHANNELS.pm:1103 ../lib/XXV/MODULES/CHANNELS.pm:1129 ../lib/XXV/MODULES/CHANNELS.pm:1142 ../lib/XXV/MODULES/CHANNELS.pm:1181 ../lib/XXV/MODULES/CHANNELS.pm:1207 ../lib/XXV/MODULES/CHANNELS.pm:28 ../lib/XXV/MODULES/CHRONICLE.pm:27 ../lib/XXV/MODULES/EPG.pm:34 ../lib/XXV/MODULES/EPG.pm:40 ../lib/XXV/MODULES/EPG.pm:47 ../lib/XXV/MODULES/EVENTS.pm:33 ../lib/XXV/MODULES/GRAB.pm:30 ../lib/XXV/MODULES/GRAB.pm:44 ../lib/XXV/MODULES/HTTPD.pm:62 ../lib/XXV/MODULES/HTTPD.pm:68 ../lib/XXV/MODULES/HTTPD.pm:74 ../lib/XXV/MODULES/HTTPD.pm:80 ../lib/XXV/MODULES/HTTPD.pm:86 ../lib/XXV/MODULES/HTTPD.pm:94 ../lib/XXV/MODULES/INTERFACE.pm:32 ../lib/XXV/MODULES/INTERFACE.pm:38 ../lib/XXV/MODULES/INTERFACE.pm:44 ../lib/XXV/MODULES/KEYWORDS.pm:28 ../lib/XXV/MODULES/LOGREAD.pm:31 ../lib/XXV/MODULES/LOGREAD.pm:37 ../lib/XXV/MODULES/LOGREAD.pm:43 ../lib/XXV/MODULES/LOGREAD.pm:49 ../lib/XXV/MODULES/MEDIALIB.pm:32 ../lib/XXV/MODULES/MEDIALIB.pm:38 ../lib/XXV/MODULES/MEDIALIB.pm:44 ../lib/XXV/MODULES/MOVETIMER.pm:26 ../lib/XXV/MODULES/MOVETIMER.pm:417 ../lib/XXV/MODULES/MOVETIMER.pm:420 ../lib/XXV/MODULES/MOVETIMER.pm:440 ../lib/XXV/MODULES/MOVETIMER.pm:443 ../lib/XXV/MODULES/MUSIC.pm:39 ../lib/XXV/MODULES/MUSIC.pm:45 ../lib/XXV/MODULES/MUSIC.pm:51 ../lib/XXV/MODULES/MUSIC.pm:57 ../lib/XXV/MODULES/MUSIC.pm:68 ../lib/XXV/MODULES/MUSIC.pm:74 ../lib/XXV/MODULES/RECORDS.pm:2226 ../lib/XXV/MODULES/RECORDS.pm:2240 ../lib/XXV/MODULES/RECORDS.pm:2254 ../lib/XXV/MODULES/RECORDS.pm:2831 ../lib/XXV/MODULES/RECORDS.pm:2843 ../lib/XXV/MODULES/RECORDS.pm:40 ../lib/XXV/MODULES/RECORDS.pm:46 ../lib/XXV/MODULES/RECORDS.pm:52 ../lib/XXV/MODULES/RECORDS.pm:58 ../lib/XXV/MODULES/RECORDS.pm:70 ../lib/XXV/MODULES/RECORDS.pm:86 ../lib/XXV/MODULES/RECORDS.pm:97 ../lib/XXV/MODULES/REMOTE.pm:28 ../lib/XXV/MODULES/REMOTE.pm:34 ../lib/XXV/MODULES/REMOTE.pm:41 ../lib/XXV/MODULES/REPORT.pm:29 ../lib/XXV/MODULES/REPORT.pm:35 ../lib/XXV/MODULES/ROBOT.pm:29 ../lib/XXV/MODULES/SHARE.pm:64 ../lib/XXV/MODULES/SHARE.pm:81 ../lib/XXV/MODULES/SHARE.pm:87 ../lib/XXV/MODULES/STATUS.pm:31 ../lib/XXV/MODULES/STATUS.pm:37 ../lib/XXV/MODULES/STATUS.pm:42 ../lib/XXV/MODULES/STREAM.pm:108 ../lib/XXV/MODULES/STREAM.pm:33 ../lib/XXV/MODULES/STREAM.pm:43 ../lib/XXV/MODULES/STREAM.pm:64 ../lib/XXV/MODULES/STREAM.pm:70 ../lib/XXV/MODULES/STREAM.pm:88 ../lib/XXV/MODULES/STREAM.pm:94 ../lib/XXV/MODULES/SVDRP.pm:221 ../lib/XXV/MODULES/SVDRP.pm:227 ../lib/XXV/MODULES/SVDRP.pm:250 ../lib/XXV/MODULES/SVDRP.pm:30 ../lib/XXV/MODULES/TELNET.pm:29 ../lib/XXV/MODULES/TELNET.pm:35 ../lib/XXV/MODULES/TELNET.pm:41 ../lib/XXV/MODULES/TELNET.pm:47 ../lib/XXV/MODULES/TIMERS.pm:29 ../lib/XXV/MODULES/TIMERS.pm:630 ../lib/XXV/MODULES/TIMERS.pm:643 ../lib/XXV/MODULES/TIMERS.pm:646 ../lib/XXV/MODULES/TIMERS.pm:671 ../lib/XXV/MODULES/USER.pm:283 ../lib/XXV/MODULES/USER.pm:431 ../lib/XXV/MODULES/USER.pm:437 ../lib/XXV/MODULES/USER.pm:460 ../lib/XXV/MODULES/USER.pm:68 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:42 ../lib/XXV/MODULES/WAPD.pm:48 ../lib/XXV/MODULES/WAPD.pm:54 ../lib/XXV/MODULES/WAPD.pm:60 ../lib/XXV/MODULES/WAPD.pm:66 ../lib/XXV/MODULES/WAPD.pm:73 ../lib/XXV/MODULES/XMLTV.pm:32 ../lib/XXV/MODULES/XMLTV.pm:520 ../lib/XXV/MODULES/XMLTV.pm:539 ../lib/XXV/MODULES/XMLTV.pm:542 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:113 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:119 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:125 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:69 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:95 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:102 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:33 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:59 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:77 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:91 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:59 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:56 +#: ../bin/xxvd:682 ../bin/xxvd:688 ../bin/xxvd:694 ../lib/XXV/MODULES/AUTOTIMER.pm:30 ../lib/XXV/MODULES/AUTOTIMER.pm:682 ../lib/XXV/MODULES/CHANNELS.pm:1103 ../lib/XXV/MODULES/CHANNELS.pm:1129 ../lib/XXV/MODULES/CHANNELS.pm:1142 ../lib/XXV/MODULES/CHANNELS.pm:1181 ../lib/XXV/MODULES/CHANNELS.pm:1207 ../lib/XXV/MODULES/CHANNELS.pm:28 ../lib/XXV/MODULES/CHRONICLE.pm:27 ../lib/XXV/MODULES/EPG.pm:34 ../lib/XXV/MODULES/EPG.pm:40 ../lib/XXV/MODULES/EPG.pm:47 ../lib/XXV/MODULES/EVENTS.pm:33 ../lib/XXV/MODULES/GRAB.pm:30 ../lib/XXV/MODULES/GRAB.pm:44 ../lib/XXV/MODULES/HTTPD.pm:62 ../lib/XXV/MODULES/HTTPD.pm:68 ../lib/XXV/MODULES/HTTPD.pm:74 ../lib/XXV/MODULES/HTTPD.pm:80 ../lib/XXV/MODULES/HTTPD.pm:86 ../lib/XXV/MODULES/HTTPD.pm:94 ../lib/XXV/MODULES/INTERFACE.pm:32 ../lib/XXV/MODULES/INTERFACE.pm:38 ../lib/XXV/MODULES/INTERFACE.pm:44 ../lib/XXV/MODULES/KEYWORDS.pm:28 ../lib/XXV/MODULES/LOGREAD.pm:31 ../lib/XXV/MODULES/LOGREAD.pm:37 ../lib/XXV/MODULES/LOGREAD.pm:43 ../lib/XXV/MODULES/LOGREAD.pm:49 ../lib/XXV/MODULES/MEDIALIB.pm:32 ../lib/XXV/MODULES/MEDIALIB.pm:38 ../lib/XXV/MODULES/MEDIALIB.pm:44 ../lib/XXV/MODULES/MOVETIMER.pm:26 ../lib/XXV/MODULES/MOVETIMER.pm:417 ../lib/XXV/MODULES/MOVETIMER.pm:420 ../lib/XXV/MODULES/MOVETIMER.pm:440 ../lib/XXV/MODULES/MOVETIMER.pm:443 ../lib/XXV/MODULES/MUSIC.pm:39 ../lib/XXV/MODULES/MUSIC.pm:45 ../lib/XXV/MODULES/MUSIC.pm:51 ../lib/XXV/MODULES/MUSIC.pm:57 ../lib/XXV/MODULES/MUSIC.pm:68 ../lib/XXV/MODULES/MUSIC.pm:74 ../lib/XXV/MODULES/RECORDS.pm:108 ../lib/XXV/MODULES/RECORDS.pm:2331 ../lib/XXV/MODULES/RECORDS.pm:2345 ../lib/XXV/MODULES/RECORDS.pm:2359 ../lib/XXV/MODULES/RECORDS.pm:2940 ../lib/XXV/MODULES/RECORDS.pm:2952 ../lib/XXV/MODULES/RECORDS.pm:40 ../lib/XXV/MODULES/RECORDS.pm:46 ../lib/XXV/MODULES/RECORDS.pm:52 ../lib/XXV/MODULES/RECORDS.pm:68 ../lib/XXV/MODULES/RECORDS.pm:80 ../lib/XXV/MODULES/RECORDS.pm:97 ../lib/XXV/MODULES/REMOTE.pm:28 ../lib/XXV/MODULES/REMOTE.pm:34 ../lib/XXV/MODULES/REMOTE.pm:41 ../lib/XXV/MODULES/REPORT.pm:29 ../lib/XXV/MODULES/REPORT.pm:35 ../lib/XXV/MODULES/ROBOT.pm:29 ../lib/XXV/MODULES/SHARE.pm:64 ../lib/XXV/MODULES/SHARE.pm:81 ../lib/XXV/MODULES/SHARE.pm:87 ../lib/XXV/MODULES/STATUS.pm:31 ../lib/XXV/MODULES/STATUS.pm:37 ../lib/XXV/MODULES/STATUS.pm:42 ../lib/XXV/MODULES/STREAM.pm:108 ../lib/XXV/MODULES/STREAM.pm:33 ../lib/XXV/MODULES/STREAM.pm:43 ../lib/XXV/MODULES/STREAM.pm:64 ../lib/XXV/MODULES/STREAM.pm:70 ../lib/XXV/MODULES/STREAM.pm:88 ../lib/XXV/MODULES/STREAM.pm:94 ../lib/XXV/MODULES/SVDRP.pm:242 ../lib/XXV/MODULES/SVDRP.pm:248 ../lib/XXV/MODULES/SVDRP.pm:271 ../lib/XXV/MODULES/SVDRP.pm:30 ../lib/XXV/MODULES/TELNET.pm:29 ../lib/XXV/MODULES/TELNET.pm:35 ../lib/XXV/MODULES/TELNET.pm:41 ../lib/XXV/MODULES/TELNET.pm:47 ../lib/XXV/MODULES/TIMERS.pm:29 ../lib/XXV/MODULES/TIMERS.pm:630 ../lib/XXV/MODULES/TIMERS.pm:643 ../lib/XXV/MODULES/TIMERS.pm:646 ../lib/XXV/MODULES/TIMERS.pm:671 ../lib/XXV/MODULES/USER.pm:283 ../lib/XXV/MODULES/USER.pm:431 ../lib/XXV/MODULES/USER.pm:437 ../lib/XXV/MODULES/USER.pm:460 ../lib/XXV/MODULES/USER.pm:68 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:42 ../lib/XXV/MODULES/WAPD.pm:48 ../lib/XXV/MODULES/WAPD.pm:54 ../lib/XXV/MODULES/WAPD.pm:60 ../lib/XXV/MODULES/WAPD.pm:66 ../lib/XXV/MODULES/WAPD.pm:73 ../lib/XXV/MODULES/XMLTV.pm:32 ../lib/XXV/MODULES/XMLTV.pm:520 ../lib/XXV/MODULES/XMLTV.pm:539 ../lib/XXV/MODULES/XMLTV.pm:542 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:113 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:119 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:125 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:69 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:95 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:102 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:33 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:59 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:77 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:91 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:59 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:56 msgid "This is required!" msgstr "Das ist erforderlich!" @@ -266,12 +266,12 @@ msgid "Percent" msgstr "Prozent" #-------------------- -#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:161 ../html/search.tmpl:54 ../lib/XXV/MODULES/AUTOTIMER.pm:157 ../lib/XXV/MODULES/AUTOTIMER.pm:432 ../lib/XXV/MODULES/CHRONICLE.pm:176 ../lib/XXV/MODULES/CHRONICLE.pm:257 ../lib/XXV/MODULES/EPG.pm:1076 ../lib/XXV/MODULES/EPG.pm:1199 ../lib/XXV/MODULES/EPG.pm:695 ../lib/XXV/MODULES/EPG.pm:932 ../lib/XXV/MODULES/RECORDS.pm:2264 ../lib/XXV/MODULES/SHARE.pm:354 ../lib/XXV/MODULES/TIMERS.pm:1258 ../lib/XXV/MODULES/TIMERS.pm:877 ../lib/XXV/MODULES/XMLTV.pm:692 +#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:161 ../html/search.tmpl:54 ../lib/XXV/MODULES/AUTOTIMER.pm:157 ../lib/XXV/MODULES/AUTOTIMER.pm:432 ../lib/XXV/MODULES/CHRONICLE.pm:176 ../lib/XXV/MODULES/CHRONICLE.pm:257 ../lib/XXV/MODULES/EPG.pm:1076 ../lib/XXV/MODULES/EPG.pm:1199 ../lib/XXV/MODULES/EPG.pm:695 ../lib/XXV/MODULES/EPG.pm:932 ../lib/XXV/MODULES/RECORDS.pm:2369 ../lib/XXV/MODULES/SHARE.pm:359 ../lib/XXV/MODULES/TIMERS.pm:1258 ../lib/XXV/MODULES/TIMERS.pm:877 ../lib/XXV/MODULES/XMLTV.pm:692 msgid "Channel" msgstr "Kanal" #-------------------- -#: ../html/display.tmpl:27 ../html/movetimerlist.tmpl:81 ../lib/XXV/MODULES/AUTOTIMER.pm:1141 ../lib/XXV/MODULES/CHANNELS.pm:601 ../lib/XXV/MODULES/CHRONICLE.pm:174 ../lib/XXV/MODULES/CHRONICLE.pm:255 ../lib/XXV/MODULES/EPG.pm:1074 ../lib/XXV/MODULES/EPG.pm:1197 ../lib/XXV/MODULES/EPG.pm:693 ../lib/XXV/MODULES/EPG.pm:820 ../lib/XXV/MODULES/EPG.pm:929 ../lib/XXV/MODULES/MOVETIMER.pm:576 ../lib/XXV/MODULES/MUSIC.pm:614 ../lib/XXV/MODULES/SHARE.pm:352 ../lib/XXV/MODULES/SVDRP.pm:329 ../lib/XXV/MODULES/TIMERS.pm:1255 ../lib/XXV/MODULES/USER.pm:613 ../lib/XXV/MODULES/XMLTV.pm:690 +#: ../html/display.tmpl:27 ../html/movetimerlist.tmpl:81 ../lib/XXV/MODULES/AUTOTIMER.pm:1141 ../lib/XXV/MODULES/CHANNELS.pm:601 ../lib/XXV/MODULES/CHRONICLE.pm:174 ../lib/XXV/MODULES/CHRONICLE.pm:255 ../lib/XXV/MODULES/EPG.pm:1074 ../lib/XXV/MODULES/EPG.pm:1197 ../lib/XXV/MODULES/EPG.pm:693 ../lib/XXV/MODULES/EPG.pm:820 ../lib/XXV/MODULES/EPG.pm:929 ../lib/XXV/MODULES/MOVETIMER.pm:576 ../lib/XXV/MODULES/MUSIC.pm:614 ../lib/XXV/MODULES/SHARE.pm:357 ../lib/XXV/MODULES/SVDRP.pm:359 ../lib/XXV/MODULES/TIMERS.pm:1255 ../lib/XXV/MODULES/USER.pm:613 ../lib/XXV/MODULES/XMLTV.pm:690 msgid "Service" msgstr "Service" @@ -301,12 +301,12 @@ msgid "Search with OFDb" msgstr "Suche mit OFDb" #-------------------- -#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:441 ../lib/XXV/MODULES/AUTOTIMER.pm:644 ../lib/XXV/MODULES/EPG.pm:935 ../lib/XXV/MODULES/RECORDS.pm:2277 ../lib/XXV/MODULES/RECORDS.pm:2485 ../lib/XXV/MODULES/TIMERS.pm:775 ../lib/XXV/OUTPUT/Console.pm:171 +#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:441 ../lib/XXV/MODULES/AUTOTIMER.pm:644 ../lib/XXV/MODULES/EPG.pm:935 ../lib/XXV/MODULES/RECORDS.pm:2382 ../lib/XXV/MODULES/RECORDS.pm:2590 ../lib/XXV/MODULES/TIMERS.pm:775 ../lib/XXV/OUTPUT/Console.pm:171 msgid "Description" msgstr "Beschreibung" #-------------------- -#: ../html/display.tmpl:69 ../lib/XXV/MODULES/AUTOTIMER.pm:158 ../lib/XXV/MODULES/AUTOTIMER.pm:435 ../lib/XXV/MODULES/AUTOTIMER.pm:438 ../lib/XXV/MODULES/CHRONICLE.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:259 ../lib/XXV/MODULES/EPG.pm:1077 ../lib/XXV/MODULES/EPG.pm:1200 ../lib/XXV/MODULES/EPG.pm:696 ../lib/XXV/MODULES/EPG.pm:822 ../lib/XXV/MODULES/EPG.pm:933 ../lib/XXV/MODULES/SHARE.pm:355 ../lib/XXV/MODULES/TIMERS.pm:1259 ../lib/XXV/MODULES/TIMERS.pm:878 +#: ../html/display.tmpl:69 ../lib/XXV/MODULES/AUTOTIMER.pm:158 ../lib/XXV/MODULES/AUTOTIMER.pm:435 ../lib/XXV/MODULES/AUTOTIMER.pm:438 ../lib/XXV/MODULES/CHRONICLE.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:259 ../lib/XXV/MODULES/EPG.pm:1077 ../lib/XXV/MODULES/EPG.pm:1200 ../lib/XXV/MODULES/EPG.pm:696 ../lib/XXV/MODULES/EPG.pm:822 ../lib/XXV/MODULES/EPG.pm:933 ../lib/XXV/MODULES/SHARE.pm:360 ../lib/XXV/MODULES/TIMERS.pm:1259 ../lib/XXV/MODULES/TIMERS.pm:878 msgid "Start" msgstr "Start" @@ -316,7 +316,7 @@ msgid "PDC" msgstr "VPS" #-------------------- -#: ../html/display.tmpl:75 ../html/widgets/player.tmpl:100 ../html/widgets/player.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:159 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/AUTOTIMER.pm:439 ../lib/XXV/MODULES/CHRONICLE.pm:179 ../lib/XXV/MODULES/CHRONICLE.pm:260 ../lib/XXV/MODULES/EPG.pm:1078 ../lib/XXV/MODULES/EPG.pm:1201 ../lib/XXV/MODULES/EPG.pm:697 ../lib/XXV/MODULES/EPG.pm:823 ../lib/XXV/MODULES/EPG.pm:934 ../lib/XXV/MODULES/SHARE.pm:356 ../lib/XXV/MODULES/TIMERS.pm:1260 +#: ../html/display.tmpl:75 ../html/widgets/player.tmpl:100 ../html/widgets/player.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:159 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/AUTOTIMER.pm:439 ../lib/XXV/MODULES/CHRONICLE.pm:179 ../lib/XXV/MODULES/CHRONICLE.pm:260 ../lib/XXV/MODULES/EPG.pm:1078 ../lib/XXV/MODULES/EPG.pm:1201 ../lib/XXV/MODULES/EPG.pm:697 ../lib/XXV/MODULES/EPG.pm:823 ../lib/XXV/MODULES/EPG.pm:934 ../lib/XXV/MODULES/SHARE.pm:361 ../lib/XXV/MODULES/TIMERS.pm:1260 msgid "Stop" msgstr "Stopp" @@ -660,7 +660,7 @@ msgid "Save" msgstr "Speichern" #-------------------- -#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../lib/XXV/MODULES/AUTOTIMER.pm:155 ../lib/XXV/MODULES/AUTOTIMER.pm:429 ../lib/XXV/MODULES/AUTOTIMER.pm:642 ../lib/XXV/MODULES/CHRONICLE.pm:175 ../lib/XXV/MODULES/CHRONICLE.pm:256 ../lib/XXV/MODULES/EPG.pm:1075 ../lib/XXV/MODULES/EPG.pm:1198 ../lib/XXV/MODULES/EPG.pm:694 ../lib/XXV/MODULES/EPG.pm:821 ../lib/XXV/MODULES/EPG.pm:930 ../lib/XXV/MODULES/EVENTS.pm:349 ../lib/XXV/MODULES/MEDIALIB.pm:1274 ../lib/XXV/MODULES/MUSIC.pm:617 ../lib/XXV/MODULES/RECORDS.pm:1789 ../lib/XXV/MODULES/RECORDS.pm:1928 ../lib/XXV/MODULES/SHARE.pm:353 ../lib/XXV/MODULES/TIMERS.pm:1261 ../lib/XXV/MODULES/TIMERS.pm:876 +#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../lib/XXV/MODULES/AUTOTIMER.pm:155 ../lib/XXV/MODULES/AUTOTIMER.pm:429 ../lib/XXV/MODULES/AUTOTIMER.pm:642 ../lib/XXV/MODULES/CHRONICLE.pm:175 ../lib/XXV/MODULES/CHRONICLE.pm:256 ../lib/XXV/MODULES/EPG.pm:1075 ../lib/XXV/MODULES/EPG.pm:1198 ../lib/XXV/MODULES/EPG.pm:694 ../lib/XXV/MODULES/EPG.pm:821 ../lib/XXV/MODULES/EPG.pm:930 ../lib/XXV/MODULES/EVENTS.pm:349 ../lib/XXV/MODULES/MEDIALIB.pm:1274 ../lib/XXV/MODULES/MUSIC.pm:617 ../lib/XXV/MODULES/RECORDS.pm:1892 ../lib/XXV/MODULES/RECORDS.pm:2034 ../lib/XXV/MODULES/SHARE.pm:358 ../lib/XXV/MODULES/TIMERS.pm:1261 ../lib/XXV/MODULES/TIMERS.pm:876 msgid "Title" msgstr "Titel" @@ -670,7 +670,7 @@ msgid "Search at" msgstr "Suche bei" #-------------------- -#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../lib/XXV/MODULES/AUTOTIMER.pm:430 ../lib/XXV/MODULES/AUTOTIMER.pm:643 ../lib/XXV/MODULES/EPG.pm:931 ../lib/XXV/MODULES/MEDIALIB.pm:1275 ../lib/XXV/MODULES/RECORDS.pm:1790 ../lib/XXV/MODULES/RECORDS.pm:1929 +#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../lib/XXV/MODULES/AUTOTIMER.pm:430 ../lib/XXV/MODULES/AUTOTIMER.pm:643 ../lib/XXV/MODULES/EPG.pm:931 ../lib/XXV/MODULES/MEDIALIB.pm:1275 ../lib/XXV/MODULES/RECORDS.pm:1893 ../lib/XXV/MODULES/RECORDS.pm:2035 msgid "Subtitle" msgstr "Serientitel" @@ -1019,7 +1019,7 @@ msgid "New recording" msgstr "Neue Aufnahme" #-------------------- -#: ../html/rdisplay.tmpl:140 ../html/rlist.tmpl:102 ../lib/XXV/MODULES/RECORDS.pm:1791 ../lib/XXV/MODULES/RECORDS.pm:1930 +#: ../html/rdisplay.tmpl:140 ../html/rlist.tmpl:102 ../lib/XXV/MODULES/RECORDS.pm:1894 ../lib/XXV/MODULES/RECORDS.pm:2036 msgid "Duration" msgstr "Dauer" @@ -1029,7 +1029,7 @@ msgid "By cut" msgstr "Geschnitten" #-------------------- -#: ../html/rdisplay.tmpl:170 ../lib/XXV/MODULES/RECORDS.pm:2286 +#: ../html/rdisplay.tmpl:170 ../lib/XXV/MODULES/RECORDS.pm:2391 msgid "Keywords" msgstr "Stichwörter" @@ -1049,7 +1049,7 @@ msgid "Recording list" msgstr "Aufnahmeliste" #-------------------- -#: ../html/rdisplay.tmpl:78 ../lib/XXV/MODULES/RECORDS.pm:2088 +#: ../html/rdisplay.tmpl:78 ../lib/XXV/MODULES/RECORDS.pm:2194 msgid "Would you like to delete this recording?" msgstr "Wollen Sie diese Aufnahme löschen?" @@ -1064,7 +1064,7 @@ msgid "Cut recording" msgstr "Aufnahme schneiden" #-------------------- -#: ../html/rdisplay.tmpl:86 ../lib/XXV/MODULES/RECORDS.pm:2306 +#: ../html/rdisplay.tmpl:86 ../lib/XXV/MODULES/RECORDS.pm:2411 msgid "Edit recording" msgstr "Aufnahme bearbeiten" @@ -1094,7 +1094,7 @@ msgid "Stored recordings" msgstr "Gespeicherte Aufnahmen" #-------------------- -#: ../html/rlist.tmpl:120 ../lib/XXV/MODULES/RECORDS.pm:128 +#: ../html/rlist.tmpl:120 ../lib/XXV/MODULES/RECORDS.pm:139 msgid "Update recordings" msgstr "Lese die Aufnahmeliste neu ein" @@ -1109,7 +1109,7 @@ msgid "Delete recordings" msgstr "Aufnahmen löschen" #-------------------- -#: ../html/rlist.tmpl:127 ../lib/XXV/MODULES/RECORDS.pm:142 +#: ../html/rlist.tmpl:127 ../lib/XXV/MODULES/RECORDS.pm:153 msgid "Recover deleted recordings" msgstr "Gelöschte Aufnahmen wiederherstellen" @@ -1426,7 +1426,7 @@ msgid "Mute" msgstr "Mute" #-------------------- -#: ../html/widgets/player.tmpl:106 ../html/widgets/player.tmpl:70 ../lib/XXV/MODULES/SVDRP.pm:780 +#: ../html/widgets/player.tmpl:106 ../html/widgets/player.tmpl:70 ../lib/XXV/MODULES/SVDRP.pm:816 msgid "Unknown" msgstr "Unbekannt" @@ -1571,12 +1571,12 @@ msgid "Autotimer %s is activated." msgstr "Autotimer %s ist aktiviert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1142 ../lib/XXV/MODULES/SVDRP.pm:330 ../lib/XXV/MODULES/XMLTV.pm:691 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1142 ../lib/XXV/MODULES/SVDRP.pm:360 ../lib/XXV/MODULES/XMLTV.pm:691 msgid "Active" msgstr "Aktiv" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1145 ../lib/XXV/MODULES/RECORDS.pm:1792 ../lib/XXV/MODULES/RECORDS.pm:1931 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1145 ../lib/XXV/MODULES/RECORDS.pm:1895 ../lib/XXV/MODULES/RECORDS.pm:2037 msgid "Start time" msgstr "Startzeit" @@ -1606,7 +1606,7 @@ msgid "Autotimer '%s' found: %s" msgstr "Autotimer '%s' hat gefunden: %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:156 ../lib/XXV/MODULES/CHRONICLE.pm:177 ../lib/XXV/MODULES/CHRONICLE.pm:258 ../lib/XXV/MODULES/EPG.pm:698 ../lib/XXV/MODULES/EPG.pm:824 ../lib/XXV/MODULES/SHARE.pm:357 ../lib/XXV/MODULES/TIMERS.pm:1257 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:156 ../lib/XXV/MODULES/CHRONICLE.pm:177 ../lib/XXV/MODULES/CHRONICLE.pm:258 ../lib/XXV/MODULES/EPG.pm:698 ../lib/XXV/MODULES/EPG.pm:824 ../lib/XXV/MODULES/SHARE.pm:362 ../lib/XXV/MODULES/TIMERS.pm:1257 msgid "Day" msgstr "Datum" @@ -1846,7 +1846,7 @@ msgid "Buffer time in minutes before the scheduled start of a recording" msgstr "Pufferzeit in Minuten, vor dem zeitlichen Anfang der Aufnahme." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:852 ../lib/XXV/MODULES/AUTOTIMER.pm:866 ../lib/XXV/MODULES/AUTOTIMER.pm:879 ../lib/XXV/MODULES/AUTOTIMER.pm:895 ../lib/XXV/MODULES/AUTOTIMER.pm:911 ../lib/XXV/MODULES/CHANNELS.pm:1085 ../lib/XXV/MODULES/CHANNELS.pm:1116 ../lib/XXV/MODULES/CHANNELS.pm:1155 ../lib/XXV/MODULES/CHANNELS.pm:1168 ../lib/XXV/MODULES/CHANNELS.pm:1194 ../lib/XXV/MODULES/CHANNELS.pm:1220 ../lib/XXV/MODULES/CHANNELS.pm:1233 ../lib/XXV/MODULES/CHANNELS.pm:1246 ../lib/XXV/MODULES/CHANNELS.pm:1259 ../lib/XXV/MODULES/GRAB.pm:105 ../lib/XXV/MODULES/GRAB.pm:249 ../lib/XXV/MODULES/GRAB.pm:257 ../lib/XXV/MODULES/GRAB.pm:36 ../lib/XXV/MODULES/GRAB.pm:50 ../lib/XXV/MODULES/GRAB.pm:73 ../lib/XXV/MODULES/GRAB.pm:92 ../lib/XXV/MODULES/RECORDS.pm:103 ../lib/XXV/MODULES/RECORDS.pm:2237 ../lib/XXV/MODULES/RECORDS.pm:2251 ../lib/XXV/MODULES/STREAM.pm:100 ../lib/XXV/MODULES/STREAM.pm:114 ../lib/XXV/MODULES/SVDRP.pm:234 ../lib/XXV/MODULES/TIMERS.pm:35 ../lib/XXV/MODULES/TIMERS.pm:48 ../lib/XXV/MODULES/TIMERS.pm:62 ../lib/XXV/MODULES/TIMERS.pm:744 ../lib/XXV/MODULES/TIMERS.pm:76 ../lib/XXV/MODULES/TIMERS.pm:760 ../lib/XXV/MODULES/TIMERS.pm:89 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:852 ../lib/XXV/MODULES/AUTOTIMER.pm:866 ../lib/XXV/MODULES/AUTOTIMER.pm:879 ../lib/XXV/MODULES/AUTOTIMER.pm:895 ../lib/XXV/MODULES/AUTOTIMER.pm:911 ../lib/XXV/MODULES/CHANNELS.pm:1085 ../lib/XXV/MODULES/CHANNELS.pm:1116 ../lib/XXV/MODULES/CHANNELS.pm:1155 ../lib/XXV/MODULES/CHANNELS.pm:1168 ../lib/XXV/MODULES/CHANNELS.pm:1194 ../lib/XXV/MODULES/CHANNELS.pm:1220 ../lib/XXV/MODULES/CHANNELS.pm:1233 ../lib/XXV/MODULES/CHANNELS.pm:1246 ../lib/XXV/MODULES/CHANNELS.pm:1259 ../lib/XXV/MODULES/GRAB.pm:105 ../lib/XXV/MODULES/GRAB.pm:249 ../lib/XXV/MODULES/GRAB.pm:257 ../lib/XXV/MODULES/GRAB.pm:36 ../lib/XXV/MODULES/GRAB.pm:50 ../lib/XXV/MODULES/GRAB.pm:73 ../lib/XXV/MODULES/GRAB.pm:92 ../lib/XXV/MODULES/RECORDS.pm:114 ../lib/XXV/MODULES/RECORDS.pm:2342 ../lib/XXV/MODULES/RECORDS.pm:2356 ../lib/XXV/MODULES/STREAM.pm:100 ../lib/XXV/MODULES/STREAM.pm:114 ../lib/XXV/MODULES/SVDRP.pm:255 ../lib/XXV/MODULES/TIMERS.pm:35 ../lib/XXV/MODULES/TIMERS.pm:48 ../lib/XXV/MODULES/TIMERS.pm:62 ../lib/XXV/MODULES/TIMERS.pm:744 ../lib/XXV/MODULES/TIMERS.pm:76 ../lib/XXV/MODULES/TIMERS.pm:760 ../lib/XXV/MODULES/TIMERS.pm:89 msgid "Value incorrect!" msgstr "Der Wert ist nicht korrekt!" @@ -1866,7 +1866,7 @@ msgid "Toggle autotimer on or off 'aid'" msgstr "Umschalten der Autotimer zwischen Ein und Aus 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:885 ../lib/XXV/MODULES/RECORDS.pm:2244 ../lib/XXV/MODULES/TIMERS.pm:734 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:885 ../lib/XXV/MODULES/RECORDS.pm:2349 ../lib/XXV/MODULES/TIMERS.pm:734 msgid "Priority (%d ... %d)" msgstr "Priorität (%d ... %d)" @@ -1876,7 +1876,7 @@ msgid "Sorry, but the maximum priority is limited to %d!" msgstr "Entschuldigung, aber die maximale Priorität ist auf %d begrenzt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:901 ../lib/XXV/MODULES/RECORDS.pm:2230 ../lib/XXV/MODULES/TIMERS.pm:750 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:901 ../lib/XXV/MODULES/RECORDS.pm:2335 ../lib/XXV/MODULES/TIMERS.pm:750 msgid "Lifetime (%d ... %d)" msgstr "Lebenszeit (%d ... %d)" @@ -2275,7 +2275,7 @@ msgid "EPG table contains %d entries and since the last login on %s %d new entri msgstr "Die EPG Tabelle enthält %d Einträge und seit dem letzten Anmeldung am %s, %d neue Einträge" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:1700 ../lib/XXV/MODULES/GRAB.pm:241 ../lib/XXV/MODULES/RECORDS.pm:2959 ../lib/XXV/MODULES/VTX.pm:1457 +#: ../lib/XXV/MODULES/EPG.pm:1700 ../lib/XXV/MODULES/GRAB.pm:241 ../lib/XXV/MODULES/RECORDS.pm:3068 ../lib/XXV/MODULES/VTX.pm:1457 msgid "Sorry, get image is'nt supported" msgstr "Entschuldigung, Bilder werden nicht unterstützt!" @@ -3235,246 +3235,261 @@ msgid "Please wait, search for new covers ..." msgstr "Bitte warten, suche nach neuen Plattenhüllen ..." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:110 +#: ../lib/XXV/MODULES/RECORDS.pm:100 +msgid "VDR compiled for VFAT system (VFAT=1)" +msgstr "Setze auf ja, wenn dein vdr kompiliert wurde für das VFAT System (VFAT=1)" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:1028 ../lib/XXV/MODULES/RECORDS.pm:1030 +msgid "Get information on recordings ..." +msgstr "Hole Informationen über Aufnahmen ..." + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:105 +msgid "Preview image width" +msgstr "Breite der Vorschaubilder" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:121 msgid "Display recording 'rid'" msgstr "Zeige Aufnahme 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:116 +#: ../lib/XXV/MODULES/RECORDS.pm:127 msgid "List of recordings" msgstr "Aufnahmenliste" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:122 +#: ../lib/XXV/MODULES/RECORDS.pm:133 msgid "Search recordings 'text'" msgstr "Sucht Aufnahmen 'text'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:135 +#: ../lib/XXV/MODULES/RECORDS.pm:146 msgid "Delete recording 'rid'" msgstr "Aufnahme löschen 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:149 +#: ../lib/XXV/MODULES/RECORDS.pm:160 msgid "Edit recording 'rid'" msgstr "Aufnahme bearbeiten 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:156 +#: ../lib/XXV/MODULES/RECORDS.pm:167 msgid "Convert recording 'rid'" msgstr "Aufnahme konvertieren 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1612 +#: ../lib/XXV/MODULES/RECORDS.pm:1713 msgid "No recording defined for display! Please use rdisplay 'rid'" msgstr "Keine Aufnahme zum Anzeigen definiert! Bitte verwende rdisplay 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:163 +#: ../lib/XXV/MODULES/RECORDS.pm:174 msgid "Play recording 'rid' in the VDR." msgstr "Spiele Aufnahme 'rid' im VDR" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1650 ../lib/XXV/MODULES/RECORDS.pm:1690 ../lib/XXV/MODULES/RECORDS.pm:1739 ../lib/XXV/MODULES/RECORDS.pm:2116 ../lib/XXV/MODULES/RECORDS.pm:2207 ../lib/XXV/MODULES/RECORDS.pm:2494 -msgid "Recording '%s' does not exist in the database!" -msgstr "Aufnahme '%s' existiert nicht in der Datenbank!" +#: ../lib/XXV/MODULES/RECORDS.pm:1751 ../lib/XXV/MODULES/RECORDS.pm:1791 ../lib/XXV/MODULES/RECORDS.pm:1841 ../lib/XXV/MODULES/RECORDS.pm:2221 ../lib/XXV/MODULES/RECORDS.pm:2311 ../lib/XXV/MODULES/RECORDS.pm:2601 +msgid "This recording does not exist in the database!" +msgstr "Diese Aufnahme existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1680 ../lib/XXV/MODULES/RECORDS.pm:1729 +#: ../lib/XXV/MODULES/RECORDS.pm:1781 ../lib/XXV/MODULES/RECORDS.pm:1831 msgid "No recording defined for playback! Please use rplay 'rid'." msgstr "Keine Aufnahme zum Wiedergabe definiert! Bitte verwende rplay 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:170 +#: ../lib/XXV/MODULES/RECORDS.pm:181 msgid "Cut recording 'rid' in vdr" msgstr "Schneide Aufnahme 'rid' im VDR" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1788 ../lib/XXV/MODULES/RECORDS.pm:1927 +#: ../lib/XXV/MODULES/RECORDS.pm:1891 ../lib/XXV/MODULES/RECORDS.pm:2033 msgid "Index" msgstr "Index" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:190 +#: ../lib/XXV/MODULES/RECORDS.pm:201 msgid "Create event entries if a recording has been deleted." msgstr "Erzeuge Eventeinträge, wenn eine Aufnahme gelöscht wurde." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2044 +#: ../lib/XXV/MODULES/RECORDS.pm:2150 msgid "No recording defined for deletion! Please use rdelete 'id'." msgstr "Keine Aufnahme zum Löschen definiert! Bitte verwende rdelete 'rid'." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2122 +#: ../lib/XXV/MODULES/RECORDS.pm:2226 msgid "Recording '%s' to delete" msgstr "Aufnahme '%s' wird gelöscht" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2158 +#: ../lib/XXV/MODULES/RECORDS.pm:2262 msgid "No recording to delete!" msgstr "Keine Aufnahme zum Löschen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:216 +#: ../lib/XXV/MODULES/RECORDS.pm:227 msgid "Recording deleted: %s" msgstr "Aufnahme gelöscht: %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2184 +#: ../lib/XXV/MODULES/RECORDS.pm:2288 msgid "No recording defined for editing!" msgstr "Keine Aufnahme-ID zum Bearbeiten!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:220 +#: ../lib/XXV/MODULES/RECORDS.pm:231 msgid "Subtitle: %s" msgstr "Serientitel: %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2224 ../lib/XXV/MODULES/RECORDS.pm:2830 ../lib/XXV/MODULES/TIMERS.pm:628 +#: ../lib/XXV/MODULES/RECORDS.pm:2329 ../lib/XXV/MODULES/RECORDS.pm:2939 ../lib/XXV/MODULES/TIMERS.pm:628 msgid "Title of recording" msgstr "Titel der Aufnahme" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2261 +#: ../lib/XXV/MODULES/RECORDS.pm:2366 msgid "Undefined" msgstr "Unbestimmt" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2271 ../lib/XXV/MODULES/STREAM.pm:215 +#: ../lib/XXV/MODULES/RECORDS.pm:2376 ../lib/XXV/MODULES/STREAM.pm:215 msgid "This channel '%s' does not exist!" msgstr "Dieser Kanal '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2291 +#: ../lib/XXV/MODULES/RECORDS.pm:2396 msgid "Video" msgstr "Video" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2296 +#: ../lib/XXV/MODULES/RECORDS.pm:2401 msgid "Audio" msgstr "Audio" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2301 +#: ../lib/XXV/MODULES/RECORDS.pm:2406 msgid "Cut marks" msgstr "Schnittmarken" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2315 ../lib/XXV/MODULES/RECORDS.pm:2809 ../lib/XXV/MODULES/RECORDS.pm:749 ../lib/XXV/MODULES/STREAM.pm:338 +#: ../lib/XXV/MODULES/RECORDS.pm:2420 ../lib/XXV/MODULES/RECORDS.pm:2918 ../lib/XXV/MODULES/RECORDS.pm:844 ../lib/XXV/MODULES/STREAM.pm:338 msgid "Missing video directory on %s!" msgstr "Kein Videoverzeichnis auf %s gefunden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2345 ../lib/XXV/MODULES/RECORDS.pm:2353 +#: ../lib/XXV/MODULES/RECORDS.pm:2450 ../lib/XXV/MODULES/RECORDS.pm:2458 msgid "Couldn't write file '%s' : %s" msgstr "Konnte Datei '%s' nicht schreiben : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2372 ../lib/XXV/MODULES/RECORDS.pm:2390 +#: ../lib/XXV/MODULES/RECORDS.pm:2477 ../lib/XXV/MODULES/RECORDS.pm:2495 msgid "Recording: '%s', couldn't move to '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht nach '%s' verschoben werden : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2386 +#: ../lib/XXV/MODULES/RECORDS.pm:2491 msgid "Recording: '%s', couldn't mkpath: '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht Verzeichnis '%s' nicht erstellen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2397 +#: ../lib/XXV/MODULES/RECORDS.pm:2502 msgid "Recording: '%s', couldn't remove '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht '%s' nicht entfernen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2428 ../lib/XXV/MODULES/RECORDS.pm:2430 +#: ../lib/XXV/MODULES/RECORDS.pm:2533 ../lib/XXV/MODULES/RECORDS.pm:2535 msgid "Recording edited!" msgstr "Aufnahme wurde bearbeitet!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2438 +#: ../lib/XXV/MODULES/RECORDS.pm:2543 msgid "Recording was'nt changed!" msgstr "Aufnahme wurde nicht verändert!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2477 +#: ../lib/XXV/MODULES/RECORDS.pm:2582 msgid "No reccmds.conf on your system!" msgstr "Keine reccmds.conf auf dem System!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2482 +#: ../lib/XXV/MODULES/RECORDS.pm:2587 msgid "Please use rconvert 'cmdid_rid'" msgstr "Bitte verwende rconvert 'cmdid_rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2486 +#: ../lib/XXV/MODULES/RECORDS.pm:2591 msgid "Command" msgstr "Kommando" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2493 +#: ../lib/XXV/MODULES/RECORDS.pm:2598 msgid "Couldn't find this command ID!" msgstr "Kann diese Kommando-ID nicht finden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2507 +#: ../lib/XXV/MODULES/RECORDS.pm:2616 msgid "Call %s '%s', standard error output :" msgstr "Aufruf %s '%s', Standardfehlerausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2510 +#: ../lib/XXV/MODULES/RECORDS.pm:2619 msgid "Call %s '%s', standard output :" msgstr "Aufruf %s '%s', Ausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2514 +#: ../lib/XXV/MODULES/RECORDS.pm:2623 msgid "Sorry! Couldn't call %s '%s'! %s" msgstr "Entschuldigung! Konnte %s '%s' nicht aufrufen! %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2518 +#: ../lib/XXV/MODULES/RECORDS.pm:2627 msgid "Back to recording list" msgstr "Zurück zur Aufnahmeliste" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2555 +#: ../lib/XXV/MODULES/RECORDS.pm:2664 msgid "%d new recordings since last report time %s" msgstr "%d neue Aufnahmen seit der letzten Reportzeit %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2820 +#: ../lib/XXV/MODULES/RECORDS.pm:29 +msgid "This module manages recordings." +msgstr "Dieses Modul verwaltet die Aufnahmen." + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:2929 msgid "There none recoverable recordings!" msgstr "Es sind keine wiederherstellbaren Aufnahmen vorhanden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2850 +#: ../lib/XXV/MODULES/RECORDS.pm:2959 msgid "Recover recording" msgstr "Aufnahme wiederherstellen" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2856 +#: ../lib/XXV/MODULES/RECORDS.pm:2965 msgid "Can't recover recording, maybe was this in the meantime deleted!" msgstr "Aufnahme konnte nicht wiederhergestellt werden, möglicherweise wurde sie in der zwischenzeit gelöscht!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2865 +#: ../lib/XXV/MODULES/RECORDS.pm:2974 msgid "Recover recording, couldn't rename '%s' to %s : %s" msgstr "Wiederhergestellen der Aufnahme, konnte '%s' nicht in %s umbenennen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2880 ../lib/XXV/MODULES/RECORDS.pm:2882 +#: ../lib/XXV/MODULES/RECORDS.pm:2989 ../lib/XXV/MODULES/RECORDS.pm:2991 msgid "Recording recovered!" msgstr "Aufnahme wiederhergestellt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2890 +#: ../lib/XXV/MODULES/RECORDS.pm:2999 msgid "None recording was'nt recovered!" msgstr "Keine Aufnahme wurde wiederhergestellt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:29 -msgid "This module manages recordings." -msgstr "Dieses Modul verwaltet die Aufnahmen." - -#-------------------- #: ../lib/XXV/MODULES/RECORDS.pm:43 msgid "How often recordings are to be updated (in minutes)" msgstr "Wie oft sollen Aufnahmen eingelesen werden (in Minuten)" @@ -3486,105 +3501,105 @@ msgstr "Wie oft sollen Aufnahmen vollständig eingelesen werden (in Stunden)" #-------------------- #: ../lib/XXV/MODULES/RECORDS.pm:55 +msgid "Default order for series" +msgstr "Standardsortierung für Serien" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:58 +msgid "By date" +msgstr "Nach Datum" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:59 +msgid "By title" +msgstr "Nach Titel" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:65 msgid "Location of used program to produce thumbnails on your system." msgstr "Position des verwendeten Programms, zum Erzeugen der Vorschaubildern." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:599 +#: ../lib/XXV/MODULES/RECORDS.pm:694 msgid "Can't read recordings from %s !" msgstr "Konnte keine Aufnahmen auf %s einlesen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:61 +#: ../lib/XXV/MODULES/RECORDS.pm:71 msgid "The program used to create thumbnails" msgstr "Das verwendete Programm, um Vorschaubildern zu erzeugen" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:615 +#: ../lib/XXV/MODULES/RECORDS.pm:710 msgid "Used %s, total %s%s, free %s%s on '%s'" msgstr "Genutzt %s, Gesamt %s%s, Frei %s%s auf '%s'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:621 +#: ../lib/XXV/MODULES/RECORDS.pm:716 msgid "Unknown disc capacity on '%s'!" msgstr "Unbekannte Speicherkapazität auf '%s'!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:64 +#: ../lib/XXV/MODULES/RECORDS.pm:74 msgid "None" msgstr "Keines" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:669 +#: ../lib/XXV/MODULES/RECORDS.pm:764 msgid "Couldn't query recordings from database!" msgstr "Konnte keine Aufnahmen aus der Datenbank abfragen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:688 +#: ../lib/XXV/MODULES/RECORDS.pm:783 msgid "Update recording '%s'" msgstr "Aktualisiere Aufnahme '%s'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:73 +#: ../lib/XXV/MODULES/RECORDS.pm:83 msgid "Produce how many thumbnails" msgstr "Wieviele Vorschaubildern erzeugen?" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:741 +#: ../lib/XXV/MODULES/RECORDS.pm:836 msgid "Analyze recording '%s'" msgstr "Untersuche Aufnahme '%s'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:771 +#: ../lib/XXV/MODULES/RECORDS.pm:866 msgid "Can't add recording '%s' into database!" msgstr "Konnte Aufnahme '%s' nicht in Datenbank einfügen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:774 +#: ../lib/XXV/MODULES/RECORDS.pm:869 msgid "Can't assign recording '%s' to file!" msgstr "Kann Aufnahme '%s' keiner Datei zuordnen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:78 -msgid "Display recording list with thumbnails?" -msgstr "Zeige Aufnahmeliste mit Vorschaubildern?" - -#-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:781 +#: ../lib/XXV/MODULES/RECORDS.pm:876 msgid "Recording '%s' without id or unique title and date from '%s'!" msgstr "Aufnahme '%s' ohne ID oder eindeutigen Titel und Datum auf '%s'!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:83 -msgid "Common directory for preview images" -msgstr "Gemeinsames Verzeichnis für Vorschaubilder" +#: ../lib/XXV/MODULES/RECORDS.pm:88 +msgid "Display recording list with thumbnails?" +msgstr "Zeige Aufnahmeliste mit Vorschaubildern?" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:89 -msgid "VDR compiled for VFAT system (VFAT=1)" -msgstr "Setze auf ja, wenn dein vdr kompiliert wurde für das VFAT System (VFAT=1)" +#: ../lib/XXV/MODULES/RECORDS.pm:94 +msgid "Common directory for preview images" +msgstr "Gemeinsames Verzeichnis für Vorschaubilder" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:890 +#: ../lib/XXV/MODULES/RECORDS.pm:989 msgid "Write %d recordings to the database." msgstr "Schreibe %d Aufnahmen in die Datenbank." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:892 +#: ../lib/XXV/MODULES/RECORDS.pm:991 msgid "Write %d recordings to the database. Couldn't assign %d recordings." msgstr "Schreibe nur %d Aufnahmen in die Datenbank. Kann %d Aufnahmen nicht zuordnen." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:929 ../lib/XXV/MODULES/RECORDS.pm:931 -msgid "Get information on recordings ..." -msgstr "Hole Informationen über Aufnahmen ..." - -#-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:94 -msgid "Preview image width" -msgstr "Breite der Vorschaubilder" - -#-------------------- #: ../lib/XXV/MODULES/REMOTE.pm:17 msgid "This module emulate a remote control." msgstr "Dieses Modul emulieren eine Fernbedienung." @@ -3645,7 +3660,7 @@ msgid "This module register and run robots to fetch data from internet." msgstr "Dieses Modul verwaltet und startet Robots, um Daten aus dem Internet zu holen." #-------------------- -#: ../lib/XXV/MODULES/SHARE.pm:358 +#: ../lib/XXV/MODULES/SHARE.pm:363 msgid "Rank" msgstr "Platzierung" @@ -4045,96 +4060,96 @@ msgid "This module module manages connection to video disk recorder." msgstr "Das Modul verwaltet die Verbindung zu den Video Disk Rekordern." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:204 ../lib/XXV/MODULES/SVDRP.pm:293 +#: ../lib/XXV/MODULES/SVDRP.pm:225 ../lib/XXV/MODULES/SVDRP.pm:320 msgid "Definition of video disk recorder '%s' does not exist in the database!" msgstr "Definition '%s' des Video Disk Rekorder existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:216 +#: ../lib/XXV/MODULES/SVDRP.pm:237 msgid "Activate this definition" msgstr "Aktiviere diese Definition" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:220 +#: ../lib/XXV/MODULES/SVDRP.pm:241 msgid "Host or IP address of video disk recorder" msgstr "Host bzw. IP-Adresse des Video Disk Rekorder" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:226 +#: ../lib/XXV/MODULES/SVDRP.pm:247 msgid "Used Port of SVDRP" msgstr "Verwendeter SVDRP Port" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:241 +#: ../lib/XXV/MODULES/SVDRP.pm:262 msgid "Use as primary video disk recorder" msgstr "Verwende als primären Video Disk Rekorder" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:244 +#: ../lib/XXV/MODULES/SVDRP.pm:265 msgid "List of present source of DVB cards. (eg. S19.2E,S19.2E,T,T )" msgstr "Liste der vorhandenen Quellen der DVB Karten. (z.B. S19.2E,S19.2E,T,T )" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:248 +#: ../lib/XXV/MODULES/SVDRP.pm:269 msgid "Directory where recordings are stored" msgstr "Verzeichnis, wo die vdr Aufnahmen gespeichert sind" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:257 +#: ../lib/XXV/MODULES/SVDRP.pm:27 +msgid "Connection timeout defines after how many seconds an unrequited connection is terminated." +msgstr "Nach wievielen Sekunden wird eine unerwiderte Verbindung beendet." + +#-------------------- +#: ../lib/XXV/MODULES/SVDRP.pm:278 msgid "Edit video disk recorder definition" msgstr "Bearbeiten der Video Disk Rekorder Definition" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:258 +#: ../lib/XXV/MODULES/SVDRP.pm:279 msgid "Create new video disk recorder definition" msgstr "Erzeuge neue Video Disk Rekorder Definition" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:27 -msgid "Connection timeout defines after how many seconds an unrequited connection is terminated." -msgstr "Nach wievielen Sekunden wird eine unerwiderte Verbindung beendet." - -#-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:277 +#: ../lib/XXV/MODULES/SVDRP.pm:304 msgid "Video disk recorder definition saved!" msgstr "Video Disk Rekorder Definition wurde gespeichert!" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:289 +#: ../lib/XXV/MODULES/SVDRP.pm:316 msgid "No definition of video disk recorder for deletion! Please use sdelete 'id'." msgstr "Keine Definition eines Video Disk Rekorder zum Löschen! Bitte verwende sdelete 'id'." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:299 +#: ../lib/XXV/MODULES/SVDRP.pm:329 msgid "Definition of video disk recorder are %s deleted." msgstr "Definition '%s' des Video Disk Rekorder wurde gelöscht." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:331 +#: ../lib/XXV/MODULES/SVDRP.pm:35 +msgid "List defined video disk recorder." +msgstr "Zeige Definition der Video Disk Rekorder" + +#-------------------- +#: ../lib/XXV/MODULES/SVDRP.pm:361 msgid "Primary" msgstr "Primär" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:332 +#: ../lib/XXV/MODULES/SVDRP.pm:362 msgid "Host" msgstr "Host" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:333 +#: ../lib/XXV/MODULES/SVDRP.pm:363 msgid "Typ of Cards" msgstr "Art von Karten" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:334 +#: ../lib/XXV/MODULES/SVDRP.pm:364 msgid "Video directory" msgstr "Videoverzeichnis" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:35 -msgid "List defined video disk recorder." -msgstr "Zeige Definition der Video Disk Rekorder" - -#-------------------- #: ../lib/XXV/MODULES/SVDRP.pm:41 msgid "Create new video disk recorder definition." msgstr "Erzeuge neue Video Disk Rekorder Definition" @@ -4150,52 +4165,52 @@ msgid "Edit video disk recorder definition 'id'" msgstr "Bearbeiten Video Disk Rekorder Definition 'id'" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:585 -msgid "None video disk recorder defined in the database." -msgstr "Kein Video Disk Rekorder in der Datenbank definiert." - -#-------------------- #: ../lib/XXV/MODULES/SVDRP.pm:59 msgid "Status from video disk recorder." msgstr "Status des Video Disk Rekorder." #-------------------- +#: ../lib/XXV/MODULES/SVDRP.pm:621 +msgid "None video disk recorder defined in the database." +msgstr "Kein Video Disk Rekorder in der Datenbank definiert." + +#-------------------- #: ../lib/XXV/MODULES/SVDRP.pm:66 msgid "Send a command to video disk recorder." msgstr "Sende Befehl an Video Disk Rekorder." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:678 +#: ../lib/XXV/MODULES/SVDRP.pm:714 msgid "Error at command '%s' to %s:%s! %s" msgstr "Fehler im Kommando '%s' %s:%s! %s" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:732 +#: ../lib/XXV/MODULES/SVDRP.pm:768 msgid "No command defined! Please use scommand 'cmd'." msgstr "Kein Kommando definiert! Bitte verwende scommand 'cmd'" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:754 +#: ../lib/XXV/MODULES/SVDRP.pm:790 msgid "Recorder" msgstr "Rekorder" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:755 +#: ../lib/XXV/MODULES/SVDRP.pm:791 msgid "State" msgstr "Status" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:775 +#: ../lib/XXV/MODULES/SVDRP.pm:811 msgid "Online" msgstr "Verbunden" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:777 +#: ../lib/XXV/MODULES/SVDRP.pm:813 msgid "Offline" msgstr "Keine Verbindung" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:786 +#: ../lib/XXV/MODULES/SVDRP.pm:822 msgid "%d active recorder" msgstr "%d aktive Rekorder" diff --git a/locale/de/LC_MESSAGES/xxv.mo b/locale/de/LC_MESSAGES/xxv.mo Binary files differindex 95db76c..438378d 100644 --- a/locale/de/LC_MESSAGES/xxv.mo +++ b/locale/de/LC_MESSAGES/xxv.mo |
