added more debugging possibilities

This commit is contained in:
louis 2014-04-27 12:39:56 +02:00
parent b22842dc8e
commit c538d359ec
8 changed files with 130 additions and 29 deletions

View File

@ -12,6 +12,7 @@ cScraper2VdrConfig::cScraper2VdrConfig() {
mysqlDBUser = "epg2vdr"; mysqlDBUser = "epg2vdr";
mysqlDBPass = "epg"; mysqlDBPass = "epg";
recScrapInfoName = "scrapinfo"; recScrapInfoName = "scrapinfo";
debug = 0;
} }
cScraper2VdrConfig::~cScraper2VdrConfig() { cScraper2VdrConfig::~cScraper2VdrConfig() {
@ -50,6 +51,7 @@ bool cScraper2VdrConfig::SetupParse(const char *Name, const char *Value) {
else if (strcmp(Name, "mysqlDBName") == 0) mysqlDBName = Value; else if (strcmp(Name, "mysqlDBName") == 0) mysqlDBName = Value;
else if (strcmp(Name, "mysqlDBUser") == 0) mysqlDBUser = Value; else if (strcmp(Name, "mysqlDBUser") == 0) mysqlDBUser = Value;
else if (strcmp(Name, "mysqlDBPass") == 0) mysqlDBPass = Value; else if (strcmp(Name, "mysqlDBPass") == 0) mysqlDBPass = Value;
else if (strcmp(Name, "debug") == 0) debug = atoi(Value);
else else
return false; return false;
return true; return true;

View File

@ -27,5 +27,6 @@ class cScraper2VdrConfig {
string mysqlDBUser; string mysqlDBUser;
string mysqlDBPass; string mysqlDBPass;
string recScrapInfoName; string recScrapInfoName;
int debug;
}; };
#endif //__SCRAPER2VDR_CONFIG_H #endif //__SCRAPER2VDR_CONFIG_H

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: vdr-scraper2vdr 0.0.1\n" "Project-Id-Version: vdr-scraper2vdr 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n" "Report-Msgid-Bugs-To: <see README>\n"
"POT-Creation-Date: 2014-03-30 14:37+0200\n" "POT-Creation-Date: 2014-04-27 12:22+0200\n"
"PO-Revision-Date: 2014-03-30 18:30+0100\n" "PO-Revision-Date: 2014-03-30 18:30+0100\n"
"Last-Translator: 3PO\n" "Last-Translator: 3PO\n"
"Language-Team: German <vdr@linuxtv.org>\n" "Language-Team: German <vdr@linuxtv.org>\n"
@ -48,6 +48,9 @@ msgstr "Bereinige Aufnahmen in Datenbank"
msgid "Show Main Menu Entry" msgid "Show Main Menu Entry"
msgstr "Hauptmenüeintrag anzeigen" msgstr "Hauptmenüeintrag anzeigen"
msgid "Debug Mode"
msgstr "Debug Modus"
msgid "MySQL Host" msgid "MySQL Host"
msgstr "MySQL Host" msgstr "MySQL Host"
@ -62,4 +65,3 @@ msgstr "MySQL Benutzer"
msgid "MySQL Password" msgid "MySQL Password"
msgstr "MySQL Passwort" msgstr "MySQL Passwort"

View File

@ -219,6 +219,12 @@ const char **cPluginScraper2vdr::SVDRPHelpPages(void) {
" Trigger scan for scrapinfo files in video directory.", " Trigger scan for scrapinfo files in video directory.",
"CRDB\n" "CRDB\n"
" Trigger cleanup of recordings database.", " Trigger cleanup of recordings database.",
"DSER\n"
" Dump series kept in memory.",
"DMOV\n"
" Dump movies kept in memory.",
"DREC\n"
" Dump recordings kept in memory.",
0 0
}; };
return HelpPages; return HelpPages;
@ -240,6 +246,15 @@ cString cPluginScraper2vdr::SVDRPCommand(const char *Command, const char *Option
} else if (strcasecmp(Command, "CRDB") == 0) { } else if (strcasecmp(Command, "CRDB") == 0) {
update->TriggerCleanRecordingsDB(); update->TriggerCleanRecordingsDB();
return "SCRAPER2VDR cleanup of recording DB triggered."; return "SCRAPER2VDR cleanup of recording DB triggered.";
} else if (strcasecmp(Command, "DSER") == 0) {
scrapManager->DumpSeries();
return "SCRAPER2VDR dumping available series";
} else if (strcasecmp(Command, "DMOV") == 0) {
scrapManager->DumpMovies();
return "SCRAPER2VDR dumping available movies";
} else if (strcasecmp(Command, "DREC") == 0) {
scrapManager->DumpRecordings();
return "SCRAPER2VDR dumping available recordings";
} }
return NULL; return NULL;
} }

View File

