From c6d2a0912fc2e7efe91c0b2c2f295fa2aa4fae57 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 12 Dec 2014 14:00:17 +0100 Subject: [PATCH] DVR: Add episode check to the fuzzy EPG match --- src/dvr/dvr_db.c | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index ce066fd4..db5bbe8e 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -331,6 +331,21 @@ dvr_entry_set_timer(dvr_entry_t *de) } +/** + * Get episode name + */ +static char * +dvr_entry_get_episode(epg_broadcast_t *bcast, char *buf, int len) +{ + if (!bcast || !bcast->episode) + return NULL; + if (epg_episode_number_format(bcast->episode, + buf, len, NULL, + "Season %d", ".", "Episode %d", "/%d")) + return buf; + return NULL; +} + /** * Find dvr entry using 'fuzzy' search */ @@ -339,6 +354,7 @@ dvr_entry_fuzzy_match(dvr_entry_t *de, epg_broadcast_t *e) { time_t t1, t2; const char *title1, *title2; + char buf[64]; /* Matching ID */ if (de->de_dvb_eid && de->de_dvb_eid == e->dvb_eid) @@ -357,26 +373,19 @@ dvr_entry_fuzzy_match(dvr_entry_t *de, epg_broadcast_t *e) return 0; /* Outside of window */ - if ( abs(e->start - de->de_start) > de->de_config->dvr_update_window ) + if (abs(e->start - de->de_start) > de->de_config->dvr_update_window) return 0; /* Title match (or contains?) */ - return strcmp(title1, title2) == 0; -} + if (strcmp(title1, title2)) + return 0; -/** - * Set episode name - */ -static char * -dvr_entry_get_episode(epg_broadcast_t *bcast, char *buf, int len) -{ - if (!bcast || !bcast->episode) - return NULL; - if (epg_episode_number_format(bcast->episode, - buf, len, NULL, - "Season %d", ".", "Episode %d", "/%d")) - return buf; - return NULL; + /* episode check */ + if (dvr_entry_get_episode(e, buf, sizeof(buf)) && de->de_episode) + if (strcmp(buf, de->de_episode)) + return 0; + + return 1; } /**