summaryrefslogtreecommitdiff
path: root/scrapmanager.c
diff options
context:
space:
mode:
Diffstat (limited to 'scrapmanager.c')
-rw-r--r--scrapmanager.c63
1 files changed, 55 insertions, 8 deletions
diff --git a/scrapmanager.c b/scrapmanager.c
index b3f9af8..4b07ff3 100644
--- a/scrapmanager.c
+++ b/scrapmanager.c
@@ -354,7 +354,7 @@ void cScrapManager::DumpMovies(void) {
}
void cScrapManager::DumpRecordings(void) {
- tell(0, "%ld recordings in memory:", recordings.size());
+ tell(0, "%d recordings in memory:", recordings.size());
for (map<sRecordingsKey, sEventsValue>::iterator it = recordings.begin(); it != recordings.end(); it++) {
sRecordingsKey key = it->first;
sEventsValue val = it->second;
@@ -480,13 +480,60 @@ bool cScrapManager::GetMovie(cMovie *m) {
}
bool cScrapManager::GetPosterBanner(ScraperGetPosterBanner *call) {
- sEventsKey k;
- k.eventId = call->event->EventID();
- k.channelId = *(call->event->ChannelID().ToString());
- map<sEventsKey, sEventsValue>::iterator hit = events.find(k);
- if (hit == events.end())
- return false;
- sEventsValue v = hit->second;
+ sEventsValue v;
+ if (call->event) {
+ sEventsKey k;
+ k.eventId = call->event->EventID();
+ k.channelId = *(call->event->ChannelID().ToString());
+ map<sEventsKey, sEventsValue>::iterator hit = events.find(k);
+ if (hit == events.end())
+ return false;
+ v = hit->second;
+ }
+ if (v.seriesId > 0) {
+ call->type = tSeries;
+ map<int, cTVDBSeries*>::iterator hitSeries = series.find(v.seriesId);
+ if (hitSeries == series.end())
+ return false;
+ cTVDBSeries *s = hitSeries->second;
+ bool found = s->GetRandomBanner(&call->banner);
+ if (v.episodeId > 0) {
+ s->GetSeasonPoster(v.episodeId, &call->poster);
+ }
+ return found;
+ } else if (v.movieId > 0) {
+ call->type = tMovie;
+ map<int, cMovieDbMovie*>::iterator hitMovies = movies.find(v.movieId);
+ if (hitMovies == movies.end())
+ return false;
+ cMovieDbMovie *m = hitMovies->second;
+ return m->GetMedia(mmPoster, &call->poster);
+ } else {
+ call->type = tNone;
+ }
+ return false;
+}
+
+bool cScrapManager::GetPosterBannerV2(ScraperGetPosterBannerV2 *call) {
+ sEventsValue v;
+ if (call->event) {
+ sEventsKey k;
+ k.eventId = call->event->EventID();
+ k.channelId = *(call->event->ChannelID().ToString());
+ map<sEventsKey, sEventsValue>::iterator hit = events.find(k);
+ if (hit == events.end())
+ return false;
+ v = hit->second;
+ } else if (call->recording) {
+ sRecordingsKey k;
+ k.recStart = call->recording->Start();
+ k.recPath = getRecPath(call->recording);
+ map<sRecordingsKey, sEventsValue>::iterator hit = recordings.find(k);
+ if (hit == recordings.end()) {
+ return false;
+ }
+ v = hit->second;
+ }
if (v.seriesId > 0) {
call->type = tSeries;
map<int, cTVDBSeries*>::iterator hitSeries = series.find(v.seriesId);