From VDR Wiki
Revision as of 15:18, 15 May 2012 by Ludi (Talk | contribs)

Jump to: navigation, search

This page is a loose translation of the page about the xmltv2vdr-plugin available in the german wiki.

Current Version

Version 0.1.1


xmltv2vdr is a plugin for the VDR that imports EPG-Data into the VDR. By itself, it does not fetch any EPG-Data; the EPG-Data has to be supplied by third-party software to xmltv2vdr in xmltv format.

The third-party software to fetch the EPG-Data is not part of xmltv2vdr because of legal issues (cf VG_Media).

Software Requirements

libxml2, libsqlite3, libpcre

VDR >= 1.6.0


Assuming that the xmltv2vdr plugin has been installed on the VDR in conjunction to third-party software that uses the xmltv2vdr plugin to get the EPG-Data into the VDR, the configuration about

  • what EPG-Data sources to use
  • what channels of the source correspond to what channels of the VDR
  • other configurations like frequency of updates, etc.

is completely done in the OSD of the VDR.

The OSD of the xmltv2vdr plugin can be accessed under the plugins settings.

Third-party EPG-Data Sources

For the end-user

The configuration and usage of the third-party EPG-Data sources will not be discussed here.

The third-party software to fetch the EPG-Data is not part of xmltv2vdr because of legal issues (cf VG_Media).

For the developers of the third-party software providing EPG-Data

The interface between the xmltv2vdr plugin and the third-party software providing the EPG-Data has been defined like this:

  • Every source must have a control file in the /var/lib/epgsources directory. This control file is a text file that contains information to control the xmltv2vdr plugin and a list of the channels offered by the source. The name of the control file can be chosen freely, but must not have an extension. The control file on the VDR must be readable by the vdr-user. (Please, have a look below for examples of valid control files.)
  • Every source must have an executable file that offers the EPG-Data in the appropriate format to the xmltv2vdr plugin. The binary file has to be in the path of the executables of the VDR. The binary file must have the same name as the control file, to which it corresponds. The executable is called with the following parameters: Number of days, Pin, Channelnames (example: 5 ‘‘ ard.de zdf.de)
  • The EPG-Data has to be a valid xmltv format and is passed to the xmltv2vdr plugin by using a pipe or a file. (Please, have a look below for an example of a valid xmltv file.)
  • The xmltv2vdr plugin uses an own set of channelnames to which the developers of the third-party plugins should conform. This list of channelnames is far from being complete and is available near the end of the german wiki page of the xmltv2vdr plugin. If you need channelnames, that are not yet available in the list, you should use the following format to define them: channelname.countrycode; for example, ard.de, orf.at, dk1.dk, france2.fr, rai1.it, detski-mir.ru, kanal-7-int.tr, sf1.ch,... Please, let us know about the new channels that you have defined by adding them to the german wiki page.

More details about the control file

  • The first line of the control file starts with the word file or pipe.
    • If the first word is file, the binary has to put a file into the /var/lib/epgsources directory with the EPG-Data in valid xmltv format. The file with the EPG-Data must have the same name of the control file followed by the xmltv extension. For example, if the control file is named myEPG, the file with the data has to be named myEPG.xmltv.
    • The words file and pipe can optionally be followed by:
      • a semi-colon and the thime of the day at which it has to be run
      • a semi-colon and a flag (0/1) to indicate whether the source needs a Pin
  • The second line contains the maximum number of days, the source is providing EPG-Data for.
  • Starting from the third line, each line specifies:
    • one binding channelname for which the source is providing EPG-Data
    • the channelname can optionally be followed by a semi-colon and any data the third-party source might want to put there; this data is ignored by the xmltv2vdr plugin

Some control file examples:


More details about the xmltv file

  • The xmltv structure, that gets passed to the xmltv2vdr plugin has to be a valid xmltv structure. In the case of a file, the validity of the structure can checked by the tv_validate_file executable of xmltv.
  • There is an extension of the xmltv format for the Event-ID, that does not cause troubles to the validators cited above: the Event-ID, that in fact consists of only one number, is simply add as a category. (Please have a look at the following example.)

Example of a valid xmltv structure:

<?xml version="1.0" encoding="utf-8"?>
<tv generator-info-name="tvm2xmltv">
<channel id="rtl.de">
<display-name lang="de">rtl.de</display-name>
<programme start="20110103002500 +0000" stop="20110103015500 +0000" channel="rtl.de" showview="6-851-241">
<title lang="de">Samba in Mettmann</title>
<title>Samba in Mettmann</title>
<desc lang="de">Eine attraktive Verlobte, ein sicherer Job ...</desc>
<director>Angelo Colagrossi</director>
<actor>Doris Kunstmann</actor>
<actor>Hape Kerkeling</actor>
<writer>Angelo Colagrossi</writer>
<writer>Hape Kerkeling</writer>
<producer>Amo Müller</producer>
<producer>Matthias Wendlandt</producer>
<composer>Darius Zahir</composer>
<editor>Sabine Brose</editor>
<category lang="de">Spielfilm</category>
<category lang="de">Komödie</category>
<category lang="de">16023614</category>
<rating system="FSK"><value>6</value></rating>
<review type="text">Schade - Hape kanns eigentlich besser!</review>

List of already defined and binding channelnames

To avoid having the channelnames scattered around different pages or to have two list that are not always synchronised, the list will not be duplicated here. Please, use the list of the binding channelnames maintained at section 6.3 on the german wikipage of the xmltv2vdr plugin.


  1. Plugin-Homepage
  2. XMLTV Homepage