VDRSeriesTimer.pl

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K (News)
(Beispiele)
 
(32 dazwischenliegende Versionen von 9 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
==News==
 
==News==
  
* 21.12.2006: 90 Episodenlisten. Einzelansicht, Einzeldownload und Download des Gesamtpaketes als tgz:<br>http://www.toppoint.de/~vejoun/cgi-bin/eplist.cgi
+
* 28.09.2009: Die Entwicklung ist langsam, aber nicht stehengeblieben. Ich arbeite an einem kompletten rewrite der das ganze einfacher und schneller machen wird. [[Benutzer:Vejoun|vejoun]] 14:32, 28. Sep 2009 (CEST)
 +
 
 +
* 28.09.2009: 400 Episodenlisten.
 +
 
 +
* 10.06.2008: Version 0.3.0-beta6
 +
 
 +
* 30.12.2007: Version 0.2.6
 +
 
 +
* 30.06.2007: Version 0.2.5; 234 Episodenlisten.
 +
 
 +
<!--
 +
 
 +
* 04.05.2007: Version 0.2.4.1 (Bugfix release); 225 Episodenlisten.
 +
 
 +
* 21.04.2007: Version 0.2.4; 218 Episodenlisten.
 +
 
 +
* 19.02.2007: Version 0.2.3; 189 Episodenlisten.
 +
 
 +
* 13.02.2007: Version 0.2.2; 120 Episodenlisten.
 +
 
 +
* 08.01.2007: Version 0.2.1; 104 Episodenlisten.
 +
 
 +
* 21.12.2006: 90 Episodenlisten. Einzelansicht, Einzeldownload und Download des Gesamtpaketes als tgz
 +
 
 +
* 13.12.2006: Version 0.1.3 - Jetzt mit Text::LevenshteinXS anstelle von Text::WagnerFischer. Download: [[VDRSeriesTimer.pl#Links]]
 +
-->
  
 
==Beschreibung==
 
==Beschreibung==
Zeile 24: Zeile 49:
 
==Softwareanforderungen==
 
==Softwareanforderungen==
  
* Perl
 
* Perl-Module ''Getopt::Long, Pod::Usage, File::Basename, Text::LevenshteinXS''
 
 
* vdr >= ''1.4.0''
 
* vdr >= ''1.4.0''
 
* epgsearch >= ''0.9.19''
 
* epgsearch >= ''0.9.19''
 +
* Perl
 +
* Perl-Module ''Getopt::Long, Pod::Usage, File::Basename, Text::LevenshteinXS'' <br> Installation via CPAN:<br>
 +
$ perl -MCPAN -e 'install <Paketname>'
 +
 +
Unter Debian: apt-get install perl-modules libgetopt-mixed-perl; perl -MCPAN -e 'install Text::LevenshteinXS'
  
 
==Installation==
 
==Installation==
  
 +
# HISTORY lesen
 
# Das Script in den $PATH kopieren, z.B. nach ''/usr/local/bin/''
 
# Das Script in den $PATH kopieren, z.B. nach ''/usr/local/bin/''
# Einmal unter dem User, unter dem VDR läuft, aufrufen mit ''VDRSeriesTimer.pl --options''<br />Es wird eine globale conf erstellt: ~/.VDRSeriesTimer.conf
+
# Einmal unter dem User, unter dem VDR läuft, aufrufen mit ''VDRSeriesTimer.pl --options''<br />Es wird eine globale conf erstellt: '''~/.VDRSeriesTimer.conf'''
# In dieser Datei die Variable ''ListsDir'' auf den Pfad zu den Episodenlisten setzen
+
# ''VDRSeriesTimer.pl --man'' lesen
 +
# In der Datei '''~/.VDRSeriesTimer.conf''' die Variable ''ListsDir'' auf den Pfad zu den Episodenlisten setzen
 
# ''VDRSeriesTimer.pl --options'' zeigt die aktuellen Optionen<br />''VDRSeriesTimer.pl --lists'' zeigt die gefundenen Listen
 
# ''VDRSeriesTimer.pl --options'' zeigt die aktuellen Optionen<br />''VDRSeriesTimer.pl --lists'' zeigt die gefundenen Listen
# '''epgsearchuservars.conf''' editieren und dies hinzufügen:
+
# /<vdr-conf-dir>/plugins/epgsearch/'''epgsearchuservars.conf''' editieren (oder anlegen wenn nicht vorhanden) und dies hinzufügen:
 
  %Season%=system(VDRSeriesTimer.pl,--title %Title% --subtitle %Subtitle% --episode %Episode% --category %Category% --genre %Genre% --date %date% --time %time% --channel %chnr% --timet %time_lng%)
 
  %Season%=system(VDRSeriesTimer.pl,--title %Title% --subtitle %Subtitle% --episode %Episode% --category %Category% --genre %Genre% --date %date% --time %time% --channel %chnr% --timet %time_lng%)
 
   
 
   
Zeile 65: Zeile 95:
 
===1. Suche den Subtitle anhand der Episodennummer===
 
===1. Suche den Subtitle anhand der Episodennummer===
  
  SearchEpisode = yes  
+
  CompareSubtitle = yes  
 
  KeepEPGSubtitle = no
 
  KeepEPGSubtitle = no
  
Zeile 88: Zeile 118:
 
===2. Suche die Nummern anhand des Subtitles===
 
===2. Suche die Nummern anhand des Subtitles===
  
  SearchSubtitle = yes
+
  CompareEpisode  = yes
 
  KeepEPGSubtitle = no
 
  KeepEPGSubtitle = no
  
Zeile 126: Zeile 156:
 
  Serie~Star Trek: Das nächste Jahrhundert~07x01 - 153. Angriff der Borg (Teil 2)
 
  Serie~Star Trek: Das nächste Jahrhundert~07x01 - 153. Angriff der Borg (Teil 2)
  
 +
===3. Korrekte Benennung von Doppelfolgen===
 +
 +
Standardmäßig erwartet VDRSeriesTimer ein '/' als Trennzeichen der Namen der einzelnen Episoden.
 +
Leider setzen dies nicht alle Sender auch so um, so dass man hier selbst Hand anlegen muss.
 +
 +
Es empfiehlt sich, für die jeweilige Serie eine eigene .conf-Datei unter /etc/eplists/series.d/ anzulegen.
 +
Entscheidend ist der Parameter MultiRegex:
 +
 +
MultiRegex        = "(?:\s*)(?:(\d+)\.\s+)?(.*?)\s*(?:\/|$)"
 +
 +
Dies ist der Ausdruck für ein '/' als Trennzeichen. Wird nun z.B. ein '-' als Trennzeichen verwendet, muss der Parameter so aussehen:
 +
 +
MultiRegex        = "(?:\s*)(?:(\d+)\.\s+)?(.*?)\s*(?:-|$)"
 +
 +
Darüberhinaus sollte zumindest der Parameter
 +
 +
MultiDetection    = yes
 +
 +
gesetzt sein.
 +
 +
Als Beispiel sei hier die Serie Marsupilami genannt, bei der Doppelfolgen durch '-' getrennt werden. Eine korrekte Ergebnisse liefernde /etc/eplists/series.d/Marsupilami.conf sieht dann so aus:
 +
 +
# Per series configuration file for VDRSeriesTimer.pl.
 +
# See "VDRSeriesTimer.pl --help" for help.
 +
#
 +
UseShortTitle    = yes
 +
ShortTitle        = "Marsupilami"
 +
ListLanguage      = "de,en"
 +
Protected        = yes
 +
FormatPrefix      = "Kinder~%T~"
 +
Format            = "S%1s.E%e - %3n %S"
 +
FormatSpacer      = " / "
 +
Fuzzy            = 0.20
 +
#SendEMail        = no
 +
ChangeEPG        = yes
 +
KeepEPGSubtitle  = yes
 +
MultiRegex        = "(?:\s*)(?:(\d+)\.\s+)?(.*?)\s*(?:-|$)"
 +
MultiDetection    = yes
 +
CompareSubtitle  = yes
 +
CompareEpisode    = no
 +
#EpisodeIncrement  = 0
 +
#Directory        = ""
 +
#Category          = ""
 +
#Genre            = ""
 +
#Verbose          = 0
 +
#LogFile          = ""
 +
DoubleIfLongerAs  = 20
 +
#StartWithSeason  = 0
 +
Fallback          = yes
  
 
<!-- ==Bedienung== -->
 
<!-- ==Bedienung== -->
Zeile 131: Zeile 210:
 
===Parameter===
 
===Parameter===
  
$ VDRSeriesTimer.pl -h
+
$ VDRSeriesTimer.pl -h
 
  Usage:
 
  Usage:
 
     VDRSeriesTimer.pl ( -c=<> | -ec=<> ) --t=<> (--sub=<> | --ep=<>)
 
     VDRSeriesTimer.pl ( -c=<> | -ec=<> ) --t=<> (--sub=<> | --ep=<>)
Zeile 146: Zeile 225:
 
   
 
   
 
       --title | -t                series title
 
       --title | -t                series title
       --subtitle | -sub           series subtitle
+
       --subtitle | -s           series subtitle
 
       --lists | -l                lists episodes files
 
       --lists | -l                lists episodes files
 
       --options                    print options/variables and exit
 
       --options                    print options/variables and exit
Zeile 154: Zeile 233:
 
       --episode | -ep              overall episode number
 
       --episode | -ep              overall episode number
 
   
 
   
       --format | -f                Output format, default: "%D~%T~%sx%e - %n. %S"
+
       --formatprefix | -fp        First part of the output string, default: "%D~%T~"
 +
 +
      --format | -f                Output format, default: "%sx%e - %n. %S"
 +
 +
      --formatspacer | -fs        How to seperate the subtitles if there is more than one,
 +
                                    default: " / "
 +
 
                                       %T - Title
 
                                       %T - Title
 
                                       %S - Subtitle
 
                                       %S - Subtitle
Zeile 166: Zeile 251:
 
                                     Example:
 
                                     Example:
 
                                       Smallville~05x10 - 098. Lex gegen Jonathan
 
                                       Smallville~05x10 - 098. Lex gegen Jonathan
 
      --formatdouble | -fd        Output format, default: "%D~%T~%s1x%e1 - %n1. %S1 / %s2x%e2 - %n2. %S2"
 
                                      %T  - Title
 
                                      %S1 - Subtitle 1
 
                                      %s1 - Season number 1
 
                                      %e1 - Episode number 1
 
                                      %n1 - Episode number over all 1
 
                                      %S2 - Subtitle 2
 
                                      %s2 - Season number 2
 
                                      %e2 - Episode number 2
 
                                      %n2 - Episode number over all 2
 
                                      %D  - Directory
 
                                      %C  - Category
 
                                      %G  - Genre
 
 
                                    Example:
 
                                      Andromeda~03x05 - 049. An fernen Ufern / 03x06 - 050. Windhunde des Krieges
 
 
   
 
   
 
       --category                  category
 
       --category                  category
Zeile 197: Zeile 265:
 
       --dry-run | -dry            don't change EPG via SVDRP or any file
 
       --dry-run | -dry            don't change EPG via SVDRP or any file
 
       --version                    show version number
 
       --version                    show version number
 +
 +
      --upgrade                    upgrade old conf's
 +
      --forceupgrade              upgrade all conf's, never mind which version they have
 
   
 
   
 
  Options:
 
  Options:
Zeile 217: Zeile 288:
  
 
* [http://www.constabel.net/vdr/scripts.de.htm Homepage des Scripts]
 
* [http://www.constabel.net/vdr/scripts.de.htm Homepage des Scripts]
* [http://www.toppoint.de/~vejoun/cgi-bin/eplist.cgi Episodenlisten]
+
* [http://eplists.constabel.net/ Episodenlisten]
 +
 
 +
<!--
 +
==Alternative==
 +
Als Alternative, arbeiten folgende Plugins direkt mit den (gegebenenfalls verfügbaren) Daten der Fernsehsender
 +
* [[Series Link|Series Link recording function]]
 +
* [[Series-record-plugin|VDR Series Record Plugin]]
 +
-->
  
 
[[Kategorie:Skripte]]
 
[[Kategorie:Skripte]]

Aktuelle Version vom 7. März 2013, 11:08 Uhr

Inhaltsverzeichnis

[Bearbeiten] News

  • 28.09.2009: Die Entwicklung ist langsam, aber nicht stehengeblieben. Ich arbeite an einem kompletten rewrite der das ganze einfacher und schneller machen wird. vejoun 14:32, 28. Sep 2009 (CEST)
  • 28.09.2009: 400 Episodenlisten.
  • 10.06.2008: Version 0.3.0-beta6
  • 30.12.2007: Version 0.2.6
  • 30.06.2007: Version 0.2.5; 234 Episodenlisten.


[Bearbeiten] Beschreibung

Autor: Mike Constabel

Dieses Script wird über die epgsearchuservars von epgsearch aufgerufen und erweitert die zu programmierenden Timer um Informationen wie Staffelnummer, Episodennummer etc.

Beispiel: Normalerweise würde ein programmierter Timer z.B. so aussehen

Serie~Star Trek: Das nächste Jahrhundert~Indiskretionen

Dieses Script erzeugt dies:

Serie~Star Trek: Das nächste Jahrhundert~07x02 - 154. Indiskretionen

Die Informationen bezieht das Script aus Episodenlisten, von denen bereits viele bereitstehen und die auch sehr einfach erzeugt und erweitert werden können. Die Episodenlisten sind dieselben wie die von dem Projekt Rec rename season serie verwendeten.

Die Möglichkeiten, aber auch die Konfigurationsoptionen, sind umfangreich und werden hier nach und nach erläutert.


[Bearbeiten] Softwareanforderungen

  • vdr >= 1.4.0
  • epgsearch >= 0.9.19
  • Perl
  • Perl-Module Getopt::Long, Pod::Usage, File::Basename, Text::LevenshteinXS
    Installation via CPAN:
$ perl -MCPAN -e 'install <Paketname>'

Unter Debian: apt-get install perl-modules libgetopt-mixed-perl; perl -MCPAN -e 'install Text::LevenshteinXS'

[Bearbeiten] Installation

  1. HISTORY lesen
  2. Das Script in den $PATH kopieren, z.B. nach /usr/local/bin/
  3. Einmal unter dem User, unter dem VDR läuft, aufrufen mit VDRSeriesTimer.pl --options
    Es wird eine globale conf erstellt: ~/.VDRSeriesTimer.conf
  4. VDRSeriesTimer.pl --man lesen
  5. In der Datei ~/.VDRSeriesTimer.conf die Variable ListsDir auf den Pfad zu den Episodenlisten setzen
  6. VDRSeriesTimer.pl --options zeigt die aktuellen Optionen
    VDRSeriesTimer.pl --lists zeigt die gefundenen Listen
  7. /<vdr-conf-dir>/plugins/epgsearch/epgsearchuservars.conf editieren (oder anlegen wenn nicht vorhanden) und dies hinzufügen:
%Season%=system(VDRSeriesTimer.pl,--title %Title% --subtitle %Subtitle% --episode %Episode% --category %Category% --genre %Genre% --date %date% --time %time% --channel %chnr% --timet %time_lng%)

%DateVar%=%time_w% %date% %time%
%SerieSD%=%Subtitle% ? %Subtitle% : %DateVar%
%SerieVar1%=Serie~%Title%~%SerieSD%
%Serie%=%Season% ? %Season% : %SerieVar1%

Sollte man kein erweitertes EPG, z.B. von tvmovie oder hörzu, haben und somit keine Episodennummer etc, reicht auch die Kurzform:

%Season%=system(VDRSeriesTimer.pl,--title %Title% --subtitle %Subtitle% --date %date% --time %time% --channel %chnr% --timet %time_lng%)

%DateVar%=%time_w% %date% %time%
%SerieSD%=%Subtitle% ? %Subtitle% : %DateVar%
%SerieVar1%=Serie~%Title%~%SerieSD%
%Serie%=%Season% ? %Season% : %SerieVar1%

Im Suchtimer als Verzeichnis nun die Variable %Serie% verwenden. Möchtest Du diese Variable mit der Taste Auswahl auswählen können, musst Du diese Variable mit in die Datei epgsearchdirs.conf schreiben, siehe man epgsearchdirs.conf.

Weitere Informationen wie auch eine Erklärung aller Optionen finden sich in der integrierten man-Page: VDRSeriesTimer.pl --man

[Bearbeiten] Beispiele

Von der Kommandozeile mit -v aufgerufen, damit man auch etwas sieht:

[Bearbeiten] 1. Suche den Subtitle anhand der Episodennummer

CompareSubtitle = yes 
KeepEPGSubtitle = no
$ VDRSeriesTimer.pl --title 'Star Trek: Das nächste Jahrhundert' --subtitle 'Angriff der Borg' --episode '153' -v

File <Star Trek: Das nächste Jahrhundert> is like title <Star Trek: Das nächste Jahrhundert> with a distance from 0 (max 7),
using file </etc/vdr.conf/plugins/epgsearch/episodes/Star Trek: Das nächste Jahrhundert.episodes>

Verbose: 1

Found "153" is equal to the given "153", so using
<07 1 153 Angriff der Borg (Teil 2)>


Script VDRSeriesTimer.pl info: Start 1162114896; End: 1162114897; Runs for 1s; Changes count: 0;
Title: <Star Trek: Das nächste Jahrhundert>; Subtitle: <Angriff der Borg>

Result:

Serie~Star Trek: Das nächste Jahrhundert~07x01 - 153. Angriff der Borg (Teil 2)

[Bearbeiten] 2. Suche die Nummern anhand des Subtitles

CompareEpisode  = yes
KeepEPGSubtitle = no
$ VDRSeriesTimer.pl --title 'Star Trek: Das nächste Jahrhundert' --subtitle 'Angriff der Borg, Teil 2' --episode '153' -v

File <Star Trek: Das nächste Jahrhundert> is like title <Star Trek: Das nächste Jahrhundert> with a distance from 0 (max 7),
using file </etc/vdr.conf/plugins/epgsearch/episodes/Star Trek: Das nächste Jahrhundert.episodes>

Verbose: 1

Run 1: Found "Angriff der Borg (Teil 1)", changed to "Angriff der Borg (Teil 1)",
      is like the given "Angriff der Borg, Teil 2", changed to "Angriff der Borg, Teil 2",
      with a distance from 4 (max 5), so using
      <06 26 152 Angriff der Borg (Teil 1)>

Run 1: Found "Angriff der Borg (Teil 2)", changed to "Angriff der Borg (Teil 2)",
      is like the given "Angriff der Borg, Teil 2", changed to "Angriff der Borg, Teil 2",
      with a distance from 3 (max 5), so using
      <07 1 153 Angriff der Borg (Teil 2)>

Run 2: Found "Angriff der Borg (Teil 1)", changed to "Angriff der Borg 1",
      is like the given "Angriff der Borg, Teil 2", changed to "Angriff der Borg 2",
      with a distance from 1 (max 4), so using
      <06 26 152 Angriff der Borg (Teil 1)>

Run 2: Found "Angriff der Borg (Teil 2)", changed to "Angriff der Borg 2",
      is like the given "Angriff der Borg, Teil 2", changed to "Angriff der Borg 2",
      with a distance from 0 (max 4), so using
      <07 1 153 Angriff der Borg (Teil 2)>


Script VDRSeriesTimer.pl info: Start 1162115051; End: 1162115056; Runs for 5s; Changes count: 0;
Title: <Star Trek: Das nächste Jahrhundert>; Subtitle: <Angriff der Borg, Teil 2>

Result:

Serie~Star Trek: Das nächste Jahrhundert~07x01 - 153. Angriff der Borg (Teil 2)

[Bearbeiten] 3. Korrekte Benennung von Doppelfolgen

Standardmäßig erwartet VDRSeriesTimer ein '/' als Trennzeichen der Namen der einzelnen Episoden. Leider setzen dies nicht alle Sender auch so um, so dass man hier selbst Hand anlegen muss.

Es empfiehlt sich, für die jeweilige Serie eine eigene .conf-Datei unter /etc/eplists/series.d/ anzulegen. Entscheidend ist der Parameter MultiRegex:

MultiRegex        = "(?:\s*)(?:(\d+)\.\s+)?(.*?)\s*(?:\/|$)"

Dies ist der Ausdruck für ein '/' als Trennzeichen. Wird nun z.B. ein '-' als Trennzeichen verwendet, muss der Parameter so aussehen:

MultiRegex        = "(?:\s*)(?:(\d+)\.\s+)?(.*?)\s*(?:-|$)"

Darüberhinaus sollte zumindest der Parameter

MultiDetection    = yes

gesetzt sein.

Als Beispiel sei hier die Serie Marsupilami genannt, bei der Doppelfolgen durch '-' getrennt werden. Eine korrekte Ergebnisse liefernde /etc/eplists/series.d/Marsupilami.conf sieht dann so aus:

# Per series configuration file for VDRSeriesTimer.pl.
# See "VDRSeriesTimer.pl --help" for help.
#
UseShortTitle     = yes
ShortTitle        = "Marsupilami"
ListLanguage      = "de,en"
Protected         = yes
FormatPrefix      = "Kinder~%T~"
Format            = "S%1s.E%e - %3n %S" 
FormatSpacer      = " / "
Fuzzy             = 0.20
#SendEMail         = no
ChangeEPG         = yes
KeepEPGSubtitle   = yes
MultiRegex        = "(?:\s*)(?:(\d+)\.\s+)?(.*?)\s*(?:-|$)"
MultiDetection    = yes
CompareSubtitle   = yes
CompareEpisode    = no
#EpisodeIncrement  = 0
#Directory         = ""
#Category          = ""
#Genre             = ""
#Verbose           = 0
#LogFile           = ""
DoubleIfLongerAs  = 20
#StartWithSeason   = 0
Fallback          = yes


[Bearbeiten] Parameter

$ VDRSeriesTimer.pl -h
Usage:
   VDRSeriesTimer.pl ( -c=<> | -ec=<> ) --t=<> (--sub=<> | --ep=<>)
   [options...]

    Help options:

      --help | -h | -?             brief help message
      --man                        full documentation

    Needed options:

        At least one of them:

      --title | -t                 series title
      --subtitle | -s            series subtitle
      --lists | -l                 lists episodes files
      --options                    print options/variables and exit

    Optional options:

      --episode | -ep              overall episode number

      --formatprefix | -fp         First part of the output string, default: "%D~%T~"

      --format | -f                Output format, default: "%sx%e - %n. %S"

      --formatspacer | -fs         How to seperate the subtitles if there is more than one,
                                   default: " / "

                                     %T - Title
                                     %S - Subtitle
                                     %s - Season number
                                     %e - Episode number
                                     %n - Episode number over all
                                     %D - Directory
                                     %C - Category
                                     %G - Genre

                                   Example:
                                     Smallville~05x10 - 098. Lex gegen Jonathan

      --category                   category
      --genre                      genre
      --date                       date
      --time                       time
      --timet                      timestamp
      --channel                    channel number

      --useshorttitle | -short     use / don't use the SHORT keyword in episode list, defaults to "use"
      --nouseshorttitle | -noshort

      --verbose | -v               verbosity, increasing by using it more than one times, up to three times
      --dry-run | -dry             don't change EPG via SVDRP or any file
      --version                    show version number

      --upgrade                    upgrade old conf's
      --forceupgrade               upgrade all conf's, never mind which version they have

Options:
   -help   Print a brief help message and exits.

   -man    Prints the manual page and exits.




[Bearbeiten] Links