Start to work in priority handling to EIT and OpenTV.
This commit is contained in:
parent
1dd4ac3f4a
commit
65ea8555a2
2 changed files with 31 additions and 23 deletions
|
@ -162,6 +162,7 @@ static int _eit_callback
|
|||
char summary[256];
|
||||
char desc[5000];
|
||||
htsmsg_t *extra;
|
||||
int update;
|
||||
|
||||
/* Invalid */
|
||||
if(tableid < 0x4e || tableid > 0x6f || len < 11)
|
||||
|
@ -361,8 +362,9 @@ static int _eit_callback
|
|||
len -= dlen; ptr += dlen; dllen -= dlen;
|
||||
}
|
||||
|
||||
/* Metadata */
|
||||
if ( save2 ) {
|
||||
/* Broadcast Metadata */
|
||||
update = epg_broadcast_set_grabber(ebc, (epggrab_module_t*)mod, &save);
|
||||
if (update) {
|
||||
save |= epg_broadcast_set_is_hd(ebc, hd);
|
||||
save |= epg_broadcast_set_is_widescreen(ebc, ws);
|
||||
save |= epg_broadcast_set_is_audio_desc(ebc, ad);
|
||||
|
@ -376,7 +378,7 @@ static int _eit_callback
|
|||
char *uri;
|
||||
uri = epg_hash(title, summary, desc);
|
||||
if (uri) {
|
||||
if ((ee = epg_episode_find_by_uri(uri, 1, &save2)))
|
||||
if ((ee = epg_episode_find_by_uri(uri, 1, &save2)) && update)
|
||||
save |= epg_broadcast_set_episode(ebc, ee);
|
||||
free(uri);
|
||||
}
|
||||
|
@ -385,14 +387,16 @@ static int _eit_callback
|
|||
|
||||
/* Episode data */
|
||||
if (ee) {
|
||||
save |= epg_episode_set_is_bw(ee, bw);
|
||||
if ( !ee->title && *title )
|
||||
update = epg_episode_set_grabber(ee, (epggrab_module_t*)mod, &save);
|
||||
if (update)
|
||||
save |= epg_episode_set_is_bw(ee, bw);
|
||||
if ( *title && (update || !ee->title) )
|
||||
save |= epg_episode_set_title(ee, title);
|
||||
if ( !ee->summary && *summary )
|
||||
if ( *summary && (update || !ee->summary) )
|
||||
save |= epg_episode_set_summary(ee, summary);
|
||||
if ( !ee->description && *desc )
|
||||
if ( *desc && (update || !ee->description) )
|
||||
save |= epg_episode_set_description(ee, desc);
|
||||
if ( !LIST_FIRST(&ee->genre) && egl )
|
||||
if ( egl && (update || !LIST_FIRST(&ee->genre)) )
|
||||
save |= epg_episode_set_genre(ee, egl);
|
||||
#if TODO_ADD_EXTRA
|
||||
if ( extra )
|
||||
|
|
|
@ -341,7 +341,7 @@ static int _opentv_parse_event_section
|
|||
( opentv_module_t *mod, opentv_status_t *sta,
|
||||
uint8_t *buf, int len, int type )
|
||||
{
|
||||
int i, cid, save = 0;
|
||||
int i, cid, update, save = 0;
|
||||
time_t mjd;
|
||||
char *uri;
|
||||
epggrab_channel_t *ec;
|
||||
|
@ -381,10 +381,11 @@ static int _opentv_parse_event_section
|
|||
|
||||
/* Find episode */
|
||||
if (ebc) {
|
||||
ee = NULL;
|
||||
update = epg_broadcast_set_grabber(ebc, (epggrab_module_t*)mod, &save);
|
||||
ee = NULL;
|
||||
|
||||
/* Find episode */
|
||||
if (ev.type & OPENTV_SUMMARY || !ebc->episode) {
|
||||
if ((update && (ev.type & OPENTV_SUMMARY)) || !ebc->episode) {
|
||||
uri = epg_hash(ev.title, ev.summary, ev.desc);
|
||||
if (uri) {
|
||||
ee = epg_episode_find_by_uri(uri, 1, &save);
|
||||
|
@ -392,33 +393,36 @@ static int _opentv_parse_event_section
|
|||
}
|
||||
}
|
||||
|
||||
/* Copy existing title */
|
||||
if (!ev.title && ebc->episode && ebc->episode->title)
|
||||
ev.title = strdup(ebc->episode->title);
|
||||
|
||||
/* Use existing */
|
||||
if (!ee) ee = ebc->episode;
|
||||
if (!ee)
|
||||
ee = ebc->episode;
|
||||
else if (update || !ebc->episode)
|
||||
save |= epg_broadcast_set_episode(ebc, ee);
|
||||
|
||||
/* Update */
|
||||
if (ee) {
|
||||
if (!ev.title && ebc->episode)
|
||||
save |= epg_episode_set_title(ee, ebc->episode->title);
|
||||
else if (ev.title)
|
||||
update = epg_episode_set_grabber(ee, (epggrab_module_t*)mod, &save);
|
||||
|
||||
if (ev.title && (update || !ee->title))
|
||||
save |= epg_episode_set_title(ee, ev.title);
|
||||
if (ev.summary)
|
||||
if (ev.summary && (update || !ee->summary))
|
||||
save |= epg_episode_set_summary(ee, ev.summary);
|
||||
if (ev.desc)
|
||||
if (ev.desc && (update || !ee->description))
|
||||
save |= epg_episode_set_description(ee, ev.desc);
|
||||
if (ev.cat) {
|
||||
if (ev.cat && (update || !LIST_FIRST(&ee->genre))) {
|
||||
epg_genre_list_t *egl = calloc(1, sizeof(epg_genre_list_t));
|
||||
epg_genre_list_add_by_eit(egl, ev.cat);
|
||||
save |= epg_episode_set_genre(ee, egl);
|
||||
epg_genre_list_destroy(egl);
|
||||
}
|
||||
// Note: don't override the season (since the ID is channel specific
|
||||
// it'll keep changing!
|
||||
if (ev.series && !ee->season) {
|
||||
if (ev.series && (update || !ee->season)) {
|
||||
es = _opentv_find_season(mod, cid, ev.series);
|
||||
if (es) save |= epg_episode_set_season(ee, es);
|
||||
}
|
||||
|
||||
save |= epg_broadcast_set_episode(ebc, ee);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue