Dies ist ein Plugin für den Video Disk Recorder (VDR).

von:                  Christian Wieninger <cwieninger@gmx.de>

Projektseite:         http://www.cwieninger.de.vu

letzte Version erhältlich: http://www.cwieninger.de.vu

Bitte die Datei COPYING für Lizenzinformationen beachten.

---------
Übersicht
---------
EPG-Search kann als Ersatz für VDR's Standard-Programm-Menü verwendet
werden. Es sieht genauso aus, erweitert es aber um einige zusätzliche
Funktionen. Ein weiterer Punkt sind die sog. Suchtimer die dafür
sorgen, dass Timer automatisch programmiert werden.

- Befehle für EPG-Einträge mit verschiedenen integrierten Befehlen wie 
  z.B. 'Wiederholungen anzeigen', 'Suche anlegen'. Man kann eigene
  Befehle hinzufügen, um z.B. einen VDRAdmin Autotimer anzulegen.

- Bis zu 4 weitere Zeitpunkte im Menü 'Was läuft jetzt?' neben 'Jetzt'
  und 'Nächste'

- Suche im EPG: Anlegen von wiederverwendbaren Abfragen, die auch als
  'Suchtimer' verwendet werden können.

- Suchtimer: Sucht im Hintergrund nach Sendungen und erzeugt einen
  Timer bei passenden EPG-Einträgen (ähnlich zu VDRAdmins Autotimern)
  oder informiert über die Sendung via OSD. 

- Vermeidung von doppelten Aufnahmen der gleichen Sendung
  * Timer-Vorschau
  * Erkennung abgebrochener Aufnahmen
  * Fuzzy-Vergleich von Sendungen

- Fortschrittsbalken in 'Jetzt' und 'Nächste'

- Zeit im Menü 'Jetzt', 'Nächste' kann per Tastendruck verschoben
  werden,  z.B. was läuft 'Jetzt' + 30 Minuten

- Startmenü 'Programm' oder 'Jetzt' einstellbar.

- Prüfung auf Timer-Konflikte im Hintergrund (erfordert ein aktuelles
  Timeline-Plugin)

- das Menü zur detaillierten EPG-Anzeige (Zusammenfassung) erlaubt den
  Sprung zur vorherigen/nächsten Sendung

- Unterstützung erweiterter EPG-Infos in Suchtimern

- Erweiterung des Timer-Edit-Menüs um Verzeichnisse,
  benutzerdefinierte Wochentage und Untertitel-Auswahl

Funktioniert nur mit vdr-1.3.x (x>=7). Getestet mit 1.3.10 bis 1.3.47.
Teile der Quelltexte basieren auf dem repeating-epg-patch von
Gerhard Steiner, der mir die Erlaubnis gab, diese zu verwenden.
(Danke für seine Arbeit!).


Inhalt
------

1.    Installation
2.    Beschreibung
2.1     Menü Befehle
2.2     Menü Suche
2.2.1     Menü Suche editieren
2.2.2     Menü Suchergebnisse
2.3     Erweitertes 'Jetzt' und 'Nächste'
2.4     Menü Setup
3.    Suchtimer
3.1     'Wiederholungen vermeiden' - Im Detail
3.2     Wie funktioniert der Vergleichstest zwischen 2 Sendungen?
3.3     Wie und wo wird der Vergleichstest eingesetzt?
4.    Verwendung der Suche durch andere Plugins oder Skripte
5.    Verwendung erweiterter EPG Infos
6.    Ersetzen des Standardmenü


1. Installation
---------------
Hier gibt es nichts besonderes. Bitte wie jedes andere Standard-Plugin
installieren (entpacken, soft link, make plugins). Eine kleine
Besonderheit: Wer lieber mit Perl compatible regular expressions in
der Suche arbeitet, sollte einfach im Makefile des Plugins
#HAVE_PCREPOSIX=1 in HAVE_PCREPOSIX=1 ändern oder einfach
HAVE_PCREPOSIX an den 'make plugins'-Aufruf anhängen. Hierzu muss pcreposix
installiert sein, das in der libpcre von www.pcre.org enthalten ist.
Dies sollte aber in den meisten Distributionen bereits enthalten sein.

HINWEIS: wenn alles normal kompiliert, aber beim Start von VDR
folgendes kommt:

ERROR: /usr/lib/libpcreposix.so.0: undefined symbol: pcre_free).

