]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
epg: remove serieslink object
authorJaroslav Kysela <perex@perex.cz>
Tue, 13 Feb 2018 16:57:44 +0000 (17:57 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 13 Feb 2018 16:57:44 +0000 (17:57 +0100)
src/api/api_epg.c
src/dvr/dvr.h
src/dvr/dvr_autorec.c
src/epg.c
src/epg.h
src/epgdb.c
src/epggrab/module/eit.c
src/epggrab/module/opentv.c
src/epggrab/module/xmltv.c
src/htsp_server.c

index 788d9aa9e197692187217c69c3bc574d0255f77a..d6279e54916a095b3a2c501ad677833cd32eefa9 100644 (file)
@@ -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);
index 8497a326050fae3e167f75b5451d8817c4e8fd70..af67f7e4ad6969a8f75508553ebb98454cbbb59f 100644 (file)
@@ -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);
 
index c174701cb2bf7216a303d842173253ce73bf7e5e..15cb7a321df608b970794d50bb59ee6c8cc6ecdf 100644 (file)
@@ -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
-}
-
 /**
  *
  */
index 3a80602c579075157ec69309d774e906ff1ca848..fd08580a719a86662141c24426e256110627af7c 100644 (file)
--- 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;
 }
index df864a208ed380cb814a539e6e0da1c5359d8a90..2e79773f15ddcbe74fb802b1faf3cdabe7811553 100644 (file)
--- 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 */
index a46a64bd42fec2111c4a8e5d976113f8941a3046..b7fec9a8afff1537e36929c6c0d5b3166a14ca28 100644 (file)
@@ -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;
index f5e3b09e62ff2f840dbe5fed5235a8d4973379c5..af589edaf1b6f18b835327083d6bcb6facdea605 100644 (file)
@@ -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);
index 3c1d0b209390acf4ae8d67c38594325d1e46f595..8159c44dda60dca294db16821fd8cad257a3ff92 100644 (file)
@@ -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);
     }
 
     /*
index 96ac69db979e5edc9768ffbdd6c92ca7de37800b..9a3f90db81a2c90ed533dc43f98c3301367c50ea 100644 (file)
@@ -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++;
   }
 
index 97c29bdef71c8777f5729fec0eb81169ab1754c4..e83a768a44b7c788437a4f6c35d81148739f5b31 100644 (file)
@@ -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);