Project

General

Profile

Epgdb » History » Revision 18

Revision 17 (Dave Chapman, 2012-11-13 09:37) → Revision 18/23 (Dave Chapman, 2012-11-13 09:38)

h1. EPG database structure

This page is a work-in-progress to document the internal EPG database structure in tvh.

The "HTSP" column indicates the name of the field in the HTSP event message.

The "Populated from" columns indicate which EPG grabbers can populate that field.

{{toc}}

h2. Brand object - epg_brand_t

|\4=. | |\4=.Populated from|
|_.Field|_.Type|_.Description|_.HTSP| |_.DVB EIT|_.OpenTV|_.XML TV|_.PyEPG|
|id|uint32_t|Internal ID|brandId| | | | | |
|uri|char*|Unique ID (from grabber)| | | | | | |
|title|lang_str_t*|Brand name| | | | | | |
|summary|lang_str_t*|Brand summary| | | | | | |
|season_count|uint16_t|Total number of seasons| | | | | | |
|image|char*|Brand image| | | | | | |
|seasons|epg_season_list_t|Season list| | | | | |
|episodes|epg_episode_list_t|Episode list| | | | | |

h2. Season object - epg_season_t

|\4=. | |\4=.Populated from|
|_.Field|_.Type|_.Description|_.HTSP| |_.DVB EIT|_.OpenTV|_.XML TV|_.PyEPG|
|id|uint32_t|Internal ID|seasonId| | | | | |
|uri|char*|Unique ID (from grabber)| | | | | | |
|summary|lang_str_t*|Season summary| | | | | | |
|number|uint16_t|The season number| | | | | | |
|episode_count|uint16_t|Total number of episodes| | | | | | |
|image|char*|Season image| | | | | | |
|brand|epg_brand_t|Parent brand| | | | | |
|episodes|epg_episode_list_t|Episode list| | | | | |

h2. Episode object - epg_episode_t

|\4=. | |\4=.Populated from|
|_.Field|_.Type|_.Description|_.HTSP| |_.DVB EIT|_.OpenTV|_.XML TV|_.PyEPG|
|id|uint32_t|Internal ID|episodeId| | | | | |
|uri|char*|Unique ID (from grabber)| | |=. Yes | | | |
|title|lang_str_t*|Title|title| |=. Yes |=. Yes | | |
|subtitle|lang_str_t*|Sub-title| | | | | | |
|summary|lang_str_t*|Summary|summary*| | | | | |
|description|lang_str_t*|An extended description|description*| | | | | |
|image|char*|URL of episode image|image| | | | | |
|genre|epg_genre_list_t|Episode genre(s)|contentType*| |=. Yes |=. Yes | | |
|epnum|epg_episode_num_t|Episode numbering| | | | | | |
|is_bw|uint8_t|Is black and white| | |=. Yes | | | |
|star_rating|uint8_t|Star rating|starRating| | | | | |
|age_rating|uint8_t|Age certificate|ageRating| |=. Yes | | | |
|first_aired|time_t|Original airdate|firstAired| | | | | |
|brand|epg_brand_t*|(Grand-)Parent brand| | | | | | |
|season|epg_season_t*|Parent season| | | | | | |
|broadcasts|epg_broadcast_list_t|Broadcast list| | | | | | |

* summary/description will be replaced with the versions in the specific broadcast, if they differ.
* contentType contains only the first genre in the case where multiple genres are stored.

h3. Episode numbering object - epg_episode_num_t:

This is for some back-compat and also to allow episode information to be "collated" into easy to use object

|\4=. | |\4=.Populated from|
|_.Field|_.Type|_.Description|_.HTSP| |_.DVB EIT|_.OpenTV|_.XML TV|_.PyEPG|
|s_num|uint16_t|Series number|seasonNumber| | | | | |
|s_cnt|uint16_t|Series count|seasonCount| | | | | |
|e_num|uint16_t|Episode number|episodeNumber| | | | | |
|e_cnt|uint16_t|Episode count|episodeCount| | | | | |
|p_num|uint16_t|Part number|partNumber| | | | | |
|p_cnt|uint16_t|Part count|partCount| | | | | |
|text|char*|Arbitary text description of episode num|episodeOnscreen| | | | | |

h2. Broadcast object - epg_broadcast_t

This object contains the details of a specific airing (channel & time) of an episode.

|\3=. | |\4=.Populated from|
|_.Field|_.Type|_.Description|_.HTSP| |_.DVB EIT|_.OpenTV|_.XML TV|_.PyEPG|
|id|uint32_t|Internal ID|eventId| | | | | |
|uri|char*|Unique ID (from grabber)| | |=. No | | | | |
|dvb_eid|uint16_t|DVB Event ID| | |=. Yes | | | |
|start|time_t|Start time (UTC)|start| |=. Yes |=. Yes |=. Yes |=. Yes | | |
|stop|time_t|Stop time (UTC)|stop| |=. Yes |=. Yes |=. Yes |=. Yes | | |
|is_widescreen|uint8_t|Is widescreen| | |=. Yes | |=. Yes |=. Yes |
|is_hd|uint8_t|Is HD| | |=. Yes | |=. Yes |=. Yes |
|lines|uint16_t|Lines in image (quality)| | | | |=. Yes | |
|aspect|uint16_t|Aspect ratio (*100)| | | | |=. Yes | |
|is_deafsigned|uint8_t|In screen signing| | |=. Yes | |=. Yes | |
|is_subtitled|uint8_t|Teletext subtitles| | |=. Yes | |=. Yes | |
|is_audio_desc|uint8_t|Audio description| | |=. Yes | |=. Yes | |
|is_new|uint8_t|New series / film premiere| | | | |=. Yes |=. Yes |
|is_repeat|uint8_t|Repeat screening| | | | |=. Yes |=. Yes |
|summary|lang_str_t*|Summary|summary*| |=. Yes |=. Yes | |=. Yes |
|description|lang_str_t*|An extended description|description*| |=. Yes |=. Yes |=. Yes |=. Yes |
|episode|epg_episode_t*|Link to tvheadend episode object| | | | | | |
|serieslink|epg_serieslink_t*|SeriesLink|serieslinkid| |=. Yes | |=. Yes |=. Yes |
|channel|struct channel*|Channel being broadcast on|channelId| |=. Yes |=. Yes |=. Yes |=. Yes |

* summary/description will override the versions in the episode object

h2. SeriesLink object - epg_serieslink_t

This object represents a related set of broadcasts intended to be automatically recorded by a DVR

|\3=. | |\4=.Populated from|
|_.Field|_.Type|_.Description|_.HTSP| |_.DVB EIT|_.OpenTV|_.XML TV|_.PyEPG|
|id|uint32_t|Internal ID|eventId| | | | | |
|uri|char*|Unique ID (from grabber)| | |=. Yes |=. Yes | | |
|broadcasts|epg_broadcast_list_t|List of broadcasts| | | | | | |