]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Revert earlier changes to EIT and OpenTV, now have a new API.
authorAdam Sutton <dev@adamsutton.me.uk>
Wed, 11 Jul 2012 09:18:30 +0000 (10:18 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Mon, 30 Jul 2012 14:58:41 +0000 (15:58 +0100)
src/epggrab/module/eit.c
src/epggrab/module/opentv.c

index a1e9c2ff3276db8e6b60a37309a0a7aab6cf8745..c2082de2abb929d7aa327bb4bbe0f5974cff7891 100644 (file)
@@ -162,7 +162,6 @@ static int _eit_callback
   char summary[256];
   char desc[5000];
   htsmsg_t *extra;
-  int update;
 
   /* Invalid */
   if(tableid < 0x4e || tableid > 0x6f || len < 11)
@@ -362,9 +361,8 @@ static int _eit_callback
       len -= dlen; ptr += dlen; dllen -= dlen;
     }
 
-    /* Broadcast Metadata */
-    update = epg_broadcast_set_grabber(ebc, (epggrab_module_t*)mod, &save);
-    if (update) {
+    /* Metadata */
+    if ( save2 ) {
       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);
@@ -378,7 +376,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)) && update)
+        if ((ee    = epg_episode_find_by_uri(uri, 1, &save2)))
           save |= epg_broadcast_set_episode(ebc, ee);
         free(uri);
       }
@@ -387,16 +385,14 @@ static int _eit_callback
 
     /* Episode data */
     if (ee) {
-      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_is_bw(ee, bw);
+      if ( !ee->title && *title )
         save |= epg_episode_set_title(ee, title);
-      if ( *summary && (update || !ee->summary) )
+      if ( !ee->summary && *summary )
         save |= epg_episode_set_summary(ee, summary);
-      if ( *desc && (update || !ee->description) )
+      if ( !ee->description && *desc )
         save |= epg_episode_set_description(ee, desc);
-      if ( egl   && (update || !LIST_FIRST(&ee->genre)) )
+      if ( !LIST_FIRST(&ee->genre) && egl )
         save |= epg_episode_set_genre(ee, egl);
 #if TODO_ADD_EXTRA
       if ( extra )
index 355d18442e277cf76f71b003ffd0f841178bb0b2..18c77f7c7e5118b174e8fd896a95c1d6daf1e171 100644 (file)
@@ -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, update, save = 0;
+  int i, cid, save = 0;
   time_t mjd;
   char *uri;
   epggrab_channel_t *ec;
@@ -381,11 +381,10 @@ static int _opentv_parse_event_section
 
     /* Find episode */
     if (ebc) {
-      update = epg_broadcast_set_grabber(ebc, (epggrab_module_t*)mod, &save);
-      ee     = NULL;
+      ee = NULL;
 
       /* Find episode */
-      if ((update && (ev.type & OPENTV_SUMMARY)) || !ebc->episode) {
+      if (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);
@@ -393,36 +392,33 @@ 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;
-      else if (update || !ebc->episode)
-        save |= epg_broadcast_set_episode(ebc, ee);
+      if (!ee) ee = ebc->episode;
 
       /* Update */
       if (ee) {
-        update = epg_episode_set_grabber(ee, (epggrab_module_t*)mod, &save);
-
-        if (ev.title && (update || !ee->title))
+        if (!ev.title && ebc->episode)
+          save |= epg_episode_set_title(ee, ebc->episode->title);
+        else if (ev.title)
           save |= epg_episode_set_title(ee, ev.title);
-        if (ev.summary && (update || !ee->summary))
+        if (ev.summary)
           save |= epg_episode_set_summary(ee, ev.summary);
-        if (ev.desc && (update || !ee->description))
+        if (ev.desc)
           save |= epg_episode_set_description(ee, ev.desc);
-        if (ev.cat && (update || !LIST_FIRST(&ee->genre))) {
+        if (ev.cat) {
           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);
         }
-        if (ev.series && (update || !ee->season)) {
+        // Note: don't override the season (since the ID is channel specific
+        //       it'll keep changing!
+        if (ev.series && !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);
       }
     }