@ -1,10 +1,13 @@
#define __STL_CONFIG_H #define __STL_v_H
#include <vdr/recording.h> #include <vdr/recording.h>
#include "tools.h" #include "tools.h"
#include "config.h"
#include "scrapmanager.h" #include "scrapmanager.h"
using namespace std; using namespace std;
extern cScraper2VdrConfig config;
bool operator<(const sEventsKey& l, const sEventsKey& r) { bool operator<(const sEventsKey& l, const sEventsKey& r) {
if (l.eventId != r.eventId) if (l.eventId != r.eventId)
return (l.eventId < r.eventId); return (l.eventId < r.eventId);
@ -279,63 +282,138 @@ bool cScrapManager::MovieInUse(int movieId) {
return false; return false;
} }
void cScrapManager::DumpSeries(int num) { void cScrapManager::DumpSeries(void) {
int i=0; int numSeries = 0;
tell(0, "Dumping first %d series", num); map<sEventsKey, sEventsValue>::iterator it;
for (map<int, cTVDBSeries*>::iterator it = series.begin(); it != series.end(); it++) { for (it = events.begin(); it != events.end(); it++) {
cTVDBSeries *s = it->second; sEventsKey key = it->first;
s->Dump(); sEventsValue ev = it->second;
if (i == num) if (ev.seriesId > 0) {
break; const cEvent *event = NULL;
i++; const cChannel *c = NULL;
cSchedulesLock lock;
cSchedules *s = (cSchedules *)cSchedules::Schedules(lock);
if (s) {
tChannelID cID = tChannelID::FromString(key.channelId.c_str());
c = Channels.GetByChannelID(cID);
const cSchedule *schedule = s->GetSchedule(cID);
if (schedule) {
event = schedule->GetEvent(key.eventId);
}
}
if (event) {
tell(0, "series (tvdbID %d, episodeId %d), Event (EventID %d): %s, %s: %s (%s)", ev.seriesId,
ev.episodeId,
key.eventId,
*event->GetDateString(),
*event->GetTimeString(),
event->Title(),
c?(c->Name()):"unknown channel");
} else {
tell(0, "series (tvdbID %d, episodeId %d), Event (EventID %d): No VDR Event found", ev.seriesId, ev.episodeId, key.eventId);
}
numSeries++;
}
} }
tell(0, "Keeping %d series in memory", numSeries);
} }
void cScrapManager::DumpMovies(int num) { void cScrapManager::DumpMovies(void) {
int i=0; int numMovies = 0;
tell(0, "Dumping first %d movies", num); map<sEventsKey, sEventsValue>::iterator it;
for (map<int, cMovieDbMovie*>::iterator it = movies.begin(); it != movies.end(); it++) { for (it = events.begin(); it != events.end(); it++) {
cMovieDbMovie *m = it->second; sEventsKey key = it->first;
m->Dump(); sEventsValue ev = it->second;
if (i == num) if (ev.movieId > 0) {
break; const cEvent *event = NULL;
i++; const cChannel *c = NULL;
cSchedulesLock lock;
cSchedules *s = (cSchedules *)cSchedules::Schedules(lock);
if (s) {
tChannelID cID = tChannelID::FromString(key.channelId.c_str());
c = Channels.GetByChannelID(cID);
const cSchedule *schedule = s->GetSchedule(cID);
if (schedule) {
event = schedule->GetEvent(key.eventId);
}
}
if (event) {
tell(0, "movie (moviedbId %d), Event (EventID %d): %s, %s: %s (%s)", ev.movieId,
key.eventId,
*event->GetDateString(),
*event->GetTimeString(),
event->Title(),
c?(c->Name()):"unknown channel");
} else {
tell(0, "movie (moviedbId %d), Event (EventID %d): No VDR Event found", ev.movieId, key.eventId);
}
numMovies++;
}
} }
tell(0, "Keeping %d movies in memory", numMovies);
} }
void cScrapManager::DumpRecordings(int num) { void cScrapManager::DumpRecordings(void) {
tell(0, "Dumping first %d recordings", num); tell(0, "%d recordings in memory:", recordings.size());
for (map<sRecordingsKey, sEventsValue>::iterator it = recordings.begin(); it != recordings.end(); it++) { for (map<sRecordingsKey, sEventsValue>::iterator it = recordings.begin(); it != recordings.end(); it++) {
sRecordingsKey key = it->first; sRecordingsKey key = it->first;
sEventsValue val = it->second; sEventsValue val = it->second;
tell(0, "recStart %d, recPath %s, seriesId %d, episodeId %d, movieId %d", key.recStart, key.recPath.c_str(), val.seriesId, val.episodeId, val.movieId); if (val.seriesId > 0) {
tell(0, "series (tvdbID %d, episodeId %d): %s", val.seriesId, val.episodeId, key.recPath.c_str());
} else if (val.movieId) {
tell(0, "movie (moviedbID %d): %s", val.movieId, key.recPath.c_str());
} else {
tell(0, "unknown recording: %s", key.recPath.c_str());
}
} }
} }
bool cScrapManager::GetEventType(ScraperGetEventType *call) { bool cScrapManager::GetEventType(ScraperGetEventType *call) {
if (config.debug) {
tell(0, "scraper2vdr plugin service call GetEventType called");
}
sEventsValue v; sEventsValue v;
if (call->event) { if (call->event) {
sEventsKey k; sEventsKey k;
k.eventId = call->event->EventID(); k.eventId = call->event->EventID();
k.channelId = *(call->event->ChannelID().ToString()); k.channelId = *(call->event->ChannelID().ToString());
map<sEventsKey, sEventsValue>::iterator hit = events.find(k); map<sEventsKey, sEventsValue>::iterator hit = events.find(k);
if (hit == events.end()) if (hit == events.end()) {
if (config.debug) {
tell(0, "no event found for eventID %d, channelID %s", k.eventId, k.channelId.c_str());
}
return false; return false;
}
if (config.debug)
tell(0, "event found for eventID %d, channelID %s", k.eventId, k.channelId.c_str());
v = hit->second; v = hit->second;
} else if (call->recording) { } else if (call->recording) {
sRecordingsKey k; sRecordingsKey k;
k.recStart = call->recording->Start(); k.recStart = call->recording->Start();
k.recPath = getRecPath(call->recording); k.recPath = getRecPath(call->recording);
map<sRecordingsKey, sEventsValue>::iterator hit = recordings.find(k); map<sRecordingsKey, sEventsValue>::iterator hit = recordings.find(k);
if (hit == recordings.end()) if (hit == recordings.end()) {
if (config.debug) {
tell(0, "no recording found for recStart %d, recPath %s", k.recStart, k.recPath.c_str());
}
return false; return false;
}
v = hit->second; v = hit->second;
if (config.debug) {
tell(0, "recording found for recStart %d, recPath %s", k.recStart, k.recPath.c_str());
}
} }
if (v.seriesId > 0) { if (v.seriesId > 0) {
call->type = tSeries; call->type = tSeries;
if (config.debug)
tell(0, "series detected, seriesId %d, episodeId %d", v.seriesId, v.episodeId);
} else if (v.movieId > 0) { } else if (v.movieId > 0) {
call->type = tMovie; call->type = tMovie;
if (config.debug)
tell(0, "movie detected, movieId %d", v.movieId);
} else { } else {
if (config.debug)
tell(0, "unvalid entry");
call->type = tNone; call->type = tNone;
return false; return false;
} }

View File

@ -67,9 +67,9 @@ class cScrapManager {
bool SeriesInUse(int seriesId); bool SeriesInUse(int seriesId);
bool MovieInUse(int movieId); bool MovieInUse(int movieId);
//Debug //Debug
void DumpSeries(int num); void DumpSeries(void);
void DumpMovies(int num); void DumpMovies(void);
void DumpRecordings(int num); void DumpRecordings(void);
//Service Calls //Service Calls
bool GetEventType(ScraperGetEventType *call); bool GetEventType(ScraperGetEventType *call);
bool GetSeries(cSeries *series); bool GetSeries(cSeries *series);

View File

@ -21,6 +21,7 @@ void cScraper2VdrSetup::Setup(void) {
Clear(); Clear();
Add(new cMenuEditBoolItem(tr("Show Main Menu Entry"), &tmpConfig.mainMenuEntry)); Add(new cMenuEditBoolItem(tr("Show Main Menu Entry"), &tmpConfig.mainMenuEntry));
Add(new cMenuEditBoolItem(tr("Debug Mode"), &tmpConfig.debug));
Add(new cMenuEditStrItem(tr("MySQL Host"), host, sizeof(host), tr(FileNameChars))); Add(new cMenuEditStrItem(tr("MySQL Host"), host, sizeof(host), tr(FileNameChars)));
Add(new cMenuEditIntItem(tr("MySQL Port"), &tmpConfig.mysqlPort, 1, 99999)); Add(new cMenuEditIntItem(tr("MySQL Port"), &tmpConfig.mysqlPort, 1, 99999));
Add(new cMenuEditStrItem(tr("MySQL Database Name"), dbname, sizeof(dbname), tr(FileNameChars))); Add(new cMenuEditStrItem(tr("MySQL Database Name"), dbname, sizeof(dbname), tr(FileNameChars)));
@ -75,4 +76,5 @@ void cScraper2VdrSetup::Store(void) {
SetupStore("mysqlDBName", tmpConfig.mysqlDBName.c_str()); SetupStore("mysqlDBName", tmpConfig.mysqlDBName.c_str());
SetupStore("mysqlDBUser", tmpConfig.mysqlDBUser.c_str()); SetupStore("mysqlDBUser", tmpConfig.mysqlDBUser.c_str());
SetupStore("mysqlDBPass", tmpConfig.mysqlDBPass.c_str()); SetupStore("mysqlDBPass", tmpConfig.mysqlDBPass.c_str());
SetupStore("debug", tmpConfig.debug);
} }

View File

@ -1314,3 +1314,4 @@ void cUpdate::TriggerCleanRecordingsDB(void) {
tell(0, "cleanup of recording DB triggered"); tell(0, "cleanup of recording DB triggered");
forceCleanupRecordingDb = true; forceCleanupRecordingDb = true;
} }