dvr_entry_t *dvr_entry_find_by_event(event_t *e);
+dvr_entry_t *dvr_entry_find_by_event_fuzzy(event_t *e);
+
off_t dvr_get_filesize(dvr_entry_t *de);
dvr_entry_t *dvr_entry_cancel(dvr_entry_t *de);
dvr_autorec_check_event(event_t *e)
{
dvr_autorec_entry_t *dae;
+ dvr_entry_t *existingde;
TAILQ_FOREACH(dae, &autorec_entries, dae_link)
- if(autorec_cmp(dae, e))
- dvr_entry_create_by_autorec(e, dae);
+ if(autorec_cmp(dae, e)) {
+ existingde = dvr_entry_find_by_event_fuzzy(e);
+ if (existingde != NULL) {
+ tvhlog(LOG_DEBUG, "dvr", "Updating existing DVR entry for %s", e->e_title);
+ dvr_entry_update(existingde, e->e_title, e->e_start, e->e_stop);
+ } else
+ dvr_entry_create_by_autorec(e, dae);
+ }
}
/**
htsp_dvr_entry_update(de);
dvr_entry_notify(de);
-
tvhlog(LOG_INFO, "dvr", "\"%s\" on \"%s\": Updated Timer", de->de_title, de->de_channel->ch_name);
return de;
return NULL;
}
+/**
+ * Find event with same title starting and ending around same time
+ * on same channel
+ */
+dvr_entry_t *
+dvr_entry_find_by_event_fuzzy(event_t *e)
+{
+ dvr_entry_t *de;
+
+ LIST_FOREACH(de, &e->e_channel->ch_dvrs, de_channel_link)
+ if(strcmp(de->de_title, e->e_title) == 0) {
+ if ((abs(de->de_start - e->e_start) < 600) && (abs(de->de_stop - e->e_stop) < 600))
+ return de;
+ }
+ return NULL;
+}
+
/**
*
*/