summaryrefslogtreecommitdiff
path: root/eptest.c
blob: 484270abdd9a9c26e152bde88957fa2e7e230fd6 (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
116
117
118
119
120
121
122
123
124
125
126

#include <stdio.h>
#include <errno.h>
#include <signal.h>

#include "lib/config.h"
#include "lib/common.h"
#include "series.h"

cDbTable* episodeDb = 0;
cDbConnection* connection = 0;
const char* logPrefix = "";

//***************************************************************************
// Init / Exit
//***************************************************************************

void initConnection()
{
   cDbConnection::init();

   cDbConnection::setEncoding("utf8");
   cDbConnection::setHost("localhost");

   cDbConnection::setPort(3306);
   cDbConnection::setName("epg2vdr");
   cDbConnection::setUser("epg2vdr");
   cDbConnection::setPass("epg");
   cDbConnection::setConfPath("/etc/epgd/");

   connection = new cDbConnection();
}

void exitConnection()
{
   cDbConnection::exit();

   if (connection)
      delete connection;
}

int init()
{
   episodeDb = new cDbTable(connection, "episodes");
   if (episodeDb->open() != success) return fail;

   return success;
}

int exit()
{
   delete episodeDb;
   return done;
}

//***************************************************************************
// Main
//***************************************************************************

int main(int argc, char** argv)
{
   const int max = 1000;

   FILE* fp;
   char line[max];
   char* filename = argv[1];

   cEpgConfig::logstdout = yes;
   cEpgConfig::loglevel = 0;

   // at first allpy locale !!

   setlocale(LC_CTYPE, "");

   // read dictionary

   if (dbDict.in("/etc/epgd/epg.dat") != success)
   {
      fprintf(stderr, "Error: Invalid dictionary configuration, aborting!");
      return 1;
   }

   initConnection();

   if (init() != success)
   {
      tell(0, "init of database failed");
      return 1;
   }

   if ((fp = fopen(filename, "r")) == 0)
   {
      fprintf(stderr, "Error: Can't open '%s', %s\n", filename, strerror(errno));
      exit (0);
   }

   cList<cLine>* result = new cList<cLine>;

   while (fgets(line, max, fp))
   {
      // fputs(line, stdout);
      line[strlen(line)-1] = 0;
      result->Add(new cLine(line));
   }

   fclose(fp);

   char* f = filename;

   if (strrchr(filename, '/'))
      f = strrchr(filename, '/') + 1;

   if (char* p = strstr(f, ".episodes"))
      *p = 0;

   cEpisodeFile file(f, "", result) ;

   // insert / update series into database ...

   episodeDb->getConnection()->startTransaction();
   file.storeToTable(episodeDb);
   episodeDb->getConnection()->commit();
   delete result;

   return 0;
}