]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
DVR: add dedup for different titles
authorJaroslav Kysela <perex@perex.cz>
Wed, 6 Jan 2016 13:57:18 +0000 (14:57 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 6 Jan 2016 14:00:45 +0000 (15:00 +0100)
When the autorec rule is using a title regex, it may match
more different episodes identified by the title.

src/dvr/dvr.h
src/dvr/dvr_autorec.c
src/dvr/dvr_db.c

index 5fa498130f1c67607c1515ada52ca8c80e34491a..1ea2dc10c62e6a2b194cc1009bdb393e2fff1688 100644 (file)
@@ -285,7 +285,8 @@ typedef enum {
   DVR_AUTOREC_RECORD_DIFFERENT_SUBTITLE = 2,
   DVR_AUTOREC_RECORD_DIFFERENT_DESCRIPTION = 3,
   DVR_AUTOREC_RECORD_ONCE_PER_WEEK = 4,
-  DVR_AUTOREC_RECORD_ONCE_PER_DAY = 5
+  DVR_AUTOREC_RECORD_ONCE_PER_DAY = 5,
+  DVR_AUTOREC_RECORD_DIFFERENT_TITLE = 6,
 } dvr_autorec_dedup_t;
 
 
index 4eee27be03176147bc3848d53fcca37ea2bdd7b4..43040e94a4a7fcde3ca80fc5c6092c4e5eafc2dd 100644 (file)
@@ -922,6 +922,8 @@ dvr_autorec_entry_class_dedup_list ( void *o, const char *lang )
         DVR_AUTOREC_RECORD_ALL },
     { N_("Record if different episode number"),
         DVR_AUTOREC_RECORD_DIFFERENT_EPISODE_NUMBER },
+    { N_("Record if different title"),
+        DVR_AUTOREC_RECORD_DIFFERENT_TITLE },
     { N_("Record if different subtitle"),
         DVR_AUTOREC_RECORD_DIFFERENT_SUBTITLE },
     { N_("Record if different description"),
index e1f8bb211e1346e4708defe20c833c317596b447..aa21acb1d20b7c095999743a2ca6761c8b7baa04 100644 (file)
@@ -1063,7 +1063,7 @@ not_so_good:
 /**
  *
  */
-static dvr_entry_t *_dvr_duplicate_event(dvr_entry_tde)
+static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t *de)
 {
   dvr_entry_t *de2;
   int record;
@@ -1080,6 +1080,8 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t* de)
       if (strempty(de->de_episode))
         return NULL;
       break;
+    case DVR_AUTOREC_RECORD_DIFFERENT_TITLE:
+      break;
     case DVR_AUTOREC_RECORD_DIFFERENT_SUBTITLE:
       if (lang_str_empty(de->de_subtitle))
         return NULL;
@@ -1111,7 +1113,8 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t* de)
       continue;
 
     // if titles are not defined or do not match, don't dedup
-    if (lang_str_compare(de->de_title, de2->de_title))
+    if (record != DVR_AUTOREC_RECORD_DIFFERENT_TITLE &&
+        lang_str_compare(de->de_title, de2->de_title))
       continue;
 
     switch (record) {
@@ -1119,6 +1122,10 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t* de)
         if (!strempty(de2->de_episode) && !strcmp(de->de_episode, de2->de_episode))
           return de2;
         break;
+      case DVR_AUTOREC_RECORD_DIFFERENT_TITLE:
+        if (!lang_str_compare(de->de_title, de2->de_title))
+          return de2;
+        break;
       case DVR_AUTOREC_RECORD_DIFFERENT_SUBTITLE:
         if (!lang_str_compare(de->de_subtitle, de2->de_subtitle))
           return de2;