From: Jaroslav Kysela Date: Wed, 6 Jan 2016 13:57:18 +0000 (+0100) Subject: DVR: add dedup for different titles X-Git-Tag: v4.2.1~1206 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a9869241d29499f2d3ae9163b2bb705acb7a81dd;p=thirdparty%2Ftvheadend.git DVR: add dedup for different titles When the autorec rule is using a title regex, it may match more different episodes identified by the title. --- diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index 5fa498130..1ea2dc10c 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -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; diff --git a/src/dvr/dvr_autorec.c b/src/dvr/dvr_autorec.c index 4eee27be0..43040e94a 100644 --- a/src/dvr/dvr_autorec.c +++ b/src/dvr/dvr_autorec.c @@ -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"), diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index e1f8bb211..aa21acb1d 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -1063,7 +1063,7 @@ not_so_good: /** * */ -static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t* de) +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;