=encoding utf8

=head1 NAME

F<epgsearchuservars.conf> – benutzerdefinierte Variablen

=head1 BESCHREIBUNG

In dieser Datei können Variablen definiert werden, die in EPGSearch
überall zur Verfügung stehen, wo Variablen zulässig sind. Dies gilt
beispielsweise für das Standard-Aufnahmeverzeichnis eines manuell erstellten
Timers, das Aufnahmeverzeichnis eines Suchtimers oder ein benutzerdefiniertes
EPG-Menü.

=head1 FORMAT

Eine Variable hat die Syntax C<%Variablenname%>. Ihr Name darf ausschließlich
alphanumerische Zeichen enthalten, jedoch keine Leerzeichen oder andere
Sonderzeichen – auch keine Umlaute.

Beispiele für zulässige Namen:

=over 4

    %Serie%
    %DokuVar1%
    %ThemaUntertitelDatum%

=back

Bei Variablennamen wird nicht zwischen Groß- und Kleinschreibung
unterscheiden.

=head2 Zuweisung

Variablen werden immer Zeichenfolgen zugewiesen, deren Leerzeichen
erhalten bleiben. Die folgenden Beispiele veranschaulichen dies:

=over 4

    %Serien%=Neue Serien~Krimis

=back

Der Variable C<%Serien%> wird die Zeichenfolge "Neue Serien~Krimis" zugewiesen.
Sie lässt sich beliebig weiterverwenden:

=over 4

    %Pfad%=%Serien%

=back

Der Variable C<%Pfad%> wird der Inhalt der Variable C<%Serien%> zugewiesen.

=over 4

    %Pfad%=%Serien%~Tatort

=back

Die Variable C<%Pfad%> enthält die Zeichenfolge "Neue Serien~Krimis~Tatort".

=head2 Bedingte Zuweisung

Für Zuweisungen werden einfache Wenn-dann-sonst-Konstrukte mittels bedingter
Ausdrücke (C<I<wenn> ? I<dann> : I<sonst>>) unterstützt. Bedingte Ausdrücke
dürfen keine Zeichenfolgen enthalten, sondern nur Variablen; Leerzeichen
werden ignoriert.

=over 4

    %Foo%=Verschiedenes
    %Variable%=%Pfad% ? %Pfad% : %Foo%

=back

Beim ternären Operator C<?:> steht der Ausdruck C<%Pfad% ?>
für die Bedingung "Pfad nicht leer?". Wenn dies zutrifft, wird
C<%Variable%> der Inhalt von C<%Pfad%> zugewiesen, andernfalls
der Inhalt von C<%Foo%>.

Auch andere Prüfungen sind möglich:

=over 4

=over 4

=item == gleich

=item != ungleich

=back

=back

So zum Beispiel:

=over 4

    %Variable%=%Pfad%!=5 ? %Pfad% : %Foo%

=back

Die Bedingung C<%Path%!=5 ?> bedeutet "ist C<%Pfad%> ungleich 5?".

Der Vergleich von Variablen ist ebenfalls möglich:

=over 4

    %Fuenf%=5
    %Variable%=%Pfad%!=%Fuenf% ? %Pfad% : %Foo%

=back

Man beachte, dass der Variablenname C<%Fünf%> aufgrund des
Umlauts ungültig wäre.

=head2 Aufruf von Systemkommandos

Während der Variablenauswertung können auch externe Befehle aufgerufen werden.
Die zurückgegebene Zeichenfolge wird der jeweiligen Variablen zugewiesen:

=over 4

    %Ergebnis%=system(<Skriptname>[, <Parameter>])

=back

Ruft das Skript F<Skriptname> mit den in der optionalen Liste C<Parameter>
angegebenen Parametern auf. Ein solcher Parameter kann ein beliebiger Ausdruck sein,
der gegebenenfalls andere Variablen enthält, jedoch kein Systemaufruf oder
bedingter Ausdruck.

Beispiel:

=over 4

    %Ergebnis%=system(/usr/local/bin/mein-skript.sh, -t %Title% -s %Subtitle% -u %EineAndereVariable%)

=back

Als Parameter verwendete Variablen werden bei Bedarf in einfache Anführungszeichen
(Apostrophe) gesetzt.