dann bitte libpcre von www.pcre.org updaten und das Plugin neu
kompilieren.


2. Beschreibung
---------------
Auf den ersten Blick sieht EPG-Search wie der Programm-Menü-Punkt des
VDR aus.   
Ein Tastendruck auf '0' schaltet die Farbtasten um, so dass weitere
Funktionen erreicht werden können (die vorgegebene Zuweisung kann per
Setup angepasst werden):


2.1 Menü Befehle
----------------
Dieses Menü zeigt Befehle an, die auf den ausgewählten Menüeintrag
angewandt werden können. Es gibt 5 vorgegebene Befehle:

- Wiederholung: Zeigt Wiederholungen an
- Aufnehmen
- Umschalten
- Suche anlegen: schaltet zum Suchmenü und erzeugt eine Suche mit dem
  Namen der aktuellen Sendung als Suchbegriff (um die manuelle Erfassung
  zu vermeiden
- Suche in Aufnahmen: durchsucht die Aufnahmen nach einer Sendung mit
  diesem Namen

Man kann eigene Befehle hinzufügen, indem man die Datei
epgsearchcmds.conf im Plugins-Konfig-Verzeichnis editiert. Eine
Beispiel-Datei mit Bespielscripts liegt dem Plugin bei (s. Unterverzeichnis
'scripts', stammt von vdr-wiki.de. Danke an die Autoren).

Das Format der Datei ist identisch zu VDRs commands.conf oder reccmds.conf.
Wenn ein Befehl ausgeführt wird, werden folgende Parameter übergeben:

$1: Titel des Programmeintrags
$2: Startzeit als time_t-Wert (wie im Shutdown-Skript)
$3: Endzeit
$4: Programmplatz
$5: langer Kanalname
$6: Untertitel des Programmeintrags, "" falls nicht vorhanden

Zum Ausführen eines Befehls aus dem Hauptmenü ohne Öffnen des
Befehlsmenüs genügt es, die zugehörige Nummer des Befehls zu drücken.

2.2 Menü Suche
--------------
Hier kann man eine Suche im EPG erzeugen, editieren, löschen und
ausführen. Bedienung und Verhalten ist ähnlich zu VDR's Timer-Menü.


2.2.1 Menü Suche editieren
--------------------------
Das meiste in diesem Menü ist selbsterklärend, deshalb nur einige
Anmerkungen zu:

- Suche: 
  Suchbegriff. Will man nach mehreren Worten suchen, dann bitte mit
  Leerzeichen trennen. Lässt man den Suchbegriff leer (in Verbindung
  mit Suchmodus 'Ausdruck') wird alles akzeptiert. Das kann praktisch
  sein, um z.B. alles zu suchen, was zu einer bestimmten Zeit auf
  einem bestimmten Sender kommt.
  Mit 'Blau' kann man auch eine Vorlage für eine Suche
  übernehmen. Falls eine Vorlage als Standard definiert wurde, wird
  bei einer neuen Suche automatisch der Inhalt der Standard-Vorlage
  verwendet. 

- Suchmodus: 
  'Ausdruck' sucht nach diesem Ausdruck innerhalb eines
  EPG-Eintrags. 'alle Worte' erfordert, dass jedes Wort im EPG-Eintrag
  vorkommt, 'ein Wort' dagegen nur, dass zumindest ein Wort
  auftaucht. 'exakt' vergleicht den gesamten Suchbegriff mit dem
  EPG-Eintrag (praktisch bei kurzen Titeln wie z.B. "Alf"). 'regulärer
  Ausdruck' erlaubt die Angabe eines regulären Ausdrucks zur
  Suche. Ein führender und abschließender '/' ist nicht notwendig. Als
  Standard werden POSIX extended regular expressions verwendet. Wer
  lieber mit Perl kompatiblen regulären Ausdrücken arbeitet, muss
  lediglich im Makefile des Plugins #HAVE_PCREPOSIX=1 in
  HAVE_PCREPOSIX=1 ändern und neu kompilieren. (Dafür ist pcreposix
  notwendig, das mit libpcre von www.pcre.org installiert wird, aber
  auf den meisten Distributionen bereits vorhanden sein sollte).
  Eine Beschreibung des Suchprozesses gibt es im MANUAL.

- Verw. erweiterte EPG Info
  (nur verfügbar, wenn konfiguriert. Siehe weiter unten 'Verwendung
  erweiterter EPG Infos')

- Verw. Kanal:
  sucht nur im angegebenen Kanalbereich, der hinterlegten
  Kanalgruppe, z.B. 'Öffentl. Rechtl.' oder 'Sportsender'... oder in
  FTA-Sendern. 
  ACHTUNG: Nach einer Änderung der Kanal-Reihenfolge sollten unbedingt
  diese Einstellungen der Suchtimer kontrolliert werden!

- Verwende Wochentag: 
  Neben den Wochentagen kann auch eine benutzerdefinierte Auswahl
  getroffen werden, um z.B. nur Montags und Freitags zu suchen.
  Die benutzerdefinierte Auswahl findet sich am Ende der Liste
  Son, Mon, ..., Sam, benutzerdefiniert

- Verwende Ausschlusslisten:
  Hier können eine oder mehrere oder alle Ausschlusslisten selektiert werden.
  Falls ein Suchergebnis auch in einer der gewählten Ausschlusslisten
  erscheint, wird es verworfen.

- Verwende als Suchtimer: 
  falls ja, sucht das Plugin im Hintergrund nach passenden Sendungen
  und erzeugt dafür einen Timer (im Setup muss dazu die Verwendung von
  Suchtimern aktiv sein)

- Aktion:
  Standard ist 'Aufnehmen', also das Erzeugen eines Timers für das
  Suchergebnis. Man kann aber auch wählen, dass nur eine Ankündigung
  der Sendung per OSD vorgenommen werden soll. Eine weitere
  Möglichkeit ist 'nur umschalten'. Dadurch wird automatisch eine
  Minute vor Beginn der Sendung auf deren Kanal gewechselt.

- Serienaufnahme: 
  falls ja, wird die Aufnahme in einem Ordner mit dem Seriennamen
  gespeichert. Die Aufnahme selbst erhält den Episondennamen. Falls es
  keinen gibt, wird Datum und Uhrzeit als Episondenname verwendet.

- Verzeichnis: 
  hier kann man ein Verzeichnis angeben, in dem die Aufnahme
  gespeichert wird, z.B. 'SciFi'. Mit der Taste 'Blau' kann ein
  Verzeichnis gewählt werden, das bereits bei anderen Sucheinträgen
  verwendet wird. Die Liste kann außerdem durch Einträge in der Datei
  epgsearchdirs.conf erweitert werden (pro Zeile ein Verzeichnis, ohne
  das führende video-Verzeichnis, s. auch MANUAL).
  Wenn man erweiterte EPG-Infos von einem Provider erhält, können im
  Verzeichnis-Eintrag auch Variablen wie "%Genre%" oder "%Category%"
  verwendet werden. Diese werden durch die aktuellen erw. EPG-Infos
  ersetzt, sobald ein Timer erzeugt wird.
  (s. MANUAL 'Using variables in the directory entry of a search
  timer') 

- Aufn. nach ... Tagen löschen
  Manchen Aufnahmen sollen nur ein paar Tage existieren,
  z.B. Tagesschau. Mit diesem Feature kann man epgsearch sagen, dass
  es die Aufnahme automatisch nach ... Tagen löschen soll

- Pause, wenn ... Aufnahmen existieren
  Wenn die angegebene Anzahl von Aufnahmen existiert, dann pausiert
  epgsearch mit dem Erzeugen neuer Timer. Erst nach dem Löschen einer
  oder mehrerer Aufnahmen, wird wieder nach neuen Sendungen gesucht.

- Wiederholung vermeiden
  Wenn man keine Wiederholungen aufnehmen will, versucht dieses
  Feature festzustellen, ob eine Sendung bereits
  aufgenommen/programmiert wurde und überspringt diese dann. Bitte vor
  Verwendung den Abschnitt 'Wiederholungen vermeiden - Im Detail'
  weiter unten lesen. 

- erlaubte Wiederholungen
  Will man eine gewisse Anzahl von Wiederholungen einer Sendung
  erlauben, kann dies hier hinterlegt werden.

- Nur Wiederh. innerhalb ... Tagen
  Falls Wiederholungen nur innerhalb einer anzugebenden Anzahl Tage
  erlaubt werden sollen, kann dies hier eingestellt werden. 0
  entspricht unbegrenzt.

- Vergleiche Titel
  Einstellung, ob beim Test, ob eine Sendung identisch ist, auch der
  Titel verglichen werden soll.

- Vergleiche Untertitel
  Einstellung, ob beim Test, ob eine Sendung identisch ist, auch der
  Untertitel verglichen werden soll. Hat eine Sendung keinen
  Untertitel wird sie als abweichend gewertet und ist damit nicht
  gleich einer anderen Sendung mit oder ohne Untertitel.

- Vergleiche Beschreibung
  Einstellung, ob beim Test, ob eine Sendung identisch ist, auch die
  Inhaltsbeschreibung verglichen werden soll. Dabei wird zunächst
  alles aus dem Inhalt entfernt, das einer Kategorienangabe
  gleicht. Der verbleibende Text wird dann verglichen. Ist dieser zu
  90% ähnlich (im Sinne des Levinshtein-Distance-Algorithmus) wird er
  als gleich behandelt.

- Vergl. Kategorien
  Über die Schaltfläche 'Einstellungen' kann angegeben werden welche
  Kategorien ebenfalls miteinander verglichen werden sollen.

- Priorität, Lebensdauer, Zeitpuffer Anfang und Ende: 
  Jeder Suchtimer kann für diese Parameter eigene Einstellungen
  haben. Die Voreinstellung wird im Setup vorgenommen.

- VPS: 
  aktiviert VPS, falls im VDR-Setup aktiv und für die gefundene
  Sendung auch VPS-Informationen vorhanden sind.

Um den Status 'Als Suchtimer verw.' zu ändern, ohne das Menü zu
öffnen, kann die Taste '0' verwendet werden.


2.2.2 Menü Suchergebnisse
-------------------------
Dieses Menü zeigt die Suchergebnisse an. Ein 'T' sagt aus, dass es zu
diesem Eintrag bereits einen Timer gibt, ein 't', dass es nur
teilweise aufgenommen wird, also wie im Standard-Programm-Menü.


2.3 Erweitertes 'Jetzt' and 'Nächste'
-------------------------------------
Im Setup können bis zu 4 zusätzliche Zeiten, als Erweiterung zu 'Jetzt'
und 'Nächste', angegeben werden um die Taste Grün zu erweitern.
Z.B. 'nachmittags', 'abends', 'spätabends'. Zeiten, die bereits
verstrichen sind, werden übersprungen, man erhält abends also kein
'nachmittags'.
In diesen Menü kann die aktuell angezeigte Zeit durch Drücken auf
FastRew und FastFwd verschoben werden um die Zeit nach hinter oder
vorne zu verstellen. Falls diese Tasten auf der Fernbedienung nicht
existieren, kann diese Funktion durch Umschalten mit '0' erreicht
werden. Die Tasten Grün und Gelb wechseln dann zu '<<' und '>>'. Das
Umschalten kann über das Setup angepasst werden.
Man kann einen Fortschrittsbalken im Menü 'Jetzt'/'Nächste' anzeigen lassen.
Falls text2skin verwendet wird, sollte die Option "text2skin" in den
Setup-Optionen "Zeige Fortschrittsbalken in 'Jetzt'"/"Zeige Fortschrittsbalken
in 'Nächste'" verwendet werden (Die Option 'graphisch' kann ebenfalls mit
text2skin funktionieren, das ist aber abhängig vom gewählten skin)

2.4 Menü Setup
--------------
- Hauptmenüeintrag verstecken:
  Damit wird der Eintrag 'Suche' im Hauptmenü ausgeblendet. Achtung:
  wenn das Plugin der Taste Grün zugeordnet ist, dann bewirkt das
  Ausblenden, dass wieder das VDR-Standardmenü gerufen wird (um das zu
  vermeiden s. unten).

- Hauptmenü-Eintrag
  Falls nicht ausgeblendet, kann hier der Name des Hauptmenü-Eintrags
  hinterlegt werden. Vorgabe ist 'Programmführer'. Hinweis: Wenn man den
  Eintrag abweichend von der Vorgabe setzt, ist der Eintrag nicht mehr
  abhängig von der gewählten OSD-Sprache. Setzt man den Eintrag wieder auf den
  Default oder auf leer ist die Abhängigkeit wieder gegeben.

- Startmenü: 
  Auswahl von 'Programm' oder 'Jetzt' als Startmenü.

- Taste Rot: 
  Auswahl, ob man den Standard ('Aufnehmen') oder 'Befehle' als
  Vorbelegung möchte.

- Taste Blau: 
  Auswahl, ob man den Standard ('Umschalten') oder 'Suche' als
  Vorbelegung möchte.

- Zeige Fortschrittsbalken in 'Jetzt': 
  Im Menü 'Jetzt' kann ein Fortschrittsbalken angezeigt werden, der
  den Fortschritt der laufenden Sendung anzeigt. Falls text2skin verwendet
  wird, sollte die Option "pipes" verwendet werden (Die Option 'graphisch'
  kann ebenfalls mit text2skin funktionieren, das ist aber abhängig vom
  gewählten skin) 

- Zeige Kanalnummer:
  auswählen, um eine führende Programmnummer vor jedem EPG-Eintrag
  anzuzeigen.

- Zeige Kanal-Separatoren:
  zur Anzeige einer Trennzeile zwischen Kanalgruppen im Menü
  'Übersicht - Jetzt' ...

- Zeige Tages-Separatoren:
  zur Anzeige einer Trennzeile zwischen Sendungen unterschiedlicher
  Tage im Menü 'Programm'

- Zeige Kanäle ohne EPG:
  zur Anzeige von Programmen ohne EPG, um auf diese umschalten zu
  können oder einen Timer zu programmieren

- Timer mit 'Aufnehmen' sofort anlegen:
  Falls 'Ja' wird nach Drücken von 'Aufnahme' sofort ein Timer angelegt, wie
  in vdr-1.3.38 eingeführt, falls 'Nein' erscheint das Timer-Edit-Menü.

- Kanalgruppen:
  verwaltet die Kanalgruppen, die als Suchkriterium in einer Suche
  verwendet werden können. Die Verwaltung ist auch im Edit-Menü einer
  Suche möglich.

- Zeitintervall für FR/FF [min]:
  In den Menüs 'Programm', 'Jetzt', 'Nächste', 'Benutzerdef. Zeit 1',
  ... kann die angezeigte Zeit durch drücken von FastRew, FastFwd
  verschoben werden.  Die Anzahl Minuten für den Sprung kann hier
  angepasst werden. 

- Grün/Gelb umschalten:
  Falls die Tasten FastRew, FastFwd auf der Fernbedienung nicht
  vorhanden sind, dann auf 'ja' setzen. Wenn die Taste '0' gedrückt
  wird, werden somit auch die Tasten Grün/Gelb auf z.B. '<<' und '>>'
  umgeschaltet.

- Benutzerdef. Zeit 1..4:
  Bis zu 4 benutzerdefinierte Zeiten können zu 'Jetzt' und 'Nächste'
  hinzugefügt werden.

- Beschreibung:
  Name der benutzerdef. Zeit, z.B. 'Nachmittags', 'Abends',
  'Spätabends'.

- Zeit:
  zugehörige Uhrzeit.

- VDR's Time-Edit-Menü verw.
  Beim normalen Programmieren eines Timers verwendet epgsearch ein
  erweitertes Timer-Edit-Menü, das einen Verzeichniseintrag,
  benutzerdefinierte Wochentage und die Vervollständigung um
  Untertitel anbietet. Falls man einen gepatchten VDR verwendet der
  ebenfalls ein erweitertes Timer-Edit-Menü anbietet und lieber dieses
  verwenden will, dann einfach diese Option auf 'Ja' setzen.
  
- Standard Aufn. Verzeichnis:
  Dieser Eintrag wird beim normalen Programmieren eines Timers
  verwendet. Man kann auch EPG-Variablen verwenden (z.B.. 'Meine
  Filme~%Category%~%Genre%'). Wird das Timer-Edit-Menü aufgerufen
  versucht epgsearch alle Variablen durch die Werte in der
  Beschreibung der Sendung zu ersetzen. Konnten nicht alle ersetzt
  werden, bleibt der Verzeichniseintrag leer. 

- Untertitel in manuellen Timern:
  Beim manuellen Programmieren eines Timers kann epgsearch den
  Untertitel automatisch im Dateinamen ergänzen, wodurch die spätere
  Aufnahme in einem Unterverzeichnis für diese Episode gespeichert
  wird. Hier wählt man wie die Ergänzung gemacht werden
  soll. 'Intelligent' versucht zu prüfen, ob es Sinn macht und prüft
  dazu die Länge einer Sendung. Ist diese länger als 80min wird keine
  Untertitel ergänzt.

- Verwende Suchtimer:
  falls ja, untersucht das Plugin im Hintergrund die EPG-Daten und
  erzeugt Timer, falls passende Einträge gefunden werden. Dies
  betrifft nur Sucheinträge, die mit 'Als Suchtimer verwenden'
  markiert sind. 

- Aktualisierungsintervall:
  Das Intervall in Minuten, in dem die Hintergrundsuche vorgenommen
  wird. 

- SVDRP Port:
  Falls nicht der Standard-SVDRP-Port 2001 verwendet wird, dann bitte
  hier anpassen, damit die Suchtimer funktionieren. 

- Timer-Konflikte prüfen:
  Nach jedem Hintergrund-Scan kann eine Prüfung auf Timer-Konflikte
  durchgeführt werden. Falls welche gefunden werden, erfolgt eine
  Warnmeldung im OSD. Dies erfordert eine aktuelles Timeline-Plugin.

- Priorität, Lebensdauer und Zeitpuffer für Anfang und Ende:
  Voreinstellungen


3. Suchtimer
------------
Das ist ziemlich das gleiche wie VDRAdmin's Autotimer, benötigt jedoch
kein externes Programm. Beim Anlegen einer Suche kann man die Option
setzen, ob diese als Suchtimer verwendet werden soll. Das Plugin sucht
nun im Hintergrund in bestimmten Zeitabständen (->Setup->Update
Intervall [min]) nach passenden Sendungen und erzeugt Timer für die
Ergebnisse. Gerade für Serien ist dies sehr praktisch, weshalb es in
der Suche die Option "Serienaufnahme" gibt. In diesem Fall wird ein
Timer mit zusätzlichem Episodennamen angelegt. Die Aufnahme erscheint
dann in einem Ordner mit dem Seriennamem. Falls es keinen Episodennamen gibt
wird stattdessen automatisch Datum und Uhrzeit verwendet.

Die Suchtimer-Funktion muss ausserdem im Setup aktiviert werden.
Falls für SVDRP nicht der Standardport 2001 verwendet wird, bitte
ebenfalls im Setup eintragen.

Falls man eine Hintergrund-Suche manuell anstoßen will, genügt ein

touch /etc/vdr/plugins/.epgsearchupdate

Das kann ebenfalls Teil des shutdown-Skripts sein (hier sollte man
dann noch einen sleep von ein paar Sekunden anhängen, damit das Plugin
Zeit hat, den Scan zu beenden).

Mehr Infos zu Suchtimern gibts im MANUAL unter 'Description of the
search process' und 'How do Search Timers work?'.


3.1 'Wiederholungen vermeiden' - Im Detail
------------------------------------------
Hier soll erklärt werden wie die Option 'Wiederholungen vermeiden'
eines Suchtimers funktioniert.
Nicht immer lässt sich durch entsprechende Suchkriterien vermeiden,
dass auch Timer für Wiederholungen erzeugt werden. 
Um das zu verhindern, versucht das Feature 'Wiederholungen vermeiden'
vor dem Programmieren einer Sendung zu prüfen, ob eine gleiche Sendung
schon mal aufgenommen wurde oder ein Timer existiert, der die gleiche
(nicht dieselbe!) Sendung aufzeichnet. Ist dies der Fall, wird kein
Timer für die zu überprüfende Sendung erzeugt.

3.2 Wie funktioniert der Vergleichstest zwischen 2 Sendungen?
-------------------------------------------------------------
Für den Test auf Gleichheit zwischen 2 Sendungen gibt es viele
Einstellmöglichkeiten beim Suchtimer. Man kann wählen, ob Titel,
Untertitel, Beschreibung und bestimmte Kategorien innerhalb der
Beschreibung einer Sendung mit den jeweiligen Angaben einer anderen
Sendung verglichen werden sollen. 
Der Vergleich der einzelnen Angaben selbst prüft immer auf
vollständige Identität. Die Beschreibung einer Sendung bildet hier
aber eine Ausnahme. Hier wird zunächst alles aus dem Text entfernt,
das einer Kategorie-Angabe gleicht, z.B. 'Bewertung: Tagestipp'. Als
Kategorie-Angabe wird alles gewertet, was am Anfang einer Zeile
maximal 40 Zeichen hat, von einem ':' gefolgt wird und dann maximal
weitere 60 Zeichen hat. Hintergrund für dieses Rausschneiden sind die
oft vorhandenen Bewertungen wie 'Tagestipp', die bei der Wiederholung
aber nicht mehr enthalten sind.
Der verbleibende Text wird nun zunächst in der Länge verglichen. Ist
der Unterschied größer als 90% wird die Beschreibung als
unterschiedlich gewertet. Andernfalls wird über den
Levinsthein-Distance-Algorithmus (LD), der einen Fuzzy-Textvergleich
macht, ein Test vorgenommen. Hier wird die Beschreibung als gleich
akzeptiert, wenn LD mehr als 90% Identität zurückgibt.
Da dieser Algorithmus ziemlich laufzeitintensiv ist (O(mn)), sollte
nach Möglichkeit nicht nur 'Vergleiche Beschreibung' als einziges
Vergleichskriterium ausgewählt werden, sondern am besten immer nur in
Kombination mit anderen Vergleichen.

3.3 Wie und wo wird der Vergleichstest eingesetzt?
--------------------------------------------------
Wie zuvor erwähnt wird bei einem Suchtimer-Update für Suchtimer mit
diesem Feature zusätzlich geprüft, ob eine Sendung bereits irgendwann
schon aufgezeichnet wurde, oder in der Timerliste ein Timer steht, der
die gleiche Sendung aufzeichnen würde. Letzteres sollte klar sein,
während für ersteres das File epgsearchdone.data ins Spiel kommt. Nach
jeder Aufnahme, die durch einen Suchtimer mit 'Wiederholung vermeiden'
erzeugt wurde, werden alle Angaben zu dieser Sendung im genannten File
gespeichert. Über das Aktionenmenü im Menü 'Suche' kann man sich alle
Sendungen, die ein solcher Timer bisher aufgenommen hat, anzeigen
lassen und diese auch bearbeiten. In dieses File werden nur Aufnahmen
aufgenommen, die bezüglich der Timerangaben korrekt begonnen und auch
beendet wurden. D.h. dass teilweise unvollständige Aufnahmen nicht
registriert werden und somit beim nächsten Suchtimer-Update
automatisch ein neuer Timer für diese Sendung erzeugt wird, falls
gefunden. 

Wie verwenden?
--------------
Man sieht, dass das ganze Feature stark von der Qualität und dem
Umfang des verwendeten EPGs abhängt. Hat man einen entsprechenden
Suchtimer angelegt, ist es sinnvoll erstmal zu prüfen, ob er auch das
richtige macht. Dazu gibt es für solche Timer im Suchergebnis-Menü auf
der Taste 'Blau' die zusätzliche Belegung 'Timer-Vorschau'. Sendungen,
die noch keinen Timer haben ('T'), aber für die einer aufgrund des
Features beim nächsten Suchtimer-Update programmiert würde, haben dort
ein 'P' stehen. 
Hinweis: Möchte man wegen Konflikten einen bereits programmierten
Timer nicht verwenden, dann sollte dieser im Timermenü deaktiviert
werden. Beim nächsten Suchtimer-Update wird dann einfach die nächste
mögliche Wiederholung programmiert, falls vorhanden.

Wenn es nicht richtig funktioniert :-)
--------------------------------------
Damit das Programmieren oder Nicht-Programmieren von Timern gerade bei
Verwendung dieses Features besser nachvollziehbar ist, wurde ein
Logfile für epgsearch eingeführt. Startet man epgsearch mit einem
Loglevel >= 2 (-P'epgsearch -v 2) werden beim Suchtimer-Update
in der Datei epgsearch.log hilfreiche Infos abgelegt. Siehe MANUAL für
'command line options'.


4. Verwendung der Suche durch andere Plugins oder Skripte
---------------------------------------------------------
(verschoben in MANUAL)

5. Verwendung erweiterter EPG Infos
------------------------------------
Einige EPG Provider liefern zusätzliche EPG Infos wie die Art der
Sendung, das Video und Audio Format, die Besetzung,...
Mit tvmovie2vdr oder epg4vdr können diese Daten in den VDR importiert
werden.
Somit kann man also z.B. einfach einen Suchtimer erzeugen, der alle
Tagestipps findet, die in 16:9 ausgestrahlt werden.
Um diese Informationen in Suchtimern zu verwenden, muss anhand der
Datei epgsearchcats.conf im Plugin-Konfig-Verzeichnis eine
Konfiguration vorgenommen werden.
Das Format dieser Datei ist folgendes:

ID|category name|name in menu|values separated by ','(option)|searchmode(option)

- 'ID' sollte eine eindeutige ganze Zahl sein
   Achtung: Ändert man später aus irgendeinem Grund diese ID müssen
   die Suchtimer neu editiert werden!
- 'category name' ist der Name der Info lt. EPG Provider, z.B. 'Genre'
- 'name in menu' ist der Name im Menü von epgsearch.
- 'values' ist eine optionale Liste von Werten für diese Info.
  Wird keine Liste angegeben, erstellt epgsearch im Menü dafür ein
  Eingabefeld, sonst wird daraus eine Auswahlliste.
- 'searchmode' gibt optional an, wie gesucht werden soll:
  0 - Der gesamte Begriff muss als Substring erscheinen
  1 - Die einzelnen Worte (getrennt durch ',', ';', '|' oder
      '~') müssen alle als Substring auftauchen. Diese Einstellung ist
      der Standardwert.
  2 - mindestens ein Wort (getrennt durch ',', ';', '|' oder
      '~') muss als Substring auftauchen
  3 - exakte Übereinstimmung
  4 - als regulärer Ausdruck

Beispiel-Dateien für epgsearchcats.conf kommen mit dem
Plugin im Verzeichnis 'conf'. Einfach die passende ins
Plugin-Konfig-Verzeichnis als epgsearchcats.conf kopieren, VDR neu starten und
dann das Eingabe-Menü eines Suchtimers aufrufen.

Weil das Aufsetzen einer neuen epgsearchcats.conf ziemlich lästig ist,
habe ich ein kleines Tool 'createcats' mitgeliefert, das den Großteil
der Arbeit erledigt. Es sollte mit dem Plugin übersetzt worden sein
und sich im Quellverzeichnis befinden. Einfach folgendermaßen aufrufen:

createcats /pfad_zu/epg.data

Dieses Tool scannt nun die vorhandenen EPG infos und versucht daraus
die erweiterten Infos zu extrahieren. Das Ergebnis ist eine neue
epgsearchcats.conf, die aber noch editiert werden muss, weil sicher
nicht alles genau passt. Danach ins Plugin-Konfig-Verzeichnis kopieren.
(Mehr über createcats im Manual 'Using createcats')

Details: epgsearch durchsucht die Zusammenfassung einer Sendung nach
dem Namen einer Kategorie gefolgt von ': '. Das geschieht für alle
Kategorien, für die im Suchtimer ein Wert gesetzt wurde. Die Suche
berücksichtigt die Groß/Kleinschreibung sowohl bezüglich des
Kategorie-Namens als auch des Wertes.

6. Ersetzen des Standardmenü
----------------------------
Um das Plugin als Ersatz für VDR's Standard-Menü zu verwenden, genügt
es die Zeile

Green	@epgsearch

in die Datei keymacros.conf zu setzen. Falls kein weiterer Menüeintrag
im Hauptmenü erscheinen soll, dann den Eintrag des Plugins zunächst im
Setup ausblenden. Um das Plugin trotzdem mit der Taste "Grün" aufrufen
zu können, könnte man z.B. mein launcher-Plugin verwenden und
die Zeile

Green @launcher x 

in die keymacros.conf schreiben, wobei x die Position von epgsearch
innerhalb des launcher listings ist.

Achtung: Versteckt man das Plugin ohne die Verwendung des launcher
plugins oder anderer Patches, die das Aufrufen versteckter Plugins
erlauben, erhält man das VDR-Standard-Menü beim Drücken von Grün. Ab
VDR 1.3.32 sind dazu keine Patches oder Plugins mehr notwendig.

Ein weiterer Ansatz ist ein Patch gegen VDR, der das Standardmenü
'Programm' gegen epgsearch austauscht.
Hierzu VDR mit dem Patch vdr-replace-schedulemenu.diff.gz aus dem
Patches-Verzeichnis patchen. Danke an den Autor Uwe/egal@vdrportal.
Bei Anwendung dieses Patches sollte der Eintrag 

Green Schedule 

heißen. Dieser Patch ist bereits in manchen Patchsammlungen,
z.B. Bigpatch, enthalten.


Viel Spass!

Christian Wieninger
