summaryrefslogtreecommitdiff
path: root/scrapmanager.h
blob: a65446a597a43455cc827a714b4a8c8ebe2eaa1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#ifndef __SCRAPMANAGER_H
#define __SCRAPMANAGER_H

#include <vector>
#include <map>
#include <set>
#include <utility>
#include <algorithm>

#include "lib/common.h"
#include "lib/db.h"
#include "lib/tabledef.h"

#include "services.h"
#include "tvdbseries.h"
#include "moviedbmovie.h"

using namespace std;

struct sEventsKey {
    int eventId;
    string channelId;
};

struct sEventsValue {
    int seriesId;
    int episodeId;
    int movieId;
    bool isNew;
};

struct sRecordingsKey {
    int recStart;
    string recPath;
};

class cScrapManager  {
    private:
        map<sEventsKey, sEventsValue> events;
        map<sEventsKey, sEventsValue>::iterator eventsIterator;
        map<sRecordingsKey, sEventsValue> recordings;
        map<sRecordingsKey, sEventsValue>::iterator recIterator;
        map<int, cTVDBSeries*> series;
        map<int, cMovieDbMovie*> movies;
    public:
        cScrapManager(void);
        virtual ~cScrapManager(void);
        //Series and Movies Handling
        void AddEvent(int eventId, string channelId, int seriesId, int episodeId, int movieId);
        void InitIterator(bool isRec);
        int GetNumSeries(void) { return series.size(); };
        int GetNumMovies(void) { return movies.size(); };
        sEventsValue GetEventInformation(int eventId, string channelId);
        bool GetNextSeries(bool isRec, int &seriesId, int &episodeId);
        bool GetNextMovie(bool isRec, int &movieId);
        cTVDBSeries *GetSeries(int seriesId);
        cMovieDbMovie *GetMovie(int movieId);
        cTVDBSeries *AddSeries(cTableSeries* tSeries);
        cMovieDbMovie *AddMovie(cTableMovies* tMovies);
        void AddSeriesEpisode(cTVDBSeries *series, cTableSeriesEpisode* tEpisodes);
        void AddSeriesActor(cTVDBSeries *series, cTableSeriesActor* tActors);
        void AddMovieActor(cMovieDbMovie *movie, cTableMovieActor* tActor, string role);
        void AddMovieMedia(cMovieDbMovie *movie, cTableMovieMedia* tMovieMedia, string path);
        //Recording Handling
        bool AddRecording(int recStart, string recPath, int seriesId, int episodeId, int movieId);
        bool RecordingExists(int recStart, string recPath);
        bool SeriesInUse(int seriesId);
        bool MovieInUse(int movieId);
        //Debug
        void DumpSeries(void);
        void DumpMovies(void);
        void DumpRecordings(void);
        //Service Calls
        bool GetEventType(ScraperGetEventType *call);
        bool GetSeries(cSeries *series);
        bool GetMovie(cMovie *movie);
        bool GetPosterBanner(ScraperGetPosterBanner *call);
        bool GetPosterBannerV2(ScraperGetPosterBannerV2 *call);
        bool GetPoster(ScraperGetPoster *call);
        bool GetPosterThumb(ScraperGetPosterThumb *call);
};
#endif //__SCRAPMANAGER_H