From: Jaroslav Kysela Date: Tue, 13 Feb 2018 16:57:44 +0000 (+0100) Subject: epg: remove serieslink object X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dd0fa8fe66e1e421bf8ec370cf4f62c455b55d8a;p=thirdparty%2Ftvheadend.git epg: remove serieslink object --- diff --git a/src/api/api_epg.c b/src/api/api_epg.c index 788d9aa9e..d6279e549 100644 --- a/src/api/api_epg.c +++ b/src/api/api_epg.c @@ -98,11 +98,8 @@ api_epg_entry ( epg_broadcast_t *eb, const char *lang, access_t *perm, const cha if (ee->uri && strncasecmp(ee->uri, "tvh://", 6)) htsmsg_add_str(m, "episodeUri", ee->uri); } - if (eb->serieslink) { - htsmsg_add_u32(m, "serieslinkId", eb->serieslink->id); - if (eb->serieslink->uri) - htsmsg_add_str(m, "serieslinkUri", eb->serieslink->uri); - } + if (eb->serieslink_uri) + htsmsg_add_str(m, "serieslinkUri", eb->serieslink_uri); /* Channel Info */ api_epg_add_channel(m, ch, *blank); diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index 8497a3260..af67f7e4a 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -380,7 +380,7 @@ typedef struct dvr_autorec_entry { struct dvr_entry_list dae_spawns; epg_season_t *dae_season; - epg_serieslink_t *dae_serieslink; + const char *dae_serieslink_uri; epg_episode_num_t dae_epnum; int dae_minduration; @@ -673,7 +673,6 @@ const char *dvr_entry_class_image_url_get(const dvr_entry_t *o); void dvr_autorec_check_event(epg_broadcast_t *e); void dvr_autorec_check_season(epg_season_t *s); -void dvr_autorec_check_serieslink(epg_serieslink_t *s); void autorec_destroy_by_config(dvr_config_t *cfg, int delconf); diff --git a/src/dvr/dvr_autorec.c b/src/dvr/dvr_autorec.c index c174701cb..15cb7a321 100644 --- a/src/dvr/dvr_autorec.c +++ b/src/dvr/dvr_autorec.c @@ -166,13 +166,14 @@ autorec_cmp(dvr_autorec_entry_t *dae, epg_broadcast_t *e) dae->dae_season == NULL && dae->dae_minduration <= 0 && (dae->dae_maxduration <= 0 || dae->dae_maxduration > 24 * 3600) && - dae->dae_serieslink == NULL) + dae->dae_serieslink_uri == NULL) return 0; // Avoid super wildcard match // Note: we always test season first, though it will only be set // if configured - if(dae->dae_serieslink) { - if (!e->serieslink || dae->dae_serieslink != e->serieslink) return 0; + if(dae->dae_serieslink_uri) { + if (!e->serieslink_uri || + strcmp(dae->dae_serieslink_uri ?: "", e->serieslink_uri)) return 0; } else { if(dae->dae_season) if (!e->episode->season || dae->dae_season != e->episode->season) return 0; @@ -284,7 +285,7 @@ autorec_cmp(dvr_autorec_entry_t *dae, epg_broadcast_t *e) return 0; /* Do not check title if the event is from the serieslink group */ - if(dae->dae_serieslink == NULL && + if((dae->dae_serieslink_uri == NULL || dae->dae_serieslink_uri[0] == '\0') && dae->dae_title != NULL && dae->dae_title[0] != '\0') { lang_str_ele_t *ls; if (!dae->dae_fulltext) { @@ -407,8 +408,8 @@ dvr_autorec_add_series_link(const char *dvr_config_name, free(title); htsmsg_add_str(conf, "config_name", dvr_config_name ?: ""); htsmsg_add_str(conf, "channel", chname); - if (event->serieslink) - htsmsg_add_str(conf, "serieslink", event->serieslink->uri); + if (event->serieslink_uri) + htsmsg_add_str(conf, "serieslink", event->serieslink_uri); htsmsg_add_str(conf, "owner", owner ?: ""); htsmsg_add_str(conf, "creator", creator ?: ""); htsmsg_add_str(conf, "comment", comment ?: ""); @@ -463,8 +464,6 @@ autorec_entry_destroy(dvr_autorec_entry_t *dae, int delconf) if(dae->dae_season) dae->dae_season->ops->putref(dae->dae_season); - if(dae->dae_serieslink) - dae->dae_serieslink->ops->putref(dae->dae_serieslink); free(dae); } @@ -936,40 +935,6 @@ dvr_autorec_entry_class_star_rating_list ( void *o, const char *lang ) return m; } - -static int -dvr_autorec_entry_class_series_link_set(void *o, const void *v) -{ - dvr_autorec_entry_t *dae = (dvr_autorec_entry_t *)o; - int save; - epg_serieslink_t *sl; - - v = tvh_str_default(v, NULL); - sl = v ? epg_serieslink_find_by_uri(v, NULL, 1, &save, NULL) : NULL; - if (sl && dae->dae_serieslink != sl) { - if (dae->dae_serieslink) - dae->dae_serieslink->ops->putref((epg_object_t*)dae->dae_season); - sl->ops->getref((epg_object_t*)sl); - dae->dae_serieslink = sl; - return 1; - } else if (sl == NULL && dae->dae_serieslink) { - dae->dae_season->ops->putref((epg_object_t*)dae->dae_season); - dae->dae_season = NULL; - return 1; - } - return 0; -} - -static const void * -dvr_autorec_entry_class_series_link_get(void *o) -{ - dvr_autorec_entry_t *dae = (dvr_autorec_entry_t *)o; - prop_ptr = dae->dae_serieslink ? dae->dae_serieslink->uri : NULL; - if (prop_ptr == NULL) - prop_ptr = ""; - return &prop_ptr; -} - static htsmsg_t * dvr_autorec_entry_class_content_type_list(void *o, const char *lang) { @@ -1373,8 +1338,7 @@ const idclass_t dvr_autorec_entry_class = { .id = "serieslink", .name = N_("Series link"), .desc = N_("Series link ID."), - .set = dvr_autorec_entry_class_series_link_set, - .get = dvr_autorec_entry_class_series_link_get, + .off = offsetof(dvr_autorec_entry_t, dae_serieslink_uri), .opts = PO_RDONLY | PO_ADVANCED, }, { @@ -1471,11 +1435,6 @@ void dvr_autorec_check_season(epg_season_t *s) // this will already have been picked up by the check_event call } -void dvr_autorec_check_serieslink(epg_serieslink_t *s) -{ -// TODO: need to implement this -} - /** * */ diff --git a/src/epg.c b/src/epg.c index 3a80602c5..fd08580a7 100644 --- a/src/epg.c +++ b/src/epg.c @@ -47,7 +47,6 @@ epg_object_tree_t epg_objects[EPG_HASH_WIDTH]; /* URI lists */ epg_object_tree_t epg_seasons; epg_object_tree_t epg_episodes; -epg_object_tree_t epg_serieslinks; /* Other special case lists */ epg_object_list_t epg_object_unref; @@ -391,8 +390,6 @@ htsmsg_t *epg_object_serialize ( epg_object_t *eo ) return epg_episode_serialize((epg_episode_t*)eo); case EPG_BROADCAST: return epg_broadcast_serialize((epg_broadcast_t*)eo); - case EPG_SERIESLINK: - return epg_serieslink_serialize((epg_serieslink_t*)eo); default: return NULL; } @@ -410,8 +407,6 @@ epg_object_t *epg_object_deserialize ( htsmsg_t *msg, int create, int *save ) return (epg_object_t*)epg_episode_deserialize(msg, create, save); case EPG_BROADCAST: return (epg_object_t*)epg_broadcast_deserialize(msg, create, save); - case EPG_SERIESLINK: - return (epg_object_t*)epg_serieslink_deserialize(msg, create, save); } return NULL; } @@ -1222,106 +1217,6 @@ const char *epg_episode_get_description return lang_str_get(e->description, lang); } -/* ************************************************************************** - * Series link - * *************************************************************************/ - -static void _epg_serieslink_destroy ( void *eo ) -{ - epg_serieslink_t *es = (epg_serieslink_t*)eo; - if (LIST_FIRST(&es->broadcasts)) { - tvhlog(LOG_CRIT, LS_EPG, "attempt to destory series link with broadcasts"); - assert(0); - } - _epg_object_destroy(eo, &epg_serieslinks); - free(es); -} - -static void _epg_serieslink_updated ( void *eo ) -{ - dvr_autorec_check_serieslink((epg_serieslink_t*)eo); -} - -static epg_object_ops_t _epg_serieslink_ops = { - .getref = _epg_object_getref, - .putref = _epg_object_putref, - .destroy = _epg_serieslink_destroy, - .update = _epg_serieslink_updated, -}; - -static epg_object_t **_epg_serieslink_skel ( void ) -{ - static epg_object_t *skel = NULL; - if (!skel) { - skel = calloc(1, sizeof(epg_serieslink_t)); - skel->type = EPG_SERIESLINK; - skel->ops = &_epg_serieslink_ops; - } - return &skel; -} - -epg_serieslink_t* epg_serieslink_find_by_uri - ( const char *uri, epggrab_module_t *src, int create, - int *save, uint32_t *changed ) -{ - return (epg_serieslink_t*) - _epg_object_find_by_uri(uri, src, create, save, changed, - &epg_serieslinks, - _epg_serieslink_skel()); -} - -epg_serieslink_t *epg_serieslink_find_by_id ( uint32_t id ) -{ - return (epg_serieslink_t*)epg_object_find_by_id(id, EPG_SERIESLINK); -} - -int epg_serieslink_change_finish - ( epg_serieslink_t *esl, uint32_t changes, int merge ) -{ - return 0; -} - -static void _epg_serieslink_add_broadcast - ( epg_serieslink_t *esl, epg_broadcast_t *ebc ) -{ - _epg_object_getref(esl); - _epg_object_set_updated(esl); - LIST_INSERT_HEAD(&esl->broadcasts, ebc, sl_link); -} - -static void _epg_serieslink_rem_broadcast - ( epg_serieslink_t *esl, epg_broadcast_t *ebc ) -{ - LIST_REMOVE(ebc, sl_link); - _epg_object_set_updated(esl); - _epg_object_putref(esl); -} - -htsmsg_t *epg_serieslink_serialize ( epg_serieslink_t *esl ) -{ - htsmsg_t *m; - if (!esl || !esl->uri) return NULL; - if (!(m = _epg_object_serialize((epg_object_t*)esl))) return NULL; - return m; -} - -epg_serieslink_t *epg_serieslink_deserialize - ( htsmsg_t *m, int create, int *save ) -{ - epg_object_t **skel = _epg_serieslink_skel(); - epg_serieslink_t *esl; - uint32_t changes = 0; - - if (!_epg_object_deserialize(m, *skel)) return NULL; - if (!(esl = epg_serieslink_find_by_uri((*skel)->uri, (*skel)->grabber, - create, save, &changes))) - return NULL; - - *save |= epg_serieslink_change_finish(esl, changes, 0); - - return esl; -} - /* ************************************************************************** * Channel * *************************************************************************/ @@ -1636,7 +1531,6 @@ static void _epg_broadcast_destroy ( void *eo ) notify_delayed(id, "epg", "delete"); } if (ebc->episode) _epg_episode_rem_broadcast(ebc->episode, ebc); - if (ebc->serieslink) _epg_serieslink_rem_broadcast(ebc->serieslink, ebc); if (ebc->summary) lang_str_destroy(ebc->summary); if (ebc->description) lang_str_destroy(ebc->description); if (ebc->credits) htsmsg_destroy(ebc->credits); @@ -1644,6 +1538,7 @@ static void _epg_broadcast_destroy ( void *eo ) if (ebc->category) string_list_destroy(ebc->category); if (ebc->keyword) string_list_destroy(ebc->keyword); if (ebc->keyword_cached) lang_str_destroy(ebc->keyword_cached); + free(ebc->serieslink_uri); _epg_object_destroy(eo, NULL); assert(LIST_EMPTY(&ebc->dvr_entries)); free(ebc); @@ -1740,7 +1635,7 @@ int epg_broadcast_change_finish if (!(changes & EPG_CHANGED_EPISODE)) save |= epg_broadcast_set_episode(broadcast, NULL, NULL); if (!(changes & EPG_CHANGED_SERIESLINK)) - save |= epg_broadcast_set_serieslink(broadcast, NULL, NULL); + save |= epg_broadcast_set_serieslink_uri(broadcast, NULL, NULL); if (!(changes & EPG_CHANGED_DVB_EID)) save |= epg_broadcast_set_dvb_eid(broadcast, 0, NULL); if (!(changes & EPG_CHANGED_IS_WIDESCREEN)) @@ -1800,7 +1695,7 @@ epg_broadcast_t *epg_broadcast_clone *save |= epg_broadcast_set_category(ebc, src->category, &changes); *save |= epg_broadcast_set_keyword(ebc, src->keyword, &changes); *save |= epg_broadcast_set_description(ebc, src->description, &changes); - *save |= epg_broadcast_set_serieslink(ebc, src->serieslink, &changes); + *save |= epg_broadcast_set_serieslink_uri(ebc, src->serieslink_uri, &changes); *save |= epg_broadcast_set_episode(ebc, src->episode, &changes); _epg_object_set_grabber(ebc, src->grabber); *save |= epg_broadcast_change_finish(ebc, changes, 0); @@ -1851,16 +1746,15 @@ int epg_broadcast_set_episode return save; } -int epg_broadcast_set_serieslink - ( epg_broadcast_t *ebc, epg_serieslink_t *esl, uint32_t *changed ) +int epg_broadcast_set_serieslink_uri + ( epg_broadcast_t *ebc, const char *uri, uint32_t *changed ) { int save = 0; if (!ebc) return 0; if (changed) *changed |= EPG_CHANGED_SERIESLINK; - if (ebc->serieslink != esl) { - if (ebc->serieslink) _epg_serieslink_rem_broadcast(ebc->serieslink, ebc); - ebc->serieslink = esl; - if (esl) _epg_serieslink_add_broadcast(esl, ebc); + if (strcmp(ebc->serieslink_uri ?: "", uri ?: "")) { + free(ebc->serieslink_uri); + ebc->serieslink_uri = strdup(uri); save = 1; } return save; @@ -2114,9 +2008,8 @@ htsmsg_t *epg_broadcast_serialize ( epg_broadcast_t *broadcast ) if (broadcast->keyword) string_list_serialize(broadcast->keyword, m, "keyword"); /* No need to serialize keyword_cached since it is rebuilt from keyword */ - - if (broadcast->serieslink) - htsmsg_add_str(m, "serieslink", broadcast->serieslink->uri); + if (broadcast->serieslink_uri) + htsmsg_add_str(m, "serieslink", broadcast->serieslink_uri); return m; } @@ -2127,12 +2020,11 @@ epg_broadcast_t *epg_broadcast_deserialize channel_t *ch = NULL; epg_broadcast_t *ebc, **skel = _epg_broadcast_skel(); epg_episode_t *ee; - epg_serieslink_t *esl; lang_str_t *ls; htsmsg_t *hm; string_list_t *sl; const char *str; - uint32_t eid, u32, changes = 0, changes2 = 0; + uint32_t eid, u32, changes = 0; int64_t start, stop; if (htsmsg_get_s64(m, "start", &start)) return NULL; @@ -2208,10 +2100,7 @@ epg_broadcast_t *epg_broadcast_deserialize /* Series link */ if ((str = htsmsg_get_str(m, "serieslink"))) - if ((esl = epg_serieslink_find_by_uri(str, ebc->grabber, 1, save, &changes2))) { - *save |= epg_broadcast_set_serieslink(ebc, esl, &changes); - *save |= epg_serieslink_change_finish(esl, changes2, 0); - } + *save |= epg_broadcast_set_serieslink_uri(ebc, str, &changes); /* Set the episode */ *save |= epg_broadcast_set_episode(ebc, ee, &changes); @@ -3102,8 +2991,6 @@ void epg_skel_done(void) free(*skel); *skel = NULL; skel = _epg_episode_skel(); free(*skel); *skel = NULL; - skel = _epg_serieslink_skel(); - free(*skel); *skel = NULL; broad = _epg_broadcast_skel(); free(*broad); *broad = NULL; } diff --git a/src/epg.h b/src/epg.h index df864a208..2e79773f1 100644 --- a/src/epg.h +++ b/src/epg.h @@ -52,7 +52,6 @@ typedef struct epg_object epg_object_t; typedef struct epg_season epg_season_t; typedef struct epg_episode epg_episode_t; typedef struct epg_broadcast epg_broadcast_t; -typedef struct epg_serieslink epg_serieslink_t; extern int epg_in_load; @@ -386,33 +385,6 @@ int epg_episode_fuzzy_match htsmsg_t *epg_episode_serialize ( epg_episode_t *b ); epg_episode_t *epg_episode_deserialize ( htsmsg_t *m, int create, int *save ); -/* ************************************************************************ - * Series Link - broadcast level linkage - * ***********************************************************************/ - -/* Object */ -struct epg_serieslink -{ - epg_object_t; - - epg_broadcast_list_t broadcasts; ///< Episode list -}; - -/* Lookup */ -epg_serieslink_t *epg_serieslink_find_by_uri - ( const char *uri, struct epggrab_module *src, int create, int *save, uint32_t *changes ); -epg_serieslink_t *epg_serieslink_find_by_id - ( uint32_t id ); - -/* Post-modify */ -int epg_serieslink_change_finish( epg_serieslink_t *s, uint32_t changed, int merge ) - __attribute__((warn_unused_result)); - -/* Serialization */ -htsmsg_t *epg_serieslink_serialize ( epg_serieslink_t *s ); -epg_serieslink_t *epg_serieslink_deserialize - ( htsmsg_t *m, int create, int *save ); - /* ************************************************************************ * Broadcast - specific airing (channel & time) of an episode * ***********************************************************************/ @@ -470,7 +442,7 @@ struct epg_broadcast LIST_ENTRY(epg_broadcast) ep_link; ///< Episode link epg_episode_t *episode; ///< Episode shown LIST_ENTRY(epg_broadcast) sl_link; ///< SeriesLink link - epg_serieslink_t *serieslink; ///< SeriesLink + char *serieslink_uri; ///< SeriesLink URI struct channel *channel; ///< Channel being broadcast on /* DVR */ @@ -544,8 +516,8 @@ int epg_broadcast_set_category int epg_broadcast_set_keyword ( epg_broadcast_t *b, const string_list_t *msg, uint32_t *changed ) __attribute__((warn_unused_result)); -int epg_broadcast_set_serieslink - ( epg_broadcast_t *b, epg_serieslink_t *sl, uint32_t *changed ) +int epg_broadcast_set_serieslink_uri + ( epg_broadcast_t *b, const char *uri, uint32_t *changed ) __attribute__((warn_unused_result)); /* Accessors */ diff --git a/src/epgdb.c b/src/epgdb.c index a46a64bd4..b7fec9a8a 100644 --- a/src/epgdb.c +++ b/src/epgdb.c @@ -41,7 +41,6 @@ extern epg_object_tree_t epg_seasons; extern epg_object_tree_t epg_episodes; -extern epg_object_tree_t epg_serieslinks; /* ************************************************************************** * Load @@ -131,7 +130,7 @@ _epgdb_v2_process( char **sect, htsmsg_t *m, epggrab_stats_t *stats ) /* Series link */ } else if ( !strcmp(*sect, "serieslinks") ) { - if (epg_serieslink_deserialize(m, 1, &save)) stats->seasons.total++; + /* skip */ /* Broadcasts */ } else if ( !strcmp(*sect, "broadcasts") ) { @@ -200,26 +199,6 @@ static memoryinfo_t epg_memoryinfo_episodes = { .my_update = epg_memoryinfo_episodes_update }; -static void epg_memoryinfo_serieslinks_update(memoryinfo_t *my) -{ - epg_object_t *eo; - epg_serieslink_t *es; - int64_t size = 0, count = 0; - - RB_FOREACH(eo, &epg_serieslinks, uri_link) { - es = (epg_serieslink_t *)eo; - size += sizeof(*es); - size += tvh_strlen(es->uri); - count++; - } - memoryinfo_update(my, size, count); -} - -static memoryinfo_t epg_memoryinfo_serieslinks = { - .my_name = "EPG Series Links", - .my_update = epg_memoryinfo_serieslinks_update -}; - static void epg_memoryinfo_broadcasts_update(memoryinfo_t *my) { channel_t *ch; @@ -270,7 +249,6 @@ void epg_init ( void ) memoryinfo_register(&epg_memoryinfo_seasons); memoryinfo_register(&epg_memoryinfo_episodes); - memoryinfo_register(&epg_memoryinfo_serieslinks); memoryinfo_register(&epg_memoryinfo_broadcasts); /* Find the right file (and version) */ @@ -407,7 +385,6 @@ void epg_done ( void ) epg_skel_done(); memoryinfo_unregister(&epg_memoryinfo_seasons); memoryinfo_unregister(&epg_memoryinfo_episodes); - memoryinfo_unregister(&epg_memoryinfo_serieslinks); memoryinfo_unregister(&epg_memoryinfo_broadcasts); pthread_mutex_unlock(&global_lock); } @@ -527,11 +504,6 @@ void epg_save ( void ) if (_epg_write(sb, epg_episode_serialize((epg_episode_t*)eo))) goto error; stats.episodes.total++; } - if ( _epg_write_sect(sb, "serieslinks") ) goto error; - RB_FOREACH(eo, &epg_serieslinks, uri_link) { - if (_epg_write(sb, epg_serieslink_serialize((epg_serieslink_t*)eo))) goto error; - stats.seasons.total++; - } if ( _epg_write_sect(sb, "broadcasts") ) goto error; CHANNEL_FOREACH(ch) { if (ch->ch_epg_parent) continue; diff --git a/src/epggrab/module/eit.c b/src/epggrab/module/eit.c index f5e3b09e6..af589edaf 100644 --- a/src/epggrab/module/eit.c +++ b/src/epggrab/module/eit.c @@ -610,10 +610,9 @@ static int _eit_process_event_one uint8_t running; epg_broadcast_t *ebc, _ebc; epg_episode_t *ee = NULL, _ee; - epg_serieslink_t *es; epg_running_t run; lang_str_t *title_copy = NULL; - uint32_t changes2 = 0, changes3 = 0, changes4 = 0; + uint32_t changes2 = 0, changes3 = 0; char tm1[32], tm2[32]; int short_target = ((eit_module_t *)mod)->short_target; @@ -645,10 +644,6 @@ static int _eit_process_event_one if (!ev->title) goto running; memset(&_ebc, 0, sizeof(_ebc)); - if (*ev->suri) - if ((es = epg_serieslink_find_by_uri(ev->suri, mod, 0, 0, NULL))) - _ebc.serieslink = es; - if (*ev->uri && (ee = epg_episode_find_by_uri(ev->uri, mod, 0, 0, NULL))) { _ee = *ee; } else { @@ -658,6 +653,7 @@ static int _eit_process_event_one _ebc.dvb_eid = eid; _ebc.start = start; _ebc.stop = stop; + _ebc.serieslink_uri = ev->suri; _ee.title = title_copy = lang_str_copy(ev->title); ebc = epg_match_now_next(ch, &_ebc); @@ -692,12 +688,8 @@ static int _eit_process_event_one * Series link */ - if (*ev->suri) { - if ((es = epg_serieslink_find_by_uri(ev->suri, mod, 1, save, &changes3))) { - *save |= epg_broadcast_set_serieslink(ebc, es, &changes2); - *save |= epg_serieslink_change_finish(es, changes3, 0); - } - } + if (*ev->suri) + *save |= epg_broadcast_set_serieslink_uri(ebc, ev->suri, &changes2); /* * Episode @@ -705,9 +697,9 @@ static int _eit_process_event_one /* Find episode */ if (*ev->uri) { - ee = epg_episode_find_by_uri(ev->uri, mod, 1, save, &changes4); + ee = epg_episode_find_by_uri(ev->uri, mod, 1, save, &changes3); } else { - ee = epg_episode_find_by_broadcast(ebc, mod, 1, save, &changes4); + ee = epg_episode_find_by_broadcast(ebc, mod, 1, save, &changes3); } /* Update Episode */ @@ -715,29 +707,29 @@ static int _eit_process_event_one *save |= epg_broadcast_set_episode(ebc, ee, &changes2); if (ev->is_new > 0) *save |= epg_broadcast_set_is_new(ebc, ev->is_new - 1, &changes2); - *save |= epg_episode_set_is_bw(ee, ev->bw, &changes4); + *save |= epg_episode_set_is_bw(ee, ev->bw, &changes3); if (ev->title) - *save |= epg_episode_set_title(ee, ev->title, &changes4); + *save |= epg_episode_set_title(ee, ev->title, &changes3); if (ev->genre) - *save |= epg_episode_set_genre(ee, ev->genre, &changes4); + *save |= epg_episode_set_genre(ee, ev->genre, &changes3); if (ev->parental) - *save |= epg_episode_set_age_rating(ee, ev->parental, &changes4); + *save |= epg_episode_set_age_rating(ee, ev->parental, &changes3); if (ev->subtitle) - *save |= epg_episode_set_subtitle(ee, ev->subtitle, &changes4); + *save |= epg_episode_set_subtitle(ee, ev->subtitle, &changes3); else if ((short_target == 0 || short_target == 2) && ev->summary) - *save |= epg_episode_set_subtitle(ee, ev->summary, &changes4); + *save |= epg_episode_set_subtitle(ee, ev->summary, &changes3); #if TODO_ADD_EXTRA if (ev->extra) - *save |= epg_episode_set_extra(ee, extra, &changes4); + *save |= epg_episode_set_extra(ee, extra, &changes3); #endif /* save any found episode number */ if (ev->en.s_num || ev->en.e_num || ev->en.p_num) - *save |= epg_episode_set_epnum(ee, &ev->en, &changes4); + *save |= epg_episode_set_epnum(ee, &ev->en, &changes3); if (ev->first_aired > 0) - *save |= epg_episode_set_first_aired(ee, ev->first_aired, &changes4); + *save |= epg_episode_set_first_aired(ee, ev->first_aired, &changes3); if (ev->copyright_year > 0) - *save |= epg_episode_set_copyright_year(ee, ev->copyright_year, &changes4); - *save |= epg_episode_change_finish(ee, changes4, 0); + *save |= epg_episode_set_copyright_year(ee, ev->copyright_year, &changes3); + *save |= epg_episode_change_finish(ee, changes3, 0); } *save |= epg_broadcast_change_finish(ebc, changes2, 0); diff --git a/src/epggrab/module/opentv.c b/src/epggrab/module/opentv.c index 3c1d0b209..8159c44dd 100644 --- a/src/epggrab/module/opentv.c +++ b/src/epggrab/module/opentv.c @@ -294,7 +294,6 @@ opentv_parse_event_section_one epggrab_module_t *src = (epggrab_module_t*)mod; epg_broadcast_t *ebc; epg_episode_t *ee; - epg_serieslink_t *es; opentv_event_t ev; char buffer[2048], *s; lang_str_t *ls; @@ -354,10 +353,7 @@ opentv_parse_event_section_one char suri[257], ubuf[UUID_HEX_SIZE]; snprintf(suri, 256, "opentv://channel-%s/series-%d", channel_get_uuid(ch, ubuf), ev.serieslink); - if ((es = epg_serieslink_find_by_uri(suri, src, 1, &save, &changes2))) { - save |= epg_broadcast_set_serieslink(ebc, es, &changes); - save |= epg_serieslink_change_finish(es, changes2, merge); - } + save |= epg_broadcast_set_serieslink_uri(ebc, suri, &changes); } /* diff --git a/src/epggrab/module/xmltv.c b/src/epggrab/module/xmltv.c index 96ac69db9..9a3f90db8 100644 --- a/src/epggrab/module/xmltv.c +++ b/src/epggrab/module/xmltv.c @@ -610,7 +610,6 @@ static int _xmltv_parse_programme_tags const int use_category_not_genre = ((epggrab_module_int_t *)mod)->xmltv_use_category_not_genre; int save = 0, save2 = 0, save3 = 0; epg_episode_t *ee = NULL; - epg_serieslink_t *es = NULL; epg_broadcast_t *ebc; epg_genre_list_t *egl; epg_episode_num_t epnum; @@ -721,12 +720,9 @@ static int _xmltv_parse_programme_tags * Series Link */ if (suri) { - if ((es = epg_serieslink_find_by_uri(suri, mod, 1, &save2, &changes2))) { - save |= epg_broadcast_set_serieslink(ebc, es, &changes); - save |= epg_serieslink_change_finish(es, changes2, 0); - } + save |= epg_broadcast_set_serieslink_uri(ebc, suri, &changes); free(suri); - if (es) stats->seasons.total++; + stats->seasons.total++; if (save2 && (changes2 & EPG_CHANGED_CREATE)) stats->seasons.created++; } diff --git a/src/htsp_server.c b/src/htsp_server.c index 97c29bdef..e83a768a4 100644 --- a/src/htsp_server.c +++ b/src/htsp_server.c @@ -601,10 +601,8 @@ htsp_serierec_convert(htsp_connection_t *htsp, htsmsg_t *in, channel_t *ch, int htsmsg_add_s64(conf, "start_extra", !retval ? (s64 < 0 ? 0 : s64) : 0); // 0 = dvr config if (!(retval = htsmsg_get_s64(in, "stopExtra", &s64)) || add) htsmsg_add_s64(conf, "stop_extra", !retval ? (s64 < 0 ? 0 : s64) : 0); // 0 = dvr config - if (!(retval = htsmsg_get_u32(in, "serieslinkId", &u32)) || add) - htsmsg_add_u32(conf, "serieslinkId", !retval ? u32 : 0); - if((str = htsmsg_get_str(in, "serieslinkUri")) || add) - htsmsg_add_str(conf, "serieslink", str ?: ""); // for compat reasons, htsp name is not same as internal name + if ((str = htsmsg_get_str(in, "serieslinkUri")) || add) + htsmsg_add_str(conf, "serieslink", str ?: ""); if (add) { // for add, stay compatible with older "approxTime if(htsmsg_get_s32(in, "approxTime", &approx_time)) @@ -1179,12 +1177,8 @@ htsp_build_autorecentry(htsp_connection_t *htsp, dvr_autorec_entry_t *dae, const htsmsg_add_str2(out, "creator", dae->dae_creator); if(dae->dae_channel) htsmsg_add_u32(out, "channel", channel_get_id(dae->dae_channel)); - - if (dae->dae_serieslink) { - htsmsg_add_u32(out, "serieslinkId", dae->dae_serieslink->id); - if (dae->dae_serieslink->uri) - htsmsg_add_str(out, "serieslinkUri", dae->dae_serieslink->uri); - } + if (dae->dae_serieslink_uri) + htsmsg_add_str(out, "serieslinkUri", dae->dae_serieslink_uri); htsmsg_add_str(out, "method", method); return out; @@ -1250,7 +1244,6 @@ htsp_build_event if (update) { int ignore = 1; if (e->updated > update) ignore = 0; - else if (e->serieslink && e->serieslink->updated > update) ignore = 0; else if (ee) { if (ee->updated > update) ignore = 0; else if (ee->season && ee->season->updated > update) ignore = 0; @@ -1303,11 +1296,8 @@ htsp_build_event htsmsg_add_msg(out, "keyword", string_list_to_htsmsg(e->keyword)); } - if (e->serieslink) { - htsmsg_add_u32(out, "serieslinkId", e->serieslink->id); - if (e->serieslink->uri) - htsmsg_add_str(out, "serieslinkUri", e->serieslink->uri); - } + if (e->serieslink_uri) + htsmsg_add_str(out, "serieslinkUri", e->serieslink_uri); if (ee) { htsmsg_add_u32(out, "episodeId", ee->id);