Add program genre and parental rating information to IceTV EPG cache

Issue #651 resolved
prl created an issue

At the moment, the EPG importer method, void eEPGCache::importEvents(ePyObject serviceReferences, ePyObject list) can only import a single genre value and cannot import parental ratings values.

The IceTV EPG feed has multiple genre values per event and has parental rating information. Neither is currently imported into the EPG cache.

The proposal is to extend the tuples list implementation in eEPGCache::importEvents(ePyObject serviceReferences, ePyObject list) so that the tuples in list allow either a single integer genre value as the 6th tuple element, or for it to be a tuple (or list) of integer genre values, and to add an optional 8th tuple element that contains a tuple (or list) of parental rating values (country, rating tuples).

The problem is complicated by the fact that IceTV sometimes uses multiple genre (IceTV category) names for a single integer genre values . For example, the genre value 0x11 can have 4 different genre names: "Crime" "Murder", "Mystery" & "Thriller".

In order to display all the available IceTV genre names, any additional genre names for an integer genre value will need to be remapped to a new integer value before the integer values are imported into the EPG cache.

Parental ratings also need to be mapped from IceTV feed text values to their corresponding integer values before importing them, but that is simpler.

I have copies of the current genre value, name pairs and the list of all text parental ratings values from Daniel Hall at IceTV, and have code written to do the remapping while preserving the original IceTV genre values where possible.

To display the multiple genres from IceTV, issue #650 needs to be implemented.

Comments (3)

  1. Peter Urbanec

    Fix issue #651: Add program genre and parental rating information to IceTV EPG cache

    Add structure for representing EIT parental rating.

    Add new methods eEPGCache::submitEventData() to submit event data that includes a vector of event types (genres) and a vector of parental ratings.

    Add code to void eEPGCache::submitEventData( const std::vector<int>& sids, const std::vector<eDVBChannelID>& chids, long start, long duration, const char title, const char short_summary, const char* long_description, std::vector<uint8_t> event_types, std::vector<eit_parental_rating> parental_ratings, eit_type_t source, uint16_t eventId) to load the event_types and parental_ratings vectors into the EPG cache.

    Re-implement the old, more limited methods for submitting event data by calls to the new methods.

    Extend eEPGCache::importEvents(ePyObject serviceReferences, ePyObject list) so that the tuples in their list can have either a single event type or a tuple or list of event types as the 6th element, and an optional 8th element that is a list or tuple of (country[string 3 bytes], parental_rating [byte]) tuples.

    → <<cset a2737c4216d7>>

  2. Peter Urbanec

    Fix issue #651: Add program genre and parental rating information to IceTV EPG cache

    Add code to IceTV plugin EPGFetcher.makeChanShowMap() to add parental rating and genre (IceTV category) information to evens in the EPG cache.

    This includes adding code to remap IceTV EIT codes for genres so that each EIT genre name has a unique EIT code (the IceTV feed uses several nemas for some of its EIT codes).

    Add an IceTV-specific genre object to convert the re-mapped EIT codes back to the original IceTV genre/category names.

    The IceTV lookup also uses different genre string lookup functions, because IceTV has different rules about the use of the EIT code values, including using the 0x00-0x0f range which are reserved in the Australian and ETSI standards for SI data.

    Bump IceTV plugin version.

    → <<cset 34fabb7e124e>>

  3. Log in to comment