summaryrefslogtreecommitdiff
path: root/update.h
blob: 2344932add972e9ddf1cd7f972b70c03294af501 (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#ifndef __UPDATE_H
#define __UPDATE_H

#include <map>

#include <vdr/thread.h>
#include "lib/common.h"
#include "lib/db.h"
#include "lib/tabledef.h"
#include "scrapmanager.h"

#define EPGDNAME "epgd"

class cUpdate : public cThread  {
    private:
        cScrapManager *scrapManager;
        string imgPathSeries;
        string imgPathMovies;
        bool withutf8;
        bool loopActive;
        cDbConnection* connection;
        cTableVdrs* vdrDb;
        cTableEvents* tEvents;
        cTableSeries* tSeries;
        cTableSeriesEpisode* tEpisodes;
        cTableSeriesMedia* tSeriesMedia;
        cTableSeriesActor* tSeriesActors;
        cTableMovies* tMovies;
        cTableMovieActor* tMovieActor;
        cTableMovieActors* tMovieActors;
        cTableMovieMedia* tMovieMedia;
        cTableRecordings* tRecordings;
        int lastScrap;
        cCondVar waitCondition;
        cMutex mutex;
        bool forceUpdate;
        bool forceRecordingUpdate;
        bool forceVideoDirUpdate;
        bool forceScrapInfoUpdate;
        bool forceCleanupRecordingDb;
        int exitDb();
        int dbConnected(int force = no) { return connection && (!force || connection->check() == success); };
        int CheckConnection(int& timeout);
        bool CheckEpgdBusy(void);
        void Action(void);
        int ReadScrapedEvents(void);
        //SERIES
        int ReadSeries(bool isRec);
        void ReadEpisode(int episodeId, cTVDBSeries *series, string path);
        void LoadEpisodeImage(cTVDBSeries *series, int episodeId, string path);
        void LoadSeasonPoster(cTVDBSeries *series, int season, string path);
        void ReadSeriesActors(cTVDBSeries *series, string path);
        void LoadSeriesMedia(cTVDBSeries *series, string path);
        string LoadMediaSeries(int seriesId, int mediaType, string path, int width, int height);
        void LoadSeriesActorThumb(cTVDBSeries *series, int actorId, string path);
        //MOVIES
        int ReadMovies(bool isRec);
        void ReadMovieActors(cMovieDbMovie *movie);
        void LoadMovieActorThumbs(cMovieDbMovie *movie);
        void LoadMovieMedia(cMovieDbMovie *movie, string moviePath);
        string LoadMediaMovie(int movieId, int mediaType, string path, int width, int height);
        //RECORDINGS
        int ReadRecordings(void);
        int ScanVideoDir(void);
        int ScanVideoDirScrapInfo(void);
        bool LoadRecording(int eventId, string recName);
        bool ScrapInfoChanged(int scrapInfoMovieID, int scrapInfoSeriesID, int scrapInfoEpisodeID);
        void ReadScrapInfo(string recDir, int &scrapInfoMovieID, int &scrapInfoSeriesID, int &scrapInfoEpisodeID);
        //CLEANUP
        int CleanupSeries(void);
        int CleanupMovies(void);
        int CleanupRecordings(void);

      // statements

      cDbStatement* selectReadScrapedEventsInit;
      cDbStatement* selectReadScrapedEvents;
      cDbStatement* selectImg;
      cDbStatement* selectEpisodeImg;
      cDbStatement* selectSeasonPoster;
      cDbStatement* selectActors;
      cDbStatement* selectActorThumbs;
      cDbStatement* selectSeriesMedia;
      cDbStatement* selectMovieActors;
      cDbStatement* selectMovieActorThumbs;
      cDbStatement* selectMovieMedia;
      cDbStatement* selectMediaMovie;
      cDbStatement* selectRecordings;
      cDbStatement* selectCleanupRecordings;

      cDbValue imageSize;
      cDbValue episodeImageSize;
      cDbValue posterSize;
      cDbValue series_id;
      cDbValue actorImageSize;

      cDbValue actorRole;
      cDbValue actorMovie;
      cDbValue thbWidth;
      cDbValue thbHeight;

    public:
        cUpdate(cScrapManager *manager);
        virtual ~cUpdate(void);
        int initDb();
        void Stop(void);
        void ForceUpdate(void);
        void ForceRecordingUpdate(void);
        void ForceVideoDirUpdate(void);
        void ForceScrapInfoUpdate(void);
        void TriggerCleanRecordingsDB(void);
};

//***************************************************************************
#endif //__UPDATE_H