summaryrefslogtreecommitdiff
path: root/update.h
blob: c529fda2127e1e5d415036ffc9f603ab9ebe0123 (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
#ifndef __UPDATE_H
#define __UPDATE_H

#include <mysql/mysql.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);
    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