summaryrefslogtreecommitdiff
path: root/doc-src/en/epgsearch.4.txt
diff options
context:
space:
mode:
authorChristian Wieninger <winni@debian.(none)>2007-11-11 15:40:28 +0100
committerChristian Wieninger <winni@debian.(none)>2007-11-11 15:40:28 +0100
commit8d4f8607dc1558ce73eb4c376bdbf78ddb65da83 (patch)
treed0c5dde81a36ab2e8a2edc7c1e6922556518b312 /doc-src/en/epgsearch.4.txt
downloadvdr-plugin-epgsearch-8d4f8607dc1558ce73eb4c376bdbf78ddb65da83.tar.gz
vdr-plugin-epgsearch-8d4f8607dc1558ce73eb4c376bdbf78ddb65da83.tar.bz2
Initial commit
Diffstat (limited to 'doc-src/en/epgsearch.4.txt')
-rw-r--r--doc-src/en/epgsearch.4.txt880
1 files changed, 880 insertions, 0 deletions
diff --git a/doc-src/en/epgsearch.4.txt b/doc-src/en/epgsearch.4.txt
new file mode 100644
index 0000000..58fa4c5
--- /dev/null
+++ b/doc-src/en/epgsearch.4.txt
@@ -0,0 +1,880 @@
+=head1 NAME
+
+F<epgsearch> - Searchtimer and replacement of the VDR program menu
+
+=head1 OVERVIEW
+
+Since the README get bigger and bigger this man page shall be used
+to explain some things in detail. So it's not really a manual, but an
+extended README.
+
+=head1 CONTENT
+
+ 1. Using variables in the directory entry of a search timer
+ 2. The format of epgsearch.conf
+ 3. Description of the search process
+ 4. How do Search Timers work?
+ 5. How to trigger a search timer update?
+ 6. The sources of the 'Select directory' menu
+ 7. Language dependent commands for EPG
+ 8. Usage from other plugins or scripts
+ 9. SVDRP interface
+ 10. Customizing the EPG menus
+ 11. Working with the timer conflict menu
+ 12. User defined variables
+ 13. Email notifications
+
+=head1 1. Using variables in the directory entry of a search timer
+
+If you are using extended EPG information, you can use variables as
+part of a directory entry of a search timer. These variables always have
+the form '%variable%'. The name of a variable corresponds with the
+internal name of an extended EPG info, as specified in the file
+epgsearchcats.conf (samples can be found in subdirectory 'conf').
+Example:
+
+ 1|Category|Kategorie|Information,Kinder,Musik,Serie,Show,Spielfilm,Sport|3
+
+The category with ID 1 has the internal name 'Category'. So you could
+use it with '%Category%'. The names are not case sensitive. Sample
+directory entries could look like this:
+
+ My Movies~%Category%
+ Childrens Movies~%category%
+ %CATEGORY%~%genre%
+
+There are also three other variables: %Title%, %Subtitle% and %Channel%.
+If you don't use %Title%, the title is always automatically
+appended to the directory entry, when a timer will be created. If you
+set 'serial recording' to 'yes' in your search timer then also the
+subtitle will be automatically appended. So the directory entry
+
+ %Category%~%Genre%~%Title%~%Subtitle%
+
+is the same as
+
+ %Category%~%Genre%
+ (with 'serial recording' set to 'yes').
+
+The %Channel% variable gets replaced with the name of the channel.
+
+Attention: Automatically appending title and subtitle will not be
+done, if you use the variables %Title% or %Subtitle% in the directory
+entry. This allows to form directory entries like this one:
+
+ %Category%~%Genre%~%Title%~%Episode%~%Subtitle%
+
+There is also another variable %search.query% that will be replaced with the
+query of the search timer.
+
+See also C<epgsearchuservars.conf(5)>.
+
+=head1 2. The format of epgsearch.conf
+
+Due to some new features there was a change in the format. The format
+is now signed with a comment in the first line. The field delimiter
+is B<':'>:
+
+ 1 - unique search timer id
+ 2 - the search term
+ 3 - use time? 0/1
+ 4 - start time in HHMM
+ 5 - stop time in HHMM
+ 6 - use channel? 0 = no, 1 = Interval, 2 = Channel group, 3 = FTA only
+ 7 - if 'use channel' = 1 then channel id[|channel id] in vdr format,
+ one entry or min/max entry separated with |, if 'use channel' = 2
+ then the channel group name
+ 8 - match case? 0/1
+ 9 - search mode:
+ 0 - the whole term must appear as substring
+ 1 - all single terms (delimiters are blank,',', ';', '|' or '~')
+ must exist as substrings.
+ 2 - at least one term (delimiters are blank, ',', ';', '|' or '~')
+ must exist as substring.
+ 3 - matches exactly
+ 4 - regular expression
+ 5 - fuzzy searching (specify tolerance in parameter 42, not available
+ for EPG categories)
+ 10 - use title? 0/1
+ 11 - use subtitle? 0/1
+ 12 - use description? 0/1
+ 13 - use duration? 0/1
+ 14 - min duration in minutes
+ 15 - max duration in minutes
+ 16 - use as search timer? 0/1/2 (with 2 one can specify time margins in
+ parameter 48/49 where the search timer is active)
+ 17 - use day of week? 0/1
+ 18 - day of week (0 = Sunday, 1 = Monday...;
+ -1 Sunday, -2 Monday, -4 Tuesday, ...; -7 Sun, Mon, Tue)
+ 19 - use series recording? 0/1
+ 20 - directory for recording
+ 21 - priority of recording
+ 22 - lifetime of recording
+ 23 - time margin for start in minutes
+ 24 - time margin for stop in minutes
+ 25 - use VPS? 0/1
+ 26 - action:
+ 0 = create a timer
+ 1 = announce only via OSD (no timer)
+ 2 = switch only (no timer)
+ 27 - use extended EPG info? 0/1
+ 28 - extended EPG info values. This entry has the following format
+ (delimiter is '|' for each category, '#' separates id and value):
+ 1 - the id of the extended EPG info category as specified in
+ epgsearchcats.conf
+ 2 - the value of the extended EPG info category
+ (a ':' will be translated to "!^colon^!", e.g. in "16:9")
+ 29 - avoid repeats? 0/1
+ 30 - allowed repeats
+ 31 - compare title when testing for a repeat? 0/1
+ 32 - compare subtitle when testing for a repeat? 0/1
+ 33 - compare description when testing for a repeat? 0/1
+ 34 - compare extended EPG info when testing for a repeat?
+ This entry is a bit field of the category IDs.
+ 35 - accepts repeats only within x days
+ 36 - delete a recording automatically after x days
+ 37 - but keep this number of recordings anyway
+ 38 - minutes before switch (if action = 2)
+ 39 - pause if x recordings already exist
+ 40 - blacklist usage mode (0 none, 1 selection, 2 all)
+ 41 - selected blacklist IDs separated with '|'
+ 42 - fuzzy tolerance value for fuzzy searching
+ 43 - use this search in favorites menu (0 no, 1 yes)
+ 44 - number of the search menu template to use (only available if multiple
+ search result templates are defined in epgsearchmenu.conf)
+ 45 - auto deletion mode (0 don't delete search timer, 1 delete after given
+ count of recordings, 2 delete after given days after first recording)
+ 46 - count of recordings after which to delete the search timer
+ 47 - count of days after the first recording after which to delete the search
+ timer
+ 48 - first day where the search timer is active (see parameter 16)
+ 49 - last day where the search timer is active (see parameter 16)
+ 50 - ignore missing EPG categories? 0/1
+ 51 - unmute sound if off when used as switch timer
+
+A ':' in the search term or the directory entry will be translated in
+a '|'. If a '|' exists in the search term, e.g. when using regular
+expressions, it will be translated to "!^pipe^!" (I know it's ugly ;-))
+
+See also C<epgsearch.conf(5)>.
+
+=head1 3. Description of the search process
+
+First, for each broadcasting a search text divided by '~' is created,
+depending on the settings of 'Use title', 'Use subtitle' and 'Use
+description':
+
+ title~subtitle~description
+
+If "Match case" is not set, the search text and the search term are
+transformed to lower case.
+Now depending on the search mode, the search term will be looked up in
+the search text:
+
+=over 4
+
+=item - 'Phrase' matches
+
+if the search term is found anywhere in the search text.
+
+=item - 'at least one word', 'all words'
+
+first the search term will be split in single words. Delimiters are a
+blank and the characters ',' ';' '|' '~'.
+
+Then we check if at least one or all words appear in the search text.
+
+=item - 'match exactly'
+
+matches if search term and search text are identical.
+
+=item - 'regular expression'
+
+the search is done with a regular expression. You don't need a leading
+and trailing '/' in your search term.
+Two standards of regular expression are supported: extended
+POSIX and Perl compatible regular expressions (PCRE) (see F<INSTALL>).
+
+=back
+
+If the search was successful until now, the other criterions (start
+time, duration, week day) are checked.
+
+
+=head1 4. How do Search Timers work?
+
+With each update, the plugin searches for new matches of your search
+timers. If a new match is found then a new timer is created. For
+serial recordings, the subtitle is appended to the recording
+directory. Many providers deliver the subtitle just 1-2 days before
+the event. The plugin uses then a date/time string for the subtitle,
+but replaces this one later if the subtitle is present.
+
+Start and end times of a broadcasting often vary a little bit. To avoid
+getting many different timers for the same event, the plugin
+checks before adding a new timer, if there is one, that has start and
+end times which only differ by a maximum of 10 minutes (or the events
+duration if this is less then 10 minutes). If so, the present timer is
+modified, else a new timer is created. If the timer was set to inactive
+there will be no update. Also manually corrected priority or lifetime
+will not be changed when updating.
+
+If you have set 'Announce only (no timer)' to yes, no timer is
+created. Instead you get an OSD message about the event. This message
+is displayed at each scan, but only if there is no timer for the event.
+
+=head1 5. How to trigger a search timer update?
+
+the update of search timers runs in its own thread. There are several
+ways to trigger it:
+
+=over 4
+
+=item - automatically
+
+after VDR starts there is always an update (after a
+few seconds). After this, the setup option 'Update interval' tells
+epgsearch when the next update should be done repeatedly (in minutes).
+
+=item - manually extern
+
+the thread observes the file '.epgsearchupdate' in the
+plugins config directory. When you
+
+ touch /path_to_file/.epgsearchupdate
+
+this will also trigger an update. So this is a simple solution to
+make an update e.g. by a script.
+
+=item - manually intern
+
+calling actions or pressing '3' in the menu of searches asks also
+for an update.
+
+=item - from other plugins
+
+=back
+
+there's a service
+'Epgsearch-updatesearchtimers-v1.0' that can be used with the service
+interface of VDR from other plugins with the option to inform via
+OSD when the update has finished
+
+=head1 6. The sources of the 'Select directory' menu
+
+This menu displays directories, that can be used for search timers or
+ordinary timers. The items displayed are read from the following
+sources:
+
+ * current recording directories
+ * current timer directories
+ * directories used in search timers
+ * directories specified in F<epgsearchdirs.conf>,
+ see C<epgsearchdirs.con(5)>
+
+The menu merges theses directories and displays only distinct
+directories. With key 'yellow' one can change the depth of the
+directories shown. If there are items, that contain category variables
+like '%genre%', these entries are always shown before any other
+directories. They are also not level dependent, but are always shown
+with their full directory.
+
+If this menu is called from the timer edit menu and an item is
+selected that contains the variables "%title%" or "%subtitle" then the
+'file' item of the timer gets cleared, since title or subtitle already
+exist in the 'directory' item.
+This list can also be accessed via the SVDRP command 'LSRD'.
+
+=head1 7. Language dependent commands for EPG
+
+If you like to have a language dependent list of commands simply
+translate your present F<epgsearchcmds.conf> to your preferred OSD
+language and store it with the filename epgsearchcmds-XXX.conf, where
+XXX is the language code from i18n.c:
+
+ { "eng,dos",
+ "deu,ger",
+ "slv",
+ "ita",
+ "dut,nla,nld",
+ "por",
+ "fra,fre",
+ "nor",
+ "fin,smi",
+ "pol",
+ "esl,spa",
+ "ell,gre",
+ "sve,swe",
+ "rom,rum",
+ "hun",
+ "cat,cln",
+ "rus",
+ "hrv",
+ "est",
+ "dan",
+ }
+
+If there are more codes for one language (e.g. "deu,ger") choose
+one of them. If there is no language dependent file, epgsearch loads
+the file F<epgsearchcmds.conf>.
+
+See also C<epgsearchcmds.conf(5)>.
+
+=head1 8. Usage from other plugins or scripts
+
+Searching the EPG and other functionality can be used by other plugins
+or scripts. There are two approaches:
+
+=head2 8.1. File-based (intended for use in scripts)
+
+Therefore simply create the file '.epgsearchrc' in the plugins config
+directory with the following lines in it:
+
+ Search=your search term
+ Searchmode=x // 0=phrase, 1=and, 2=or, 3=regular expression
+ ChannelNr=x // add this line, to search on a specific channel
+ UseTitle=x // 1(default) or 0
+ UseSubtitle=x // 1(default) or 0
+ UseDescr=x // 1(default) or 0
+
+Then call Epgsearch via svdrpsend.pl (you must have assigned a key
+to it), e.g.
+
+ svdrpsend.pl HITK green
+
+At startup Epgsearch will look for this file and give you the
+search results for your search, if it exists. After that the file is
+removed.
+
+A sample script F<recrep.sh>, that searches for the repeats of a recording
+exists in the scripts subdirectory of Epgsearch.
+
+=head2 8.2. via Plugin-Interface (intended for use in plugins)
+
+A plugin can directly call two functions of epgsearch with only some
+lines of source code:
+
+ - searching the EPG for some criteria and display the result list
+ - extended timer edit menu
+
+I have added a quick and dirty dummy plugin
+(source/vdr-epgsearchclient-0.0.1.tgz), that demonstrates the usage.
+
+=head1 9. SVDRP interface
+
+epgsearch implements a SVDRP interface, that can be accessed for
+example like this
+
+ svdrpsend.pl PLUG epgsearch LSTS
+
+the following commands are available:
+
+=head2 search management:
+
+ * 'LSTS [ID]' to list all searches, or the one with the passed ID
+ (format is the same as epgsearch.conf)
+ * 'NEWS <settings>' to add a new search
+ REMARK: the value of element ID is ignored. epgsearch will always
+ assign the next free ID
+ * 'DELS <ID>' to delete the search with ID
+ * 'EDIS <settings>' to modify an existing search
+ * 'UPDS [OSD]' to update the search timers. Passing the optional keyword
+ 'OSD' pops up an OSD message after the update has finished.
+ * 'MODS ID ON|OFF' turns on/off the option 'Use as search timer'.
+ * 'UPDD' to reload the file epgsearchdone.data, e.g. after an
+ external tool has modified it.
+ * 'SETS <ON|OFF>' to temporarily activate or cancel the search timer background
+ thread.
+ * 'FIND <settings>' for searching the EPG
+ input is the same as with 'NEWS'. output is a list of found events formatted
+ as 'NEWT' lines. So they can be immediately used to create a new timer for
+ an event.
+ * 'QRYS < ID(s) >' to get the results for a search with the given
+ ID. Multiple IDs can also be passed and have to be separated with '|'.
+ The results are formatted like this:
+
+ search ID : // the ID of the corresponding search timer
+ event ID : // VDR event ID
+ title : // event title, any ':' will be converted to '|'
+ episode name : // event short text, any ':' will be converted to '|'
+ event start : // event start in seconds since 1970-01-01
+ event stop : // event stop in seconds since 1970-01-01
+ channel : // channel ID in VDR's internal representation (e.g. 'S19.2E-1-1101-28106')
+ timer start : // timer start in seconds since 1970-01-01 (only valid if timer flag is > 0)
+ timer stop : // timer stop in seconds since 1970-01-01 (only valid if timer flag is > 0)
+ timer file : // timer file (only valid if timer flag is > 0)
+ timer flag : // 0 = no timer needed, 1 = has timer, 2 timer planned for next update)
+ * 'QRYS <settings>' to get the results for a search with the given search
+ settings.
+ * 'QRYF [hours]' to get the results for the favorites menu, see QRYS for
+ result format. The optional parameter specifies the number of hours to
+ evaluate and defaults to 24h.
+
+=head2 channel group management:
+
+ * 'LSTC [channel group name]'
+ list all channel groups or if given the one with name 'group name'
+ * 'NEWC <channel group settings>'
+ create a new channel group, format as in epgsearchchangrps.conf
+ * 'EDIC <channel group settings>'
+ modify an existing channel group, format as in epgsearchchangrps.conf
+ * 'DELC <channel group name>'
+ delete an existing channel group
+ * 'RENC <old channel group name|new channel group name>'
+ rename an existing channel group
+
+=head2 blacklist management:
+
+ * 'LSTB [ID]' to list all blacklists, or the one with the passed ID
+ (format is the same as epgsearchblacklists.conf)
+ * 'NEWB <settings>' to add a new blacklist
+ REMARK: the value of element ID is ignored. epgsearch will always
+ assign the next free ID
+ * 'DELB <ID>' to delete the blacklist with ID
+ * 'EDIB <settings>' to modify an existing blacklist
+
+=head2 search template management:
+
+ * 'LSTT [ID]' to list all search templates, or the one with the passed ID
+ (format is the same as epgsearch.conf)
+ * 'NEWT <settings>' to add a new search template
+ REMARK: the value of element ID is ignored. epgsearch will always
+ assign the next free ID
+ * 'DELT <ID>' to delete the search template with ID
+ * 'EDIT <settings>' to modify an existing search template
+ * 'DEFT [ID]' returns the ID of the default search template. When passing an
+ ID it activates the corresponding template as default.
+
+=head2 extended EPG categories:
+
+ * 'LSTE [ID] to get the extended EPG categories defined in epgsearchcats.conf
+ or the one with the given ID. (format is the same as epgsearchcats.conf)
+
+=head2 misc:
+
+ * 'SETP [option]' returns the current value of the given setup option or a
+ list of all options with their current values.
+ The following options can be accessed:
+ - ShowFavoritesMenu
+ - UseSearchTimers
+
+=head2 timer conflicts:
+
+ * 'LSCC [REL]' returns the current timer conflicts. With the option 'REL' only
+ relevant conflicts are listed. The result list looks like this for example
+ when we have 2 timer conflicts at one time:
+
+ 1190232780:152|30|50#152#45:45|10|50#152#45
+
+ '1190232780' is the time of the conflict in seconds since 1970-01-01. It's
+ followed by list of timers that have a conflict at this time:
+
+ '152|30|50#152#45' is the description of the first conflicting timer. Here:
+
+ '152' is VDR's timer id of this timer as returned from VDR's LSTT command
+ '30' is the percentage of recording that would be done (0...100)
+ '50#152#45' is the list of concurrent timers at this conflict
+
+ '45|10|50#152#45' describes the next conflict
+
+
+=head1 10. Customizing the EPG menus
+
+The file F<epgsearchmenu.conf> in your plugins config directory is used to store
+the entries for customizing the EPG menus. You specify the look of each menu
+(What's on now, What's on next, What's on at ..., Schedule, Search results,
+Favorites) with a separate line. Here's a sample:
+
+ MenuWhatsOnNow=%chnr%:3|%progrt2s%:5| %time% %t_status%:8|%category%:6| %title% ~ %subtitle%:35
+ MenuWhatsOnNext=%chnr%:3|%time% %t_status%:8|%category%:8| %title% ~ %subtitle%:35
+ MenuWhatsOnElse=%chnr%:3|%time% %t_status%:8|%category%:8| %title% ~ %subtitle%:35
+ MenuSchedule=%time% %t_status%:8|%genre%:14| %title% ~ %subtitle%:35
+ MenuSearchResults=%chnr%:3|%datesh% %time% %t_status%:14|%genre%:8| %title%%colon% %subtitle%:35
+ MenuFavorites=%chnr%:3|%time%:6|%timespan%:7|%t_status%:14|%genre%:8| %title%%colon%%subtitle%:35
+
+E.g. the entry 'MenuWhatsOnNow' tells epgsearch how you would like to build a
+line for the menu 'What's on now'. This would create a menu line starting with
+the channel number, followed by a progress bar in text2skin style, a space of
+one char, the start time, the timer status, the EPG category (like "movie")
+and finally the title and subtitle.
+
+The values for MenuWhatsOnNext, MenuWhatsOnElse, MenuSchedule,
+MenuSearchResults, MenuFavorites specify the menu 'What's on next', 'What's on
+at ...', 'Schedule', 'Search results' and 'Favorites' respectively. If you do
+not specify one entry, epgsearch uses it's default menu look.
+
+'MenuSearchResults' has something special: If you want to have different
+layouts for your search results depending on the search, you can use more then
+one menu template. Simply define e.g. an additional
+
+ MenuSearchResultsTip of the Day=%chnr%:3|%time_w%:4|%t_status%:3|%genre%:10|%title%%colon% %subtitle%:35
+
+This will produce an additional menu item "Result menu layout" in the edit
+menu of a search where you can choose between the default menu template and your
+own templates. In the example above you will get "Tip of the Day" as selection
+entry, since epgsearch simply cuts the leading "MenuSearchResults". When you
+display the search results the chosen template will be used instead of the
+default one.
+
+The following variables exist:
+
+ %time% - start time in format HH:MM
+ %timeend% - end time in format HH:MM
+ %date% - start date in format TT.MM.YY
+ %datesh% - start date in format TT.MM.
+ %time_w% - weekday name
+ %time_d% - start day in format TT
+ %time_lng% - start time in seconds since 1970-01-01 00:00
+ %timespan% - timespan from now to the beginning of an event, e.g. 'in 15m'
+ or the time an event is already running, e.g. '10m'.
+ %length% - length in seconds
+ %title% - title
+ %subtitle% - subtitle
+ %summary% - summary
+ %htmlsummary% - summary, where all CR are replaced with '<br />'
+ %eventid% - numeric event ID
+ %t_status% - timer status ('T', 't', 'R')
+ %v_status% - VPS status
+ %r_status% - running status
+ %status% - complete status, the same as
+ '%t_status%%v_status%%r_status%'
+
+ %<epg-category>% - a value from the extended EPG categories, specified in
+ epgsearchcats.conf, like %genre% or %category%
+
+for the 'Whats on...' and 'Search results' menu there are also:
+
+ %chnr% - channel number
+ %chsh% - the short channel name (>=vdr-1.3.15)
+ %chlng% - the 'normal' channel name
+ %chdata% - VDR's internal channel representation (e.g. 'S19.2E-1-1101-28106')
+ %progr% - graphical progress bar (not for menu 'Search results')
+ %progrT2S% - progress bar in text2skin style (not for menu 'Search results')
+
+some indepent variables:
+
+ %colon% - the sign ':'
+ %datenow% - current date in format TT.MM.YY
+ %dateshnow% - current date in format TT.MM.
+ %timenow% - current time in format HH:MM
+ %videodir% - VDR video directory (e.g. /video)
+ %plugconfdir% - VDR plugin config directory (e.g. /etc/vdr/plugins)
+ %epgsearchdir% - epgsearchs config directory (e.g. /etc/vdr/plugins/epgsearch)
+
+The variables are not case sensitive. You can also use variables for extended
+EPG categories defined in F<epgsearchcats.conf> or use your own user defined
+variables defined in F<epgsearchuservars.conf>
+
+An entry consists of up to 6 tables separated with '|'. The last entry of
+each table should declare the table width in chars, separated with ':'.
+
+If you use a separator like '~', '-' or '#' to separate items like title or
+subtitle, e.g. %title% ~ %subtitle%, and the subtitle is empty, then epgsearch
+will try to fix this automatically to avoid a trailing separator.
+
+You should vary the tab width values to fit your needs, since the look often
+depends on the selected skin. epgsearchmenu.conf is not reloaded with every
+plugin call, since this is only useful when testing the conf file. To activate
+the permanent reload for testing your conf, pass the new start parameter '-r'
+or '--reloadmenuconf' in your runvdr.
+
+There's a sample F<epgsearchmenu.conf> in the subdirectory "conf". For a quick try
+copy it to your plugins config directory (e.g. /etc/vdr/plugins).
+
+To enable icons from WarEagleIcon-Patch simply put the line
+
+ WarEagleIcons=1
+
+to F<epgsearchmenu.conf>.
+
+NOTE: As long as there is a file epgsearchmenu.conf with an entry for a special
+menu, all setup settings regarding the look of this menu are ignored.
+
+See also C<epgsearchmenu.con(5)>.
+
+=head1 11. Working with the timer conflict menu
+
+If a conflict is detected within the periodic conflict background check you get
+an OSD message which informs you about it. Pressing 'Ok' you will get a menu
+that displays all relevant conflicts. You can manually call this menu in
+epgsearch in the menu 'Search/Actions'.
+
+Besides the relevant conflicts (relevance is controlled via the setup options
+of epgsearch) there may also be conflicts which are not classified as
+important. If so, you can press 'Show all' to get the complete list. The menu
+title always displays the number of relevant conflicts and the total number.
+
+The list displays first the time when a conflict appears and then all timers
+that will fail here. A timer entry consists of the channel number and its name
+followed by the timer priority and the percentage value that shows how much of
+the timer will be recorded. Finally the timer's file entry is displayed.
+
+When you select a timer entry and press 'Ok' or 'Details' you get a new menu
+which displays all concurrent timers. This menu allows you to resolve the
+conflict by
+
+ - searching a repeat for an event
+ - disabling a timer
+ - deleting a timer
+ - changing the timers start- or stop-time or its priority
+ - executing any other commands on this timer
+
+An entry of this menu consists of the sign '>' to indicate an active timer,
+the channel number, the start and stop time, the priority, the number of the
+device that will do the recording (or 'C' for conflict) and the timer's file
+entry. Pressing 'Ok' on a timer entry will show you its event description if
+present.
+
+If one returns from this menu to the conflict overview menu there will be an
+automatic update to see if a conflict was really resolved. Some changes to a
+timer (like modifying start/stop or deleting a timer) in the conflict details
+menu also cause an immediate return to the overview menu and produce an
+update.
+
+=head1 12. User defined variables
+
+You can create your own variables to be used in any place that supports
+variables, like the default recording directory for manually created timers,
+the recording directory of a search timer or in your customized EPG menus.
+Put them in the file F<epgsearchuservars.conf>.
+
+Variables looks like %Variablename%.
+
+"Variablename" can be consist of any alphanumerical character. Space
+and special characters are not allowed.
+
+The variable names are case-insensitive.
+
+Examples for possible names:
+
+ %Series% %DocuVar1% %ThemesSubtitleDate1%
+
+=head2 Assignment
+
+ %Series%=New series~Thriller
+
+The variable %Series% will be assigned with the string "New series~Thriller".
+
+Assignments are always strings. Spaces stay spaces.
+
+ %Path%=%Series%
+
+The variable %Path% gets the content of the variable %Series%.
+
+You can do nearly everything:
+
+ %Path%=%Serie%~Lost
+
+The variable %Path% contains now the string "New series~Thriller~Lost".
+
+=head2 Control structures
+
+You can use simple "if then else" constructions.
+
+These constructions cannot contain strings, only variables.
+Spaces are ignored.
+
+ %Foo%=Other
+
+ %Variable%=%Path% ? %Path% : %Foo%
+
+If %Path% is not empty, assign the content of %Path% to %Variable%,
+otherwise the content of %Foo%.
+
+"%Path% ?" means "not empty?". You can use other checks.
+
+ %Variable%=%Path%!=5 ? %Path% : %Foo%
+
+"%Path%!=5 ?" means "is %Path% equal 5?"
+
+You can also compare variables.
+
+ %Five%=5
+
+ %Variable%=%Path%!=%Five% ? %Path% : %Foo%
+
+Other possible checks:
+
+ == equal
+ != not equal
+
+=head2 Calling a system command
+
+You can call external commands. The returned string will be assigned
+to a variable
+
+ %uservar%=system(scriptname[, parameters])
+
+Calls the script "scriptname" with the parameters defined in the optional list
+of 'parameters'. This can be an arbitrary expression containing other user
+variables, but not again a system call or a conditional expression.
+
+Sample:
+
+ %myVar%=system(/usr/local/bin/myscript.sh, -t %title% -s %subtitle% -u %myOtherVar%)
+
+The script must return a string B<without> line break!
+
+If the script returns nothing, an empty string will be assigned to the
+Variable %Result%.
+
+=head2 Possible variables
+
+for a list of already builtin variables refer to the section "Customizing the EPG menus"
+Furthermore you can use every variable defined in F<epgsearchcats.conf>.
+
+See C<epgsearchcats.conf(5)>.
+
+=head2 EXAMPLES
+
+ # Weekday, Date, Time
+ %DateStr%=%time_w% %date% %time%
+
+ # Themes or Subtitle or Date
+ %ThemesSubtitleDate1%=%Subtitle% ? %Subtitle% : %DateStr%
+ %ThemesSubtitleDate%=%Themes% ? %Themes% : %ThemesSubtitleDate1%
+
+ # Calls this script to get a recording path
+ %DocuScript%=system(doku.pl, -t %Title% -s %Subtitle% -e %Episode% -th %Themes% -c %Category% -g %Genre%)
+ %Docu%=%DocuScript%
+
+=head1 13. Email notification
+
+If you want to get email notifications about timers added/modified/removed by
+the search timer thread or about timer conflicts, first copy the script
+'sendEmail.pl' to the place where your executables are (e.g. /usr/local/bin)
+and then configure your email account in the setup. Press 'Test' to check if
+it works. There should be something like 'Email successfully sent' at the end
+of the output.
+The content of the mails is defined by the files
+
+ - epgsearchupdmail.templ (for search timer update notifications)
+ - epgsearchconflmail.templ (for timer conflict notifications)
+
+You can find sample files in the 'conf' directory. Copy them to epgsearchs
+config directory (e.g. /etc/vdr/plugins/epgsearch).
+
+=head2 Customizing the notifications mails
+
+The content of the mails can be customized in many ways. You can use plain
+text or HTML (see the sample conf/epgsearchupdmail-html.templ). For an update
+mail you have to define the following sections:
+
+ - "subject" to be used as mail subject
+ - "mailbody" the body of the mail:
+ put '%update.newtimers%' in the place where the list of new timers should
+ appear. The same for %update.modtimers% and %update.deltimers% for the
+ list of changed or deleted timers.
+ - "timer" the description of one timer. This section is used to display one
+ timer within a timer list, e.g. in %update.newtimers%
+
+each section is enclosed in a pseudo XML tag.
+
+The following variables can be used in the section <mailbody>:
+
+ - %update.newtimers% - will be replaced with the list of new timers
+ created with this update. The timers are
+ displayed as defined in the section '<timer>'
+ - %update.countnewtimers% - the number of new timers
+ - %update.modtimers% - same as %update.newtimers% but for modified
+ timers.
+ - %update.countmodtimers% - the number of modified timers
+ - %update.deltimers% - same as %update.newtimers% but for deleted
+ timers. (Note: a deleted timer has eventually
+ no event assigned to it. So all event variables
+ within the timer section will be substituted to
+ an empty string.)
+ - %update.countdeltimers% - the number of deleted timers
+ - %colon% - the sign ':'
+ - %datenow% - current date in format TT.MM.YY
+ - %dateshnow% - current date in format TT.MM.
+ - %timenow% - current time in format HH:MM
+
+The following variables can be used in the section <timer>:
+
+ - %timer.date% - date of the timer
+ - %timer.start% - start time of the timer
+ - %timer.stop% - stop time of the timer
+ - %timer.file% - recording directory of the timer
+ - %timer.chnr% - channel number
+ - %timer.chsh% - short channel name
+ - %timer.chlng% - channel name
+ - %timer.search% - name of the search timer, that created the timer
+ - %timer.searchid% - id of the search timer, that created the timer
+ - any event variable (as in '10. Customizing the EPG menus')
+ - any extended EPG variable as defined in epgsearchcats.conf
+ - any user variable (as in '12. User defined variables')
+
+For a conflict notification mail the following sections exist:
+
+ - "subject" to be used as mail subject
+ - "mailbody" the body of the mail. Put %conflict.conflicts% in the place
+ where the list of conflict times should appear (Note: there can be more
+ than one timer conflict at the same time!). A conflict time uses the
+ section 'conflictsat' to display its content.
+ - "conflictsat" the description of one time where one or more conflicts
+ exists. Put %conflict.confltimers% in the place where the list of conflict
+ timers should appear.
+ - "confltimer" the description of one conflicting timer
+
+The following variables can be used in the section <mailbody>:
+
+ - %conflict.count% - complete number of timer conflicts
+ - %conflict.conflicts% - list of times with conflicting timers
+
+The following variables can be used in the section <conflictsat>:
+
+ - %conflict.date% - date of the conflict
+ - %conflict.time% - time of the conflict
+ - %conflict.confltimers% - list of conflicting timers for this time
+
+The section <conflicttimer> can use the same variables as the section <timer>
+in an update mail (see above).
+
+
+=head1 SEE ALSO
+
+C<epgsearch(1)>, C<epgsearch.conf(5)>, C<epgsearchuservars.con(5)>, C<epgsearchdirs.conf(5)>, C<epgsearchmenu.conf(5)>, C<epgsearchcmds.conf(5)>
+
+=head1 AUTHOR (man pages)
+
+Mike Constabel <epgsearch (at) constabel (dot) net>
+
+=head1 REPORT BUGS
+
+Bug reports (german):
+
+L<http://www.vdr-developer.org/mantisbt/>
+
+Mailing list:
+
+L<http://www.vdr-developer.org/mailman/listinfo/epgsearch>
+
+
+=head1 COPYRIGHT and LICENSE
+
+Copyright (C) 2004-2007 Christian Wieninger
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+
+The author can be reached at cwieninger@gmx.de
+
+The project's page is at http://winni.vdr-developer.org/epgsearch
+
+The MD5 code is derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm.
+
+
+