Default will be applied to new autorecs unless overridden.
duplicate_handling.md: Add details of "Record if Unique" option.
:
-Option | Description
----------------------------------------------|------------
-**Record all** | Record all matching events.
-**Record if different episode number** | Record a matching event only if the episode number is different.
-**Record if different subtitle** | Record a matching event only if the subtitle is different.
-**Record if different description** | Record a matching event only if the description is different.
-**Record once per month** | Record the first matching event once per month.
-**Record once per week** | Record the first matching event once a week.
-**Record once per day** | Record the first matching event once a day.
+Option | Description
+-----------------------------------------------------------|------------
+**Record all** | Record all matching events.
+**Record if EPG/XMLTV indicates it is a unique programme** | Record only if no other timer or recording has the same EPG data including event ID.
+**Record if different episode number** | Record a matching event only if the episode number is different.
+**Record if different subtitle** | Record a matching event only if the subtitle is different.
+**Record if different description** | Record a matching event only if the description is different.
+**Record once per month** | Record the first matching event once per month.
+**Record once per week** | Record the first matching event once a week.
+**Record once per day** | Record the first matching event once a day.
*Local* only checks for duplicates created by the same
autorec rule, *All* checks all the DVR logs for duplicates.
idnode_list_head_t dvr_accesses;
+ int dvr_autorec_dedup;
+
} dvr_config_t;
typedef enum {
uint32_t dvr_autorec_get_max_sched_count(dvr_autorec_entry_t *dae);
+htsmsg_t *
+dvr_autorec_entry_class_dedup_list ( void *o, const char *lang );
+
/**
*
*/
return NULL;
}
+ dvr_config_t *c = dvr_config_find_by_uuid(htsmsg_get_str(conf, "config_name"));
+ if (c && c->dvr_autorec_dedup) dae->dae_record = c->dvr_autorec_dedup;
dae->dae_weekdays = 0x7f;
dae->dae_pri = DVR_PRIO_DEFAULT;
dae->dae_start = -1;
return m;
}
-static htsmsg_t *
+htsmsg_t *
dvr_autorec_entry_class_dedup_list ( void *o, const char *lang )
{
static const struct strtab tab[] = {
cfg->dvr_autorec_max_count = 50;
cfg->dvr_format_tvmovies_subdir = strdup("tvmovies");
cfg->dvr_format_tvshows_subdir = strdup("tvshows");
+ cfg->dvr_autorec_dedup = 0;
/* Muxer config */
cfg->dvr_muxcnf.m_cache = MC_CACHE_SYSTEM;
PROP_DOC(dvrconfig_unsafe)
PROP_DOC(dvrconfig_windows)
PROP_DOC(dvrconfig_fanart)
+PROP_DOC(duplicate_handling)
const idclass_t dvr_config_class = {
.ic_class = "dvrconfig",
.opts = PO_ADVANCED,
.group = 6,
},
+ {
+ .type = PT_U32,
+ .id = "record",
+ .name = N_("Duplicate handling"),
+ .desc = N_("Duplicate recording handling."),
+ .def.i = DVR_AUTOREC_RECORD_ALL,
+ .doc = prop_doc_duplicate_handling,
+ .off = offsetof(dvr_config_t, dvr_autorec_dedup),
+ .list = dvr_autorec_entry_class_dedup_list,
+ .opts = PO_ADVANCED | PO_DOC_NLIST | PO_HIDDEN,
+ .group = 6,
+ },
{
.type = PT_BOOL,
.id = "skip-commercials",