=head1 NAME F - Searchtimer and replacement of the VDR program menu =head1 OVERVIEW EPG-Search can be used as a replacement for the default schedules menu entry. It looks like the standard schedules menu, but adds some additional functions: - Commands for EPG entries with 5 built-in commands like 'show repeats', 'create search'. One can add own commands for other needs, like adding a VDRAdmin auto-timer. - Add up to 4 user-defined times to 'now' and 'next' and an optional favorites menu - Searching the EPG: Create reusable queries, which can also be used as 'search timers'. - Search timers: Search for broadcasts in the background and add a timer if one matches (similar to VDRAdmin's auto-timers) or simply make an announcement about it via OSD - Avoid double recordings of the same event * timer preview * recognition of broken recordings * fuzzy event comparison - Progress bar in 'What's on now' and 'What's on next' - Shift the time displayed by key press, e.g. 'What's on now' + 30 minutes - Start menu can be setup between 'Schedule' or 'What's on now' - background check for timer conflicts with a timer conflict manager - detailed EPG menu (summary) allows jumping to the next/previous event - support for extended EPG info for search timers - extension of the timer edit menu with a directory item, user defined weekday selection and a subtitle completion. - Timer conflict check, informs you over the OSD about conflicts - Timer conflict menu, show detailed information about the conflicts and let you resolve them - Email notifications about search timer updates and timer conflicts Works only with >= vdr-1.3.46 or newer. Parts of the sources are based on the repeating-ECG patch from Gerhard Steiner, who gave me the permission to use them. Thanks for his work! =head1 OPTIONS =over 4 =item -f file, --svdrpsendcmd=file the path to svdrpsend.pl for external SVDRP communication (default is internal communication, so this is usually not needed anymore) =item -c path, --config=path to specify a specific config directory for all epgsearch config files, default is '/epgsearch' =item -l file, --logfile=file to specify a specific log file for epgsearch (default log file is epgsearch.log in the epgsearchs config directory) =item -v n, --verbose=n verbose level for log file. Value 0 means no logging. Other values are 1 (general messages), 2 (detailed messages), 3 (planned for extra detailed info for debugging purposes) =item -r, --reloadmenuconf reload epgsearchmenu.conf with plugin call. This can be useful when testing customized menu layouts. =item -m file, --mailcmd=file the external command to be used for mail delivery. The default uses 'sendEmail.pl'. If you are using a different command or script make sure that it has the same parameter interface as sendEmail.pl. =back =head1 CONTENT 1. Description 1.1 Menu commands 1.2 Menu search 1.2.1 Menu edit search 1.2.2 Menu search results 1.3 Extended 'now' and 'next' 1.4 Menu setup 2. Search timers 2.1 'Avoid repeats' - internals 2.2 How do we compare two events? 2.3 How and when do we compare? 3. Usage from other plugins or scripts 4. Using extended EPG info 5. Replacing the standard schedule menu 6. Add-ons =head1 1. Description At first glance EPG-Search looks like the schedules menu entry of VDR. By pressing the key '0', one can toggle the bottom color keys to access additional functions (the default assignment of the color keys can be adjusted by setup): =head2 1.1 Menu Commands This menu displays commands that can be executed on the current item. There are 8 built-in commands: - Repeats: Searches for repeats - Record - Switch - Create search Switches to search menu and adds a new search with the name of the current item (to avoid editing the name manually) - Search in recordings: Search the recordings for a broadcast with the same name - Mark as 'already recorded': This puts the selected event in the file epgsearchdone.data and instructs epgsearch to avoid recording this event if an according search timer is set to "avoid repeats". An already created timer will be automatically removed with the next search timer update. - Add/Remove to/from switch list?: Controls the switch list. If there is an event in the switch list, epgsearch will announce it and switch to the event before it starts. To access the complete switch list, call 'Search/Actions/Switch list'. - Create blacklist: A blacklist is used to ignore events when using search timers. A search timer can be setup to ignore events from arbitrary blacklists. You can add your own commands to this menu by editing the file epgsearchcmds.conf in epgsearchs config directory. There's a sample conf file with some sample commands (see directory 'scripts', taken from vdr-wiki.de, thanks to the authors). The format of the file is the same as VDR's commands.conf or reccmds.conf. When a command is executed the following parameters are passed to it: $1: the title of the EPG entry $2: the start time of the EPG entry as time_t value (like in the shutdown script) $3: the end time $4: the channel number of the EPG entry $5: the long channel name of the EPG entry $6: the subtitle of the EPG entry, "" if not present To execute a command from the main menu you can also press its associated number without opening the commands menu. =head2 1.2 Menu search Here you can add, edit, delete and execute your own queries on the EPG. The usage and behavior of this menu is similar to VDR's timer menu. =head3 1.2.1 Menu edit search Most things in this menu are quite clear, so only some notes on: =over 4 =item - B The term to search for. If you like to search for more words, separate them by blanks. Leaving this empty (combined with search mode 'Phrase') will match anything. This is useful, if you search e.g. for anything that starts between some times on a specific channel. With 'blue' you can also select a template for the new search. If one of the templates is set to default, new searches will automatically get the settings of the default template. Note: fuzzy searching is limited to 32 chars! =item - B 'Phrase' searches for the expression within the EPG. 'All words' requires, that each word of the expression occurs in the EPG item. 'at least one word' requires, that only one word occurs in the EPG item. 'Match exactly' requires, that your search term matches exactly the found title, subtitle or description. With 'Regular expression' you can setup a regular expression as search term. You don't need a leading and trailing '/' in the expression. By default these are POSIX extended regular expressions. If you like to have Herl compatible regular expression, simply edit the plugins Makefile and uncomment #HAVE_PCREPOSIX=1 to HAVE_PCREPOSIX=1 (you will need pcreposix installed, comes with libpcre from www.pcre.org, but it's already part of most distributions). See also C 'Description of the search process'. =item - B Only available if configured, see below 'Using extended EPG info'. =item - B If set to 'Yes' this tells epgsearch that a missing EPG category should not exclude an event from the results. Caution: Using this without any other criterions could flood your timers. =item - B Search only for events in the given channels interval, channel groups or FTA channels only. Channel groups (e.g. sport channels or Pay-TV channels) can be managed with a sub-menu called with 'blue'. ATTENTION: After changing the channels order please check the settings of your search timers! =item - B Besides the weekdays you can also set up a user-defined selection, e.g. search only on Monday and Friday. You'll find the user-defined selection in the list after Friday. =item - B You can select one or more or all blacklists here. If any search result is also contained in one of the selected blacklists it will be skipped. =item - B Only available if turned on in setup. With this option you can mark a search to be used in the favorites menu. The search results of all these searches are listed in the favorites menu. =item - B Only available if you have defined more than one menu template for search results in epgsearchmenu.conf. This option is used to assign a different menu layout for the search results of this search. =item - B If set to yes, the plugin will do a background scan of the EPG in certain intervals and add a timer, if there is a match. You have to activate the 'search timers' in the setup. If set to "user defined" one can specify time margins with key 'blue' where the search timer is active or not. =item - B Default action is creating a timer for the search results. But you can also choose to simply announce the found event via OSD or to switch to the event one minute before it starts. =item - B If set to yes, the recordings will be stored in a folder with the name of the broadcasting and the recordings itself will have the name of the episode. If there is no episode name, the date and time of the recording will be used. =item - B Here you can assign a directory, where the recording should be stored, e.g. 'SciFi'. Use the key 'blue' to select directory entries already used in other search entries or given by entries in the file epgsearchdirs.conf (simply place your directories here one at each line without the leading video directory, also see MANUAL). If your provider delivers extended EPG infos you can also use variables like "%Genre%" or "%Category%" in your directory entry. These are replaced with the current EPG info, when a timer is created. See also C 'Using variables in the directory entry of a search timer'. =item - B Some recordings should only be kept for a few days, like news. With this feature you can tell epgsearch to delete them automatically after ... days. =item - B If the given numbers of recordings currently exists, then epgsearch will not create further timers. After deleting one or more recordings it will go on generating new timers. =item - B If you don't want to record repeats, this feature tries to check if an event was already recorded/programmed and skips it. Please refer to the section 'Avoid repeats - internals' below before using it. =item - B If you like to accept a certain amount of repeats you can give here their number. =item - B Give here the number of days a repeat has to follow its first broadcast. 0 is equal to no restriction. =item - B When comparing to events then specify here if the title should be compared. =item - B When comparing to events then specify here if the subtitle should be compared. If there is no subtitle than this event is always different to an event with/without a subtitle. =item - B When comparing to events then specify here if the description should be compared. For comparison all parts of the description, that look like a category value, are removed first. The remaining text will be compared. If this is similar at 90% (regarding the Levinshtein-Distance algorithm) then it will be accepted as equal. =item - B With the button 'setup' you can also specify which categories should be compared. As with subtitles an event is different if it has no according category value. =item - B Each search timer can have its own settings for these parameters. Defaults can be adjusted in the plugins setup. =item - B If set to yes, VPS is used, but only, if activated in VDR's setup menu and if the broadcasting has VPS information. =item - B to automatically delete a search timer if the following is true: * after x recordings, or * after x days after the first recording Only complete recordings are counted. The deletion is executed directly after the correspondig recording =back To toggle the flag 'Use as search timer' without editing the search entry you can use the key '2'. This will call directly the second command of the command menu. =head3 1.2.2 Menu search results This menu displays the search results. A 'T' lets you know, that there is already a timer for the event. A 't' means that there's only a partial timer for it, as in standard schedules menu. =head2 1.3 Extended 'now' and 'next' and favorites By setup, one can add up to 4 additional times to extend the green button, e.g. 'afternoon', 'prime time', 'late night'. Times, that are already passed, are skipped (you will not get 'afternoon' at evening) with the exception that a time will be displayed for the next day, if it is less then 20h in the future. In these menus you can shift the currently displayed time by pressing FastRew or FastFwd to move back and forward in time. If you don't have these keys on your remote, you can access this function by pressing '0' to toggle the green and yellow button to '<<' and '>>'. This toggling can be adjusted by setup. You can display a progress bar in 'now' and 'next'. When using text2skin you should use the setup option "text2skin" in the setup option "Show progress in 'Now'"/Show progress in 'Next'" (the setting 'graphical' may also work with text2skin, but this depends on the selected skin). Furthermore you can enable in the setup an favorites list. You can configure your searchtimers ("Use in favorite list") to display their results in you favorite list. This list display event in the next 24 hours ordered by time. =head2 1.4 Menu setup =head3 1.4.1 General =over 4 =item - B This hides the main menu entry 'search'. Attention: when the plugin is assigned to key 'green' then hiding the plugin will give you VDR's standard schedule menu (see below to avoid this). =item - B
If not hidden, the name of main menu entry can be set here. Default is 'Program guide'. Note: If you set it to something different from the default then the main menu entry is no longer dependent on the OSD language. Setting it back to default or empty restores this behavior again. =item - B Select the starting menu 'Schedules' or 'Now' =back =head3 1.4.2 EPG menus =over 4 =item - B Choose here the behavior of key 'Ok'. You can use it to display the summary or to switch to the corresponding channel. Note: the functionality of key 'blue' (Switch/Info/Search) depends on this setting. =item - B Select if you like to have Standard ('Record') or 'Commands' as assignment for key 'red'. =item - B select if you like to have Standard ('Switch') or 'Search' as assignment for key 'blue'. =item - B In the menu 'what's on now' you can display a progress bar, that displays the progress of the current item. When using text2skin you should use the setup option "text2skin" (the setting 'graphical' may also work with text2skin, but this depends on the selected skin). =item - B Select this if you like to have a leading channel number before each item in the EPG menus. =item - B Display channel group separators between channel in the menus 'Overview now',... =item - B Display a day separator between events on different days in the schedule menu. =item - B Also list radio channels. =item - B If you have a large channel set you can speed up things when you limit the displayed channels with this setting. Use '0' to disable the limit. If the current channel is above the limit, the limit is ignored and all channels will be displayed again. =item - B<'One press' timer creation:> If set to 'yes' a timer is immediately created when pressing 'Record' as introduced in vdr-1.3.38, else the timer edit menu is displayed. =item - B Display channels without EPG to allow switching or create a timer. =item - B