From: Jaroslav Kysela Date: Wed, 8 Feb 2017 12:47:55 +0000 (+0100) Subject: DVR: autorec - implement record per month, fixes #4216 X-Git-Tag: v4.2.1~125 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1d51c98c7d4105de8d0746aab02f9d00429c8193;p=thirdparty%2Ftvheadend.git DVR: autorec - implement record per month, fixes #4216 --- diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index 987f95893..c80251261 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -299,14 +299,17 @@ typedef enum { DVR_AUTOREC_RECORD_DIFFERENT_EPISODE_NUMBER = 1, DVR_AUTOREC_RECORD_DIFFERENT_SUBTITLE = 2, DVR_AUTOREC_RECORD_DIFFERENT_DESCRIPTION = 3, + DVR_AUTOREC_RECORD_ONCE_PER_MONTH = 12, DVR_AUTOREC_RECORD_ONCE_PER_WEEK = 4, DVR_AUTOREC_RECORD_ONCE_PER_DAY = 5, DVR_AUTOREC_LRECORD_DIFFERENT_EPISODE_NUMBER = 6, DVR_AUTOREC_LRECORD_DIFFERENT_TITLE = 7, DVR_AUTOREC_LRECORD_DIFFERENT_SUBTITLE = 8, DVR_AUTOREC_LRECORD_DIFFERENT_DESCRIPTION = 9, + DVR_AUTOREC_LRECORD_ONCE_PER_MONTH = 13, DVR_AUTOREC_LRECORD_ONCE_PER_WEEK = 10, DVR_AUTOREC_LRECORD_ONCE_PER_DAY = 11, + /* last free value == 14 */ } dvr_autorec_dedup_t; typedef enum { diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index a1a7be0fc..ffa16062d 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -1240,6 +1240,19 @@ static int _dvr_duplicate_desc(dvr_entry_t *de, dvr_entry_t *de2, void **aux) return !lang_str_compare(de->de_desc, de2->de_desc); } +static int _dvr_duplicate_per_month(dvr_entry_t *de, dvr_entry_t *de2, void **aux) +{ + struct tm *de1_start = *aux, de2_start; + if (de1_start == NULL) { + de1_start = calloc(1, sizeof(*de1_start)); + localtime_r(&de->de_start, de1_start); + *aux = de1_start; + } + localtime_r(&de2->de_start, &de2_start); + return de1_start->tm_year == de2_start.tm_year && + de1_start->tm_mon == de2_start.tm_mon; +} + static int _dvr_duplicate_per_week(dvr_entry_t *de, dvr_entry_t *de2, void **aux) { struct tm *de1_start = *aux, de2_start; @@ -1283,6 +1296,8 @@ static dvr_entry_t *_dvr_duplicate_event(dvr_entry_t *de) [DVR_AUTOREC_LRECORD_DIFFERENT_SUBTITLE] = _dvr_duplicate_subtitle, [DVR_AUTOREC_RECORD_DIFFERENT_DESCRIPTION] = _dvr_duplicate_desc, [DVR_AUTOREC_LRECORD_DIFFERENT_DESCRIPTION] = _dvr_duplicate_desc, + [DVR_AUTOREC_RECORD_ONCE_PER_MONTH] = _dvr_duplicate_per_month, + [DVR_AUTOREC_LRECORD_ONCE_PER_MONTH] = _dvr_duplicate_per_month, [DVR_AUTOREC_RECORD_ONCE_PER_WEEK] = _dvr_duplicate_per_week, [DVR_AUTOREC_LRECORD_ONCE_PER_WEEK] = _dvr_duplicate_per_week, [DVR_AUTOREC_RECORD_ONCE_PER_DAY] = _dvr_duplicate_per_day,