summaryrefslogtreecommitdiff
path: root/dist/epgdata2xmltv/epgdata2xmltv.cpp
diff options
context:
space:
mode:
authorJochen Dolze <vdr@dolze.de>2012-05-07 18:33:49 +0200
committerJochen Dolze <vdr@dolze.de>2012-05-07 18:33:49 +0200
commit0ef63a4652cc361a0067acb02b778c456b7190be (patch)
tree20dd2308757449bc28c786e2e5d108d3be3cdcd6 /dist/epgdata2xmltv/epgdata2xmltv.cpp
parenta401b5286f128d99ef627dc3522545f60899b1b9 (diff)
downloadvdr-plugin-xmltv2vdr-0ef63a4652cc361a0067acb02b778c456b7190be.tar.gz
vdr-plugin-xmltv2vdr-0ef63a4652cc361a0067acb02b778c456b7190be.tar.bz2
Improved epgdata2xmltv, added audio/video/starrating/icon-tags
Diffstat (limited to 'dist/epgdata2xmltv/epgdata2xmltv.cpp')
-rw-r--r--dist/epgdata2xmltv/epgdata2xmltv.cpp56
1 files changed, 51 insertions, 5 deletions
diff --git a/dist/epgdata2xmltv/epgdata2xmltv.cpp b/dist/epgdata2xmltv/epgdata2xmltv.cpp
index b463274..bde5557 100644
--- a/dist/epgdata2xmltv/epgdata2xmltv.cpp
+++ b/dist/epgdata2xmltv/epgdata2xmltv.cpp
@@ -212,8 +212,8 @@ int cepgdata2xmltv::Fetch(const char *dest, const char *pin, int day)
}
if (ret==-63)
{
- esyslog("filesize exceeded, please report this!");
- return 1;
+ esyslog("filesize exceeded, please report this!");
+ return 1;
}
return 0;
}
@@ -247,7 +247,7 @@ int cepgdata2xmltv::Process(int argc, char *argv[])
}
char *line=NULL,*lptr=NULL;
size_t size;
- if (getline(&line,&size,f)==(ssize_t) -1)
+ if (getline(&line,&size,f)==(ssize_t) -1)
{
fclose(f);
esyslog("failed to read epgdata2xmltv config");
@@ -281,6 +281,8 @@ int cepgdata2xmltv::Process(int argc, char *argv[])
time_t t=time(NULL);
+ int carg=3;
+
for (int day=0; day<=daysinadvance; day++)
{
time_t td=t+(day*86400);
@@ -466,6 +468,50 @@ int cepgdata2xmltv::Process(int argc, char *argv[])
}
}
}
+
+ if (!strcmp(argv[3],"1")) {
+ carg++;
+ int entries=zip_get_num_files(zip);
+ for (int i=0; i<entries; i++)
+ {
+ const char *name=zip_get_name(zip,i,0);
+ if (strstr(name,"jpg")) {
+
+ char *destjpg;
+ if (asprintf(&destjpg,"/var/lib/epgsources/epgdata2xmltv-img/%s",name)!=-1) {
+ //FILE *f=fopen("/var/lib/epgsources/epgdata2xmltv","r");
+ struct stat statbuf;
+ if (stat(destjpg,&statbuf)==-1) {
+ struct zip_file *zfile=zip_fopen_index(zip,i,0);
+ if (zfile)
+ {
+ struct zip_stat sb;
+ memset(&sb,0,sizeof(sb));
+ if (zip_stat_index(zip,i,ZIP_FL_UNCHANGED,&sb)!=-1) {
+ if (sizeof(sb.size>4)) sb.size &= 0x00FFFFFF; // just to be sure
+ char *jpg=(char *) malloc(sb.size+1);
+ if (jpg) {
+ int size=zip_fread(zfile,jpg,sb.size);
+ if (size==sb.size) {
+ FILE *j=fopen(destjpg,"w+");
+ if (j) {
+ fwrite(jpg,size,1,j);
+ fclose(j);
+ }
+ }
+ }
+ }
+ zip_fclose(zfile);
+ }
+ }
+ free(destjpg);
+ }
+ }
+ }
+ } else {
+ if (!strcmp(argv[3],"0")) carg++;
+ }
+
zip_close(zip);
if (!ok)
{
@@ -545,7 +591,7 @@ int cepgdata2xmltv::Process(int argc, char *argv[])
if (sc) *sc=0;
bool use=false;
- for (int i=3; i<argc; i++)
+ for (int i=carg; i<argc; i++)
{
if (!strcasecmp(lptr,argv[i]))
{
@@ -561,7 +607,7 @@ int cepgdata2xmltv::Process(int argc, char *argv[])
printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
printf("<tv generator-info-name=\"epgdata2xmltv\">\n");
- for (int i=3; i<argc; i++)
+ for (int i=carg; i<argc; i++)
{
printf("<channel id=\"%s\">\n",argv[i]);
printf("<display-name lang=\"de\">%s</display-name>\n",argv[i]);