summaryrefslogtreecommitdiff
path: root/import.h
blob: a2020a695b0e1e1bd26c76c720ffd68712bf0346 (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
/*
 * import.h: A plugin for the Video Disk Recorder
 *
 * See the README file for copyright information and how to reach the author.
 *
 */

#ifndef _IMPORT_H
#define _IMPORT_H

#include <vdr/epg.h>
#include <vdr/channels.h>
#include <sqlite3.h>

#include "event.h"
#include "source.h"
#include "maps.h"

enum
{
    IMPORT_ALL=0,
    IMPORT_DESCRIPTION,
    IMPORT_SHORTTEXT
};

class cEPGSource;
class cEPGExecutor;

class cImport
{
private:
    struct split
    {
        char *pointers[256];
        int count;
    };
    enum
    {
        IMPORT_NOERROR=0,
        IMPORT_NOSCHEDULE,
        IMPORT_NOCHANNEL,
        IMPORT_XMLTVERR,
        IMPORT_NOMAPPING,
        IMPORT_NOCHANNELID,
        IMPORT_EMPTYSCHEDULE
    };
    cEPGMappings *maps;
    cEPGSource *source;
    cTEXTMappings *texts;
    cCharSetConv *conv;
    const char *epgfile;
    char *RemoveLastCharFromDescription(char *description);
    char *Add2Description(char *description, const char *Value);
    char *Add2Description(char *description, const char *Name, const char *Value);
    char *Add2Description(char *description, const char *Name, int Value);
    char *AddEOT2Description(char *description);
    struct split split(char *in, char delim);
    cEvent *GetEventBefore(cSchedule* schedule, time_t start);
    cEvent *SearchVDREvent(cSchedule* schedule, cXMLTVEvent *event);
    bool FetchXMLTVEvent(sqlite3_stmt *stmt, cXMLTVEvent *xevent);
    char *RemoveNonASCII(const char *src);
    cXMLTVEvent *PrepareAndReturn(sqlite3 *db, char *sql, sqlite3_stmt *stmt);
    bool WasChanged(cEvent *event);
public:
    cImport(cEPGSource *Source, cEPGMappings *Maps, cTEXTMappings *Texts);
    ~cImport();
    int Process(cEPGExecutor &myExecutor);
    bool PutEvent(cEPGSource *source, sqlite3 *db, cSchedule* schedule, cEvent *event,
                  cXMLTVEvent *xevent, int Flags, int Option=IMPORT_ALL);
    cXMLTVEvent *SearchXMLTVEvent(const char *EPGFile, const char *ChannelID, const cEvent *event);
    void UpdateXMLTVEvent(const char *EPGFile, sqlite3 *db, const char *Source, tEventID EventID,
                          tEventID EITEventID, const char *EITDescription=NULL);
    cXMLTVEvent *AddXMLTVEvent(const char *EPGFile, const char *ChannelID, const cEvent *Event,
                               const char *EITDescription);
};

#endif