diff options
-rw-r--r-- | HISTORY.h | 2 | ||||
-rw-r--r-- | configs/epg.dat | 1 | ||||
-rw-r--r-- | configs/epgd.conf | 2 | ||||
-rw-r--r-- | configs/eventsview-perlbo.sql | 64 | ||||
-rw-r--r-- | lib/curl.c | 3 | ||||
-rw-r--r-- | lib/db.c | 15 | ||||
-rw-r--r-- | lib/searchtimer.c | 6 | ||||
-rwxr-xr-x | scripts/epgd-showmerge | 2 | ||||
-rw-r--r-- | update.c | 24 |
9 files changed, 100 insertions, 19 deletions
@@ -18,7 +18,7 @@ * ------------------------------------ 2017-03-20: version 1.1.113 (horchi) - -added: Add validity check of the API key for https://www.themoviedb.org (by 3po) + -added: Add validity check of the API key for https://www.themoviedb.org (by 3po) - change: Removed compiler warnings when using clang - added: Added clang++ to Make.config (as optional compiler) diff --git a/configs/epg.dat b/configs/epg.dat index 0959093..b33e4a4 100644 --- a/configs/epg.dat +++ b/configs/epg.dat @@ -400,6 +400,7 @@ Table useevents MASTERID "" cnt_masterid UInt 0 Data|Meta, USEID "" cnt_useid UInt 0 Data, +// SOURCE "" source Ascii 25 Data SUBSOURCE "" sub_source Ascii 10 Data|Meta, SUBEVENTID "" sub_eventid UBigInt 0 Data|Meta, diff --git a/configs/epgd.conf b/configs/epgd.conf index 019c43f..7fbddc7 100644 --- a/configs/epgd.conf +++ b/configs/epgd.conf @@ -32,7 +32,7 @@ MaxImagesPerEvent = 1 SeriesEnabled = 1 SeriesPort = 2006 SeriesStoreToFs = 0 -SeriesUrl = eplists.constabel.net +SeriesUrl = www.eplists.de ScrapEpg = 1 ScrapRecordings = 1 diff --git a/configs/eventsview-perlbo.sql b/configs/eventsview-perlbo.sql new file mode 100644 index 0000000..03d6a2c --- /dev/null +++ b/configs/eventsview-perlbo.sql @@ -0,0 +1,64 @@ +CREATE VIEW eventsview as select cnt_useid useid, cnt_eventid eventid, cnt_channelid channelid, cnt_source source, all_updsp updsp, cnt_updflg updflg, cnt_delflg delflg, cnt_fileref fileref, cnt_tableid tableid, cnt_version version, sub_title title, +case + when sub_shorttext is null then + case when sub_genre is null then '' else concat(sub_genre,' (', sub_country, ' ',sub_year, ')') end + else + case when epi_season is null then + sub_shorttext + else + concat('(S', lpad(format(epi_season, 0), 2, '0'), 'E', lpad(format(epi_part, 0), 2, '0'), ') ', epi_partname) + end +end shorttext, +cnt_starttime starttime, cnt_duration duration, cnt_parentalrating parentalrating, cnt_vps vps, cnt_contents contents, replace( +concat( + TRIM(LEADING '|' FROM + concat( + case when sub_genre is Null then '' else concat('|','Genre: ',sub_genre) end, + case when sub_category is Null then '' else concat('|','Kategorie: ',sub_category) end, + case when sub_country is Null then '' else concat('|','Land: ',sub_country) end, + case when sub_year is Null then '' else concat('|','Jahr: ',substring(sub_year,1,4)) end + ) + ), + concat( + case when sub_shortdescription is Null then '' else concat('||',sub_shortdescription) end, + case when sub_txtrating is Null and sub_shortreview is null then '' else '||' end, + case when sub_txtrating is null then '' else sub_txtrating end, + case when sub_txtrating is Null or sub_shortreview is null then '' else ', ' end, + case when sub_shortreview is Null then '' else sub_shortreview end, + case when sub_tipp is Null and sub_rating is Null then '' else '||' end, + case when sub_tipp is Null then '' else concat('|',sub_tipp) end, + case when sub_rating is Null then '' else concat('|',sub_rating) end, + case when sub_topic is Null then '' else concat('||','Thema: ',sub_topic) end, + case when sub_longdescription is Null then '' else concat('||',sub_longdescription) end, + case when sub_moderator is Null then '' else concat('||','Moderator: ',sub_moderator) end, + case when sub_commentator is Null then '' else concat('||','Kommentar: ',sub_commentator) end, + case when sub_guest is Null then '' else concat('|','Gäste: ',sub_guest) end, + case when cnt_parentalrating is Null or cnt_parentalrating = 0 then '' else concat('||','Altersempfehlung: ab ',cnt_parentalrating) end, + case when sub_actor is Null and sub_producer is Null and sub_other is Null then '' else '|' end, + case when sub_actor is Null then '' else concat('|','Darsteller: ',sub_actor) end, + case when sub_producer is Null then '' else concat('|','Produzent: ',sub_producer) end, + case when sub_other is Null then '' else concat('|','Sonstige: ',sub_other) end, + case when sub_director is Null and sub_screenplay is Null and sub_camera is Null and sub_music is Null and sub_audio is Null and sub_flags is Null then '' else '|' end, + case when sub_director is Null then '' else concat('|','Regie: ',sub_director) end, + case when sub_screenplay is Null then '' else concat('|','Drehbuch: ',sub_screenplay) end, + case when sub_camera is Null then '' else concat('|','Kamera: ',sub_camera) end, + case when sub_music is Null then '' else concat('|','Musik: ',sub_music) end, + case when sub_audio is Null then '' else concat('|','Audio: ',sub_audio) end, + case when sub_flags is Null then '' else concat('|','Flags: ',sub_flags) end, + case when epi_episodename is Null then '' else concat('||','Serie: ',epi_episodename) end, + case when epi_shortname is Null then '' else concat('|','Kurzname: ',epi_shortname) end, + case when epi_partname is Null then '' else concat('|','Episode: ',epi_partname) end, + case when epi_extracol1 is Null then '' else concat('|',epi_extracol1) end, + case when epi_extracol2 is Null then '' else concat('|',epi_extracol2) end, + case when epi_extracol3 is Null then '' else concat('|',epi_extracol3) end, + case when epi_season is Null then '' else concat('|','Staffel: ',cast(epi_season as char)) end, + case when epi_part is Null then '' else concat('|','Staffelfolge: ',cast(epi_part as char)) end, + case when epi_part is Null then '' else concat('|','Staffelfolgen: ',cast(epi_parts as char)) end, + case when epi_number is Null then '' else concat('|','Folge: ',cast(epi_number as char)) end, + case when cnt_source <> sub_source then concat('||','Quelle: ',upper(replace(cnt_source,'vdr','dvb')),'/',upper(sub_source)) else concat('||','Quelle: ',upper(replace(cnt_source,'vdr','dvb'))) end + ) +) +,'|', ' +') as description +from + useevents; @@ -108,6 +108,7 @@ int cCurl::init(const char* httpproxy) curl_easy_setopt(handle, CURLOPT_PROXY, httpproxy); // Specify HTTP proxy } + curl_easy_setopt(handle, CURLOPT_HTTPHEADER, 0); curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, collect_data); curl_easy_setopt(handle, CURLOPT_WRITEDATA, 0); // Set option to write to string curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, yes); @@ -439,7 +440,7 @@ int cCurl::downloadFile(const char* url, int& size, MemoryStruct* data, int time curl_easy_setopt(handle, CURLOPT_ACCEPT_ENCODING, "gzip"); // if (headerlist) - curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headerlist); + curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headerlist); // perform http-get @@ -734,15 +734,18 @@ int cDbTable::init(int allowAlter) // check/create table ... - if (exist() && allowAlter) - validateStructure(allowAlter); + if (allowAlter) + { + if (exist()) + validateStructure(allowAlter); - if (createTable() != success) - return fail; + if (!exist() && createTable() != success) + return fail; - // check/create indices + // check/create indices - createIndices(); + createIndices(); + } // ------------------------------ // prepare BASIC statements diff --git a/lib/searchtimer.c b/lib/searchtimer.c index cfe69e4..2982996 100644 --- a/lib/searchtimer.c +++ b/lib/searchtimer.c @@ -690,7 +690,7 @@ int cSearchTimer::checkTimers() { int count = 0; - tell(1, "Checking timers against actual epg and serarchtimer settings"); + tell(1, "Checking timers against actual epg and searchtimer settings"); if (checkConnection() != success) return 0; @@ -1224,8 +1224,8 @@ int cSearchTimer::isAlreadyDone(int repeatfields, json_t* obj, int silent) if (repeatfields & sfFolge) { - selectDoneTimer->build(" and (field('%s',ifnull(compshorttext,''),ifnull(episodecomppartname,'')) > 0" - " or field('%s',ifnull(compshorttext,''),ifnull(episodecomppartname,'')) > 0)", + selectDoneTimer->build(" and (field('%s',ifnull(compshorttext,'NoShortnameAvailable'),ifnull(episodecomppartname,'NoShortnameAvailable')) > 0" + " or field('%s',ifnull(compshorttext,''),ifnull(episodecomppartname,'NoShortnameAvailable')) > 0)", useeventsDb->getStrValue("COMPSHORTTEXT"), useeventsDb->getStrValue("EPISODECOMPPARTNAME")); } diff --git a/scripts/epgd-showmerge b/scripts/epgd-showmerge index 1dc022a..5c4fee2 100755 --- a/scripts/epgd-showmerge +++ b/scripts/epgd-showmerge @@ -10,7 +10,7 @@ if [ "$1" == "-h" ]; then exit 0 fi -mysql -u epg2vdr -Depg2vdr -e "select from_unixtime(lastmerge) as 'las merge was at' from vdrs where uuid = 'epgd';" +mysql -u epg2vdr -Depg2vdr -e "select from_unixtime(lastmerge) as 'last merge was at' from vdrs where uuid = 'epgd';" mysql -u epg2vdr -Depg2vdr -e "select count(1) as 'events pending for merge' from events where source = 'vdr' and updsp > (select lastmerge from vdrs where uuid = 'epgd');" mysql -u epg2vdr -Depg2vdr -e "select count(source),source from events group by source;" @@ -1808,7 +1808,7 @@ int cEpgd::parseEvent(cDbRow* event, xmlNode* node) event->getBigintValue("EVENTID"), event->getStrValue("FILEREF")); - event->setValue("IMAGECOUNT", imgCnt); + event->setValue("IMAGECOUNT", min(imgCnt, EpgdConfig.maximagesperevent)); free(images); free(imagetype); @@ -1829,6 +1829,8 @@ int cEpgd::storeImageRefs(tEventId evtId, const char* source, const char* images char* imagesCsv = strdup(images); int count = 0; + // #TODO limit here to EpgdConfig.maximagesperevent + for (char* p = imagesCsv; p && *p; p = next, lfn++) { if ((next = strchr(p, ','))) @@ -2314,9 +2316,6 @@ int cEpgd::scrapNewEvents() if (seriesCur % 10 == 0) tell(0, "series episode %d / %d scraped...continuing scraping", seriesCur, seriesTotal); - if (seriesCur % 50 == 0) - sleep(1); - tvdbManager->ProcessSeries(*it); if (doShutDown()) @@ -2354,6 +2353,8 @@ int cEpgd::scrapNewEvents() tell(0, "%d new movies to scrap in db", moviesTotal); + time_t sectionStartAt = time(0); // split download in parts of 40 + for (vector<sMovieResult>::iterator it = moviesToScrap.begin(); it != moviesToScrap.end(); ++it) { movieCur++; @@ -2361,8 +2362,19 @@ int cEpgd::scrapNewEvents() if (movieCur % 10 == 0) tell(0, "movie %d / %d scraped...continuing scraping", movieCur, moviesTotal); - if (movieCur % 50 == 0) - sleep(1); + if (movieCur % 40 == 0) + { + int duration = time(0) - sectionStartAt; + + if (duration < 10) + { + duration = 10 - duration; + tell(0, "Waiting %d seconds..", duration); + sleep(duration); + } + + sectionStartAt = time(0); + } movieDbManager->ProcessMovie(*it); |