Das Skript sollte einen String B<ohne Zeilenvorschübe> zurückgeben, da deren
Entfernung zu unerwünschten Ergebnissen führen kann. Wenn das Skript nichts
zurückgibt, wird der Variable C<%Ergebnis%> ein leerer String zugewiesen.

=head2 Aufruf von TCP-Diensten

in TCP-Dienst kann mit der folgenden Syntax aufgerufen werden:

=over 4

    %Ergebnis%=connect(<Adresse>, <Port>, [<Daten>])

=back

Dadurch wird eine Verbindung zu C<Adresse> über den angegebenen C<Port>
hergestellt und die optionalen C<Daten> übergeben. Der Parameter C<Adresse>
kann eine IP-Adresse oder der Domänenname eines TCP-Dienstes sein. Das vom
Dienst zurückgegebene Ergebnis muss B<mit einem Zeilenvorschub> abgeschlossen
sein.

=head2 Länge von Argumenten

Bei der Übergabe von Werten an Verbindungs- oder Systembefehle kann
es hilfreich sein, zum einfacheren Parsen die Länge eines Arguments
zu kennen. Diese lässt sich wie folgt ermitteln:

=over 4

    %Ergebnis%=length(<beliebige Argumente>)

=back

Beispiel:

=over 4

    %Titellaenge%=length(%Title%)

=back

=head2 Weitere Variablen

Eine Liste der internen Variablen findet sich in B<epgsearchmenu.conf>(5).
Darüber hinaus kann jede in F<epgsearchcats.conf> definierte Variable
verwendet werden; siehe hierzu auch B<epgsearchcats.conf>(5).

=head1 BEISPIEL

 # Wochentag, Datum, Uhrzeit
 %Datum%=%time_w% %date% %time%

 # Thema oder Untertitel oder Datum
 %UntertitelDatum%=%Subtitle% ? %Subtitle% : %Datum%
 %ThemaUntertitelDatum%=%Themes% ? %Themes% : %UntertitelDatum%

 # Aufruf des Skripts, das den Aufnahmepfad erzeugt
 %DokuScript%=system(doku.pl,%Title%,%Subtitle%,%Episode%,%Themes%,%Category%,%Genre%)
 %Doku%=%DokuScript%

=head1 AUTOREN (Man-Pages)

Ursprünglich erstellt von Mike Constabel <epgsearch (at) constabel (dot) net>.

Überarbeitet und an die aktuellen Features von EPGSearch adaptiert durch die
derzeitigen Maintainer.

=head1 PROJEKTSEITE

Das Plugin wird als Projekt auf GitHub geführt:

L<https://github.com/vdr-projects/vdr-plugin-epgsearch/>

=head1 FEHLER MELDEN

Fehlerberichte sowie Feature-Anfragen können über den Bugtracker
des Projekts eingespeist werden:

L<https://github.com/vdr-projects/vdr-plugin-epgsearch/issues/>

=head1 COPYRIGHT und LIZENZ

Copyright © 2004-2010 Christian Wieninger

Copyright © 2011-2025 TomJoad (VDR-Portal) et al.

Dieses Programm ist freie Software. Sie können es unter den Bedingungen
der GNU General Public License, wie von der Free Software Foundation
veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2
der Lizenz oder (nach Ihrer Option) jeder späteren Version.

Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es
Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die
implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN
ZWECK. Details finden Sie in der GNU General Public License.

Sie sollten ein Exemplar der GNU General Public License zusammen mit
diesem Programm erhalten haben. Falls nicht, schreiben Sie an die
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
Oder rufen Sie in Ihrem Browser L<https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
auf.

Der ursprüngliche Autor kann über L<cwieninger@gmx.de> erreicht werden.

Die aktuellen Maintainer können über die Projektseite auf GitHub
(siehe oben) erreicht werden.

Der MD5-Code ist abgeleitet aus dem Message-Digest-Algorithmus MD5
von RSA Data Security, Inc.

=head1 SIEHE AUCH

B<epgsearch>(1), B<epgsearch>(4), B<epgsearchcats.conf>(5), B<epgsearchmenu.conf>(5)
