The solution is to download the programme guide from the Radio Times website, but with this, there are a few issues:
- Radio Times do not use exactly the same names for the channels as Sky do
- The dreambox manages its channels with transponder IDs rather than names
This project involves writing Python scripts to interrogate the channels that have been programmed into the Dreambox, identify the equivalent Radio Times programme guide file, and automatically generate a minimal radiotimes.xml file.
First Step
The First step is to identify the favorite channels - these can be found in /etc/enigma2/userbouquet.*, in the following format:
#NAME Favourites (TV)
#SERVICE 1:64:0:0:0:0:0:0:0:0:
#DESCRIPTION Favourites
#SERVICE 1:0:1:1af7:802:2:11a0000:0:0:0:
The fields above are:
0×11a0000 - namespace (I think that this is the transponder)
0×1af7 - sid - Service Identification
0×0802 - tsid - Transmission Signal ID
0×0002 - onid -
The correlation between service IDs and Sky channel names is found in /etc/enigma2/lamedb, and is in the following format:
…..Next, we need a correlation between the Sky Names and the Radio Times Equivalent Names. This is the only file which must be manually maintained, and is used by the script. The file (xref.dat) is in the following format:
services
1af7:011a0000:0802:0002:1:0
BBC 1 East (W)
p:BSkyB,c:000901,c:010902,c:020909,c:030901
1af7:00c0aa5f:0802:0002:1:0
BBC 1 East (W)
p:BSkyB
Sky Channel Name,Provider|RadioTimesName|OffsetThis file enables the Sky Names to be cross-referenced with the Radio Times Names (for example, in the above example, there are two Eastern Region BBC stations (E) and (W), but Radio Times only provides the one feed.
BBC Prime,Globecast|BBC Prime|0:00
BBC London,BskyB|BBC1 London & South East|0:00
BBC 1 East (E),BskyB|BBC1 East|0:00
BBC 1 East (W),BSkyB|BBC1 East|0:00
BBC 1 London,BskyB|BBC1 London & South East|0:00
Virgin 1+1,BskyB|Virgin 1|1:00
Virgin 1,BskyB|Virgin 1|0:00
Watch +1,BskyB|Watch +1|0:00
Watch,BskyB|Watch|0:00
The last field in the file (offset) is not currently used in any script. The intention is that this is used when there is a channel + 1 hour, but there is no + 1 hour feed on Radio Times (Virgin is an example). The theory here is that the download script can dynamically adjust the start times for that particular channel during the download.
A Timezone Aside
The Dreambox and LT Image use GMT as the standard time, and everything works from there. This is essential, particularly when the same satellite decoder receives signals brodcast for different countries in different timezones.
Radiotimes, however, is always based in the UK in the same timezone. radio times adjusts for daylight saving, so all you need to do is look at the clock.
The LT EPG system has a timezone offset in the configuration file, which (today) must be manually edited twice a year.
Back to the Plot ...
Now that we know the transponder details, and the name of the Radio Times channel, we can look at the Radio times index file (http://xmltv.radiotimes.com/xmltv/channels.dat), which is in the following format:
90|BBC World (CET)With this information, we now know which file to download for the channel, and we construct the XML entries for the radiotimes.xml configuration file, which is created in the following format (note that the offset tag is not currently used by anything):
92|BBC1
93|BBC1 East
94|BBC1 London & South East
95|BBC1 Midlands
96|BBC1 North
97|BBC1 North East
<channel>Once the radiotimes.com.xml file has been generated, the download can take place. i have all the scripts installed on the Compact Flash Card (/media/cf)
<name>BBC 1 East</name>
<type>radiotimes</type>
<service>1af7:802:2</service>
<offset>0:00</offset>
<url>http://xmltv.radiotimes.com/xmltv/93.dat</url>
</channel>
python ./LTEpgGrab.pyc /media/cf/LTEpg/radiotimes.com.xml /media/cf/LTEpg epg_external.dat
The Scripts themselves have been uploaded to the LT Forum