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 {
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;
[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,