Feature #5161

RFE: Don't let higher priority EPG erase an already filled field if it has no data for the field

Added by Ludi K. almost 5 years ago. Updated almost 5 years ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:



From the pieces of information I found by googling, it seems that tvheadend merged EPG data from different sources before version 4.1 of tvheadend. Thus, a procedure to find matching events in the different EPG sources might already exist.

Currently, the different EPG sources have got a priority and the data of the event with the highest priority wins and fills all the fields of the event.

From my empirical tests, it even erases the information of lower priority EPG sources, if the field in the higher priority source is empty. Thus, could you please consider having a higher priority source not erase an already filled event field, if it does not have data to replace it with. For example:

Let's assume that we have a low priority EPG source, that contains episode information and a higher priority EPG source without the episode information. It might be sensible to keep the episode information from the lower priority source instead of erasing it because the higher priority source has an empty episode field.

Somebody might ask: Why not swap the priorities of the sources?

An answer to this question might be: Because the higher priority source is the EIT data, which also contains last minute changes.

Thanks for reading this and maybe take some actions about it.

Have a nice day.



Updated by Ludi K. almost 5 years ago

A look at the following forum thread might be of interest, too:


Updated by da h4xX0rz1sT almost 5 years ago

Yeah, +1 on that.

At the moment AFAIK you can only use external tools to do this, e.g.
tv_grab_dvb to grab OTA EPG and
webgrabplus to scrape some internet sites

then combine them using xmlstarlet or tv_combiner (from xmltv tools)

then import them into tvheadend (tv_grab_file).

It's a bit cumbersome, but works.



Updated by Jaroslav Kysela almost 5 years ago

  • Status changed from New to Rejected

You don't see the other part of this. The merging caused a lot of other issues when the event cannot be correlated correctly between sources. TVH uses the start time as the key.

To force merging, you can change four lines in src/epg.c:

 if (merge) return 0;


 if (merge || 1) return 0;

But, please, do not report EPG related bugs after this change.


Updated by Ludi K. almost 5 years ago

First of all, thanks for taking the request into account and for replying to it.

I am aware that in order to apply even only a partial merge, there has to be a way to identify the matching events in the different epg sources and I can imagine that the start time as a key to be a bit error prone.

As far as I know, the xmltv import extension from the vdr uses some kind of eventID to do the matching. Unfortunately, I don't know the details and I don't have the required knowledge to give you more details, but the following page might be helpful, if you are interested:

Please, don't get me wrong: I am not looking for a replication of xmltv2vdr in TVH; I pointed you to the xmltv2vdr plugin in the hope that it might give you some additional ideas about the matching of events.

Also available in: Atom PDF