From 2e460f46395dd61931d3dd431a7ad8dd465f1b81 Mon Sep 17 00:00:00 2001 From: louis Date: Tue, 27 Aug 2013 06:48:56 +0200 Subject: Scrap a running recording if it is not scraped already --- HISTORY | 3 +++ tvscraperdb.c | 8 ++++++-- tvscraperdb.h | 4 ++-- worker.c | 13 ++++++++++--- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/HISTORY b/HISTORY index 2eded02..ff217dd 100644 --- a/HISTORY +++ b/HISTORY @@ -19,3 +19,6 @@ Version 0.0.3 - Implemented cache so that an already looked up series or movie will not be looked up again - Removed quotation marks around search strings + +Version 0.0.4 +- Scrap a running recording if it is not scraped already diff --git a/tvscraperdb.c b/tvscraperdb.c index 245e43e..86f9fec 100644 --- a/tvscraperdb.c +++ b/tvscraperdb.c @@ -461,7 +461,7 @@ void cTVScraperDB::InsertRecording(int recEventID, int seriesID, int movieID) { int ret = sqlite3_step(stmt); } -void cTVScraperDB::SetRecordingSeries(int eventID) { +bool cTVScraperDB::SetRecordingSeries(int eventID) { stringstream sql; sql << "select series_id from event_series where event_id = " << eventID; vector > result = Query(sql.str()); @@ -471,11 +471,13 @@ void cTVScraperDB::SetRecordingSeries(int eventID) { if (row.size() > 0) { int seriesID = atoi(row[0].c_str()); InsertRecording(eventID, seriesID, 0); + return true; } } + return false; } -void cTVScraperDB::SetRecordingMovie(int eventID) { +bool cTVScraperDB::SetRecordingMovie(int eventID) { stringstream sql; sql << "select movie_id from event_movie where event_id =" << eventID; vector > result = Query(sql.str()); @@ -485,8 +487,10 @@ void cTVScraperDB::SetRecordingMovie(int eventID) { if (row.size() > 0) { int movieID = atoi(row[0].c_str()); InsertRecording(eventID, 0, movieID); + return true; } } + return false; } void cTVScraperDB::ClearRecordings(void) { diff --git a/tvscraperdb.h b/tvscraperdb.h index fa9c58d..4c811a6 100644 --- a/tvscraperdb.h +++ b/tvscraperdb.h @@ -35,8 +35,8 @@ public: int SearchMovie(string movieTitle); int SearchSeries(string seriesTitle); void InsertRecording(int recEventID, int seriesID, int movieID); - void SetRecordingSeries(int eventID); - void SetRecordingMovie(int eventID); + bool SetRecordingSeries(int eventID); + bool SetRecordingMovie(int eventID); void ClearRecordings(void); bool CheckScrap(time_t timeStamp, string channelID); bool CheckStartScrapping(int minimumDistance); diff --git a/worker.c b/worker.c index d2fa8e7..85bbfaa 100644 --- a/worker.c +++ b/worker.c @@ -180,9 +180,13 @@ void cTVScraperWorker::CheckRunningTimers(void) { const cEvent *event = timer->Event(); scrapType type = GetScrapType(event); if (type == scrapSeries) { - db->SetRecordingSeries((int)event->EventID()); + if (!db->SetRecordingSeries((int)event->EventID())) { + tvdbScraper->Scrap(event, (int)event->EventID()); + } } else if (type == scrapMovie) { - db->SetRecordingMovie((int)event->EventID()); + if (!db->SetRecordingMovie((int)event->EventID())) { + moviedbScraper->Scrap(event, (int)event->EventID()); + } } } } @@ -216,7 +220,10 @@ void cTVScraperWorker::Action(void) { DisconnectScrapers(); continue; } - CheckRunningTimers(); + if (ConnectScrapers()) { + CheckRunningTimers(); + DisconnectScrapers(); + } if (StartScrapping()) { dsyslog("tvscraper: start scraping epg"); db->ClearOutdated(movieDir); -- cgit v1.2.3