]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
DVR: improve the episode name saving, fixes #2357
authorJaroslav Kysela <perex@perex.cz>
Wed, 19 Nov 2014 19:04:32 +0000 (20:04 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 19 Nov 2014 19:04:32 +0000 (20:04 +0100)
src/dvr/dvr_db.c

index 7ed7e016a7228d196a6ee68ddea1da2141cf0e22..8cee0adf50c4e57730525cbc1edcde66fc72d4c5 100644 (file)
@@ -364,6 +364,21 @@ dvr_entry_fuzzy_match(dvr_entry_t *de, epg_broadcast_t *e)
   return strcmp(title1, title2) == 0;
 }
 
+/**
+ * Set episode name
+ */
+static char *
+dvr_entry_get_episode(epg_broadcast_t *bcast, char *buf, int len)
+{
+  if (!bcast || !bcast->episode)
+    return NULL;
+  if (epg_episode_number_format(bcast->episode,
+                                buf, len, NULL,
+                                "Season %d", ".", "Episode %d", "/%d"))
+    return buf;
+  return NULL;
+}
+
 /**
  * Create the event from config
  */
@@ -439,7 +454,7 @@ dvr_entry_create_(const char *config_uuid, epg_broadcast_t *e,
                   dvr_prio_t pri, int retention)
 {
   dvr_entry_t *de;
-  char tbuf[64];
+  char tbuf[64], *s;
   struct tm tm;
   time_t t;
   lang_str_t *l;
@@ -467,6 +482,8 @@ dvr_entry_create_(const char *config_uuid, epg_broadcast_t *e,
       lang_str_serialize(e->summary, conf, "description");
     else if (e->episode && e->episode->summary)
       lang_str_serialize(e->episode->summary, conf, "description");
+    if (e->episode && (s = dvr_entry_get_episode(e, tbuf, sizeof(tbuf))))
+      htsmsg_add_str(conf, "episode", s);
   } else if (title) {
     l = lang_str_create();
     lang_str_add(l, title, lang, 0);
@@ -804,15 +821,11 @@ static dvr_entry_t *_dvr_entry_update
   }
 
   /* Episode */
-  if (de->de_bcast && de->de_bcast->episode) {
-    if (epg_episode_number_format(de->de_bcast->episode,
-                                  buf, sizeof(buf), NULL,
-                                  "Season %d", ".", "Episode %d", "/%d")) {
-      if (strcmp(de->de_episode ?: "", buf)) {
-        free(de->de_episode);
-        de->de_episode = strdup(buf);
-        save = 1;
-      }
+  if (dvr_entry_get_episode(de->de_bcast, buf, sizeof(buf))) {
+    if (strcmp(de->de_episode ?: "", buf)) {
+      free(de->de_episode);
+      de->de_episode = strdup(buf);
+      save = 1;
     }
   }