summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dist/epgdata2xmltv/epgdata2xmltv.dist71
-rw-r--r--dist/tvm2xmltv/tvm2xmltv.dist292
-rw-r--r--import.cpp102
-rw-r--r--import.h3
-rw-r--r--parse.cpp79
-rw-r--r--parse.h2
-rw-r--r--xmltv2vdr.cpp13
7 files changed, 359 insertions, 203 deletions
diff --git a/dist/epgdata2xmltv/epgdata2xmltv.dist b/dist/epgdata2xmltv/epgdata2xmltv.dist
index b6c3e6a..c4180dc 100644
--- a/dist/epgdata2xmltv/epgdata2xmltv.dist
+++ b/dist/epgdata2xmltv/epgdata2xmltv.dist
@@ -8,45 +8,47 @@ animax.de;539
anixe.de;537
ard.de;71
arte.de;58
-atv2.de;761
-atvplus.at;115
+atv2.at;761
+atv.at;115
axntv.de;468
bayern3.de;51
+bbc-entertainment.tv;662
bbc-world-news.uk;67
beate-uhse-tv.de;123
bibeltv.de;280
bloombergtv.de;127
+bongusto.tv;457
boomerang-tv.de;493
br-alpha.de;104
+canal+.fr;573
canale-5.it;297
cartoon-network.de;531
classica.de;133
cnbc-paneurope.eu;538
cnn.de;69
-das-vierte.de;486
discovery-channel.de;138
discovery-hd.de;490
disney-channel.de;139
disney-cinemagic.de;630
disney-cinemagic-hd.de;631
+disney-junior.de;460
disney-xd.de;657
dmax.de;507
-dsf.de;64
+dw-europe.eu;300
e-entertainment.de;758
-einsextra.de;100
einsfestival.de;146
-einsmuxx.de;475
-espn-america.eu;591
-espn-classic-sport.com;473
+einsplus.de;475
euronews.de;68
eurosport.de;65
-eurosport-2.de;504
+eurosport2.de;504
extreme-sports-channel.de;469
fashiontv.fr;455
-fox-channel.de;565
+fox.de;565
france-2.fr;149
france-24.fr;542
france-3.fr;150
+france-4.fr;574
+france-5.fr;547
franken-fernsehen.de;151
goldstar-tv.de;152
gotv.at;391
@@ -64,9 +66,12 @@ kabel1.de;44
kabel-eins-classics.de;492
kika.de;57
kinowelt-tv.de;450
+ktv.de;481
lust-pur.de;634
mdr.de;48
+mezzo.fr;396
mgm.de;1196
+motors.tv;461
motorvision-tv.de;627
mtv.de;70
mtv-brand-new.de;738
@@ -74,21 +79,27 @@ mtv-dance.uk;465
mtv-hits.uk;466
mtv-live-hd.pl;601
n24.de;175
-national-geographic.de;453
-national-geographic-hd.de;624
-national-geographic-wild.de;626
+nautical-channel.com;463
+natgeo.de;453
+natgeo-hd.de;624
+natgeo-wild.de;626
ndr.de;47
+nickcomedy.ch;608
nickcomedy.de;589
ntv.de;66
oberpfalz-tv.de;185
orf1.at;54
orf2.at;55
orf3.at;757
-orf-sport-plus.de;759
+orf-sport-plus.at;759
phoenix.de;194
planet.de;195
-playhouse-disney.de;460
+playboy.tv;467
+pro7-fun.de;765
+pro7-fun-hd.de;10099
+pro7-maxx.de;783
prosieben.de;40
+puls4tv.at;402
qvc.de;208
rai-1.it;209
rai-2.it;210
@@ -99,35 +110,39 @@ rhein-neckar-fernsehen.de;211
romance-tv.de;552
rsi-la1.it;255
rsi-la2.it;256
-rtl.de;38
rtl2.de;41
rtl-crime.de;527
+rtl.de;38
rtl-living.de;528
rtl-nitro.de;763
rtl-passion.de;529
rts-deux.fr;258
rts-un.fr;257
-sat.1-emotions.de;766
sat1.de;39
-sat1-comedy.de;491
+sat1-emotions.de;766
+sat1-emotions-hd.de;10100
+sat1-gold.de;774
schweiz-5.de;299
-sci-fi.de;472
-servus-tv.de;660
+servus-tv.at;660
sf1.ch;59
sf2.ch;60
sf-info.de;231
silverline-tv.de;451
sixx.de;694
+sixx.at;769
sky-3d.de;701
sky-action.de;613
+sky-action-hd.de;10058
sky-atlantic-hd.de;767
-sky-cinema.de;610
+sky-bundesliga.de;623
sky-cinema-1.de;611
sky-cinema-24.de;612
+sky-cinema.de;610
+sky-cinema-hd.de;629
sky-cinema-hits.de;618
+sky-cinema-hits-hd.de;10059
sky-comedy.de;617
sky-emotion.de;616
-sky-fussball-bundesliga.de;623
sky-krimi.de;615
sky-nostalgie.de;614
sky-select.de;628
@@ -140,24 +155,31 @@ sky-sport-hd-extra.de;743
sky-sport-news-hd.de;762
spiegel-geschichte.de;625
spiegel-tv-wissen.de;756
-sport1plus.de;698
+sport1.de;64
+sport1+.de;698
+sport1-us-hd.de;784
sportdigitaltv.de;564
spreekanal.de;236
star-tv.de;232
superrtl.de;43
swr.de;50
+syfy.de;472
+tagesschau24.de;100
tele5.de;277
+telebärn.ch;247
telebielingue.ch;248
+telezüri.ch;250
tf1.fr;252
the-biography-channel.de;536
timm.de;588
tnt-film.de;633
tnt-serie.de;590
trt-turk.tr;254
+trace.tv;464
tv-5.fr;260
tv-berlin.de;1192
tv-muenchen.de;262
-tw-1.de;265
+universal-channel-hd.de;10139
vh1-classic.eu;296
viva.de;266
vox.de;42
@@ -166,4 +188,3 @@ zdf.de;37
zdfinfo.de;276
zdfkultur.de;275
zdfneo.de;659
-zdf-theaterkanal.de;275
diff --git a/dist/tvm2xmltv/tvm2xmltv.dist b/dist/tvm2xmltv/tvm2xmltv.dist
index 2cfa8bd..af4a866 100644
--- a/dist/tvm2xmltv/tvm2xmltv.dist
+++ b/dist/tvm2xmltv/tvm2xmltv.dist
@@ -1,151 +1,143 @@
-pipe;00:00;0;1
+pipe;06:00;0;1
1;15
-13th-street.de;501
-3sat.de;118
-animal-planet.de;568
-animax.de;629
-anixe.de;666
-ard.de;001
-arte.de;010
-atvplus.at;031
-automotorsportchannel.de;704
-axntv.de;576
-bayern3.de;018
-bbcworld.uk;581
-beate-uhse-tv.de;544
-bibeltv.de;579
-bloombergtv.de;687
-bongusto.de;597
-boomerang-tv.de;612
-br-alpha.de;057
-cartoon-network.de;627
-classica.de;508
-cnn.de;126
-das-vierte.de;067
-deluxe-music.de;660
-discovery-channel.de;510
-discovery-hd.de;614
-disney-channel.de;511
-disney-cinemagic.de;683
-disney-junior.de;583
-disney-xd.de;689
-dk1.dk;091
-dk2.dk;092
-dmax.de;554
-e-entertainment-television.de;606
-einsfestival.de;512
-einsplus.de;513
-espn-america.com;585
-espn-classic-sport.com;584
-euronews.de;013
-eurosport-2.de;630
-eurosport.de;107
-extreme-sports-channel.de;594
-fox-channel.de;663
-goldstar-tv.de;516
-gotv.at;703
-gute-laune-tv.de;601
-heimatkanal.de;517
-hessen3.de;026
-hh1.de;054
-history-channel.de;589
-hse24.de;189
-imusic1.de;716
-junior.de;518
-kabel1.de;008
-kabel-eins-classics.de;610
-kanal-7-int.tr;634
-kika.de;063
-kinowelt-tv.de;577
-k-tv.at;590
-mdr.de;032
-mezzotv.fr;633
-mgm.de;565
-motors-tv.fr;598
-motorvision-tv.de;699
-mtv-base.de;632
-mtv-dance.uk;592
-mtv.de;109
-mtv-hits.uk;588
-mtv-music.de;637
-muenchen-2.de;620
-n24.de;065
-national-geographic.de;593
-national-geographic-wild.de;682
-ndr.de;019
-nickcomedy.de;190:625
-nick-jr.de;715
-nicktoons.de;662
-nl1.nl;088
-nl2.nl;089
-nl3.nl;090
-ntv.de;007
-orf1.at;014
-orf2.at;015
-phoenix.de;206
-pipe;00:00;0;1
-planet.de;521
-prosieben.de;006
-prosieben-maxx.de;735
-puls4.at;708
-qvc.de;136
-rbb.de;027
-romance-tv.de;664
-rtl2.de;009
-rtl-crime.de;621
-rtl.de;004
-rtl-living.de;622
-rtl-nitro.de;727
-rtl-passion.de;623
-rtlshop.de;574
-sailing-channel.it;600
-sat1.de;005
-sat1-emotions.de;726
-sat1-gold.de;729
-sci-fi.de;541
-servustv.at;719
-sf1.ch;024
-sf2.ch;039
-silverline-tv.de;578
-sixx.de;696
-sky-action.de;670
-sky-atlantic-hd.de;728
-sky-cinema-1.de;674
-sky-cinema-24.de;668
-sky-cinema.de;667
-sky-cinema-hits.de;669
-sky-comedy.de;672
-sky-emotion.de;671
-sky-fussball-bundesliga.de;677
-sky-krimi.de;673
-sky-nostalgie.de;675
-sky-sport-1.de;678
-sky-sport-2.de;679
-sky-sport-austria.at;676
-sky-sport-news-hd.de;733
-sonnenklartv.de;697
-spiegel-geschichte.de;684
-sport1.de;012
-sport1plus.de;734
-sportdigitaltv.de;692
-superrtl.de;179
-swr.de;029
-tagesschau24.de;551
-tele5.de;105
-the-biography-channel.de;626
-tnt-film.de;628
-tnt-serie.de;685
-tracetv.fr;602
-tv5.de;133
-tv-berlin.de;038
-tv-muenchen.de;044
-universal-channel.de;736
-vh1-classic.uk;591
-viva.de;121
-vox.de;011
-wdr.de;028
-wetter-fernsehen.de;595
-zdf.de;002
-zdfinfo.de;570
-zdfkultur.de;725
-zdfneo.de;553
+13th-street.de;88
+3sat.de;12
+animal-planet.de;158
+animax.de;222
+anixe.de;269
+ard.de;1
+arte.de;38
+atvplus.at;129
+automotorsportchannel.de;305
+axntv.de;177
+bayern3.de;5
+bbcworld.uk;61
+beate-uhse-tv.de;127
+bibeltv.de;156
+bloombergtv.de;125
+blue-movie-1.de;
+blue-movie-2.de;
+blue-movie-3.de;
+bongusto.de;
+boomerang-tv.de;211
+br-alpha.de;56
+cartoon-network.de;219
+classica.de;95
+cnn.de;42
+das-vierte.de;
+deluxe-music.de;238
+discovery-channel.de;199
+discovery-hd.de;199
+disney-channel.de;111
+disney-cinemagic.de;279
+disney-junior.de;171
+dk1.dk;18
+dk2.dk;19
+dmax.de;52
+e-entertainment-television.de;201
+einsextra.de;128
+einsfestival.de;122
+einsplus.de;123
+espn-america.com;
+espn-classic-sport.com;
+euronews.de;48
+eurosport-2.de;239
+eurosport.de;30
+extreme-sports-channel.de;153
+fox-channel.de;264
+goldstar-tv.de;113
+gotv.at;301
+gute-laune-tv.de;205
+heimatkanal.de;89
+hessen3.de;7
+hh1.de;
+history-channel.de;181
+hse24.de;53
+imusic1.de;257
+junior.de;96
+k-tv.at;183
+kabel-eins-classics.de;209
+kabel1.de;39
+kanal-7-int.tr;247
+kika.de;76
+kinowelt-tv.de;182
+mdr.de;41
+mezzotv.fr;221
+mgm.de;151
+motors-tv.fr;184
+mtv-base.de;240
+mtv-dance.uk;189
+mtv-hits.uk;174
+mtv.de;32
+muenchen-2.de;
+n24.de;31
+national-geographic.de;190
+national-geographic-wild.de;284
+ndr.de;6
+nickcomedy.de;14
+nicktoons.de;227
+nl1.nl;21
+nl2.nl;22
+nl3.nl;23
+ntv.de;47
+orf1.at;16
+orf2.at;17
+phoenix.de;60
+planet.de;98
+pulse4.at;314
+prosieben.de;11
+qvc.de;54
+rbb.de;57
+rtl.de;3
+rtl2.de;43
+rtl-crime.de;214
+rtl-living.de;215
+rtl-nitro.de;427
+rtl-passion.de;216
+rtlshop.de;
+sailing-channel.it;
+sat1-emotions.de;428
+sat1-gold.de;430
+sat1.de;4
+sci-fi.de;154
+servustv.at;316
+sf1.ch;24
+sf2.ch;35
+silverline-tv.de;185
+sixx.de;318
+sky-action.de;274
+sky-atlantic-hd.de;429
+sky-cinema-1.de;271
+sky-cinema-24.de;272
+sky-cinema-hits.de;273
+sky-cinema.de;270
+sky-comedy.de;276
+sky-emotion.de;275
+sky-fussball-bundesliga.de;288
+sky-krimi.de;278
+sky-nostalgie.de;277
+sky-sport-1.de;289
+sky-sport-2.de;290
+sky-sport-austria.at;286
+sonnenklartv.de;259
+spiegel-geschichte.de;285
+sport1.de;45
+sportdigitaltv.de;263
+superrtl.de;13
+swr.de;8
+tele5.de;55
+tnt-serie.de;267
+tracetv.fr;206
+turner-classic-movies.de;220
+tv5.de;33
+tv-berlin.de;
+tv-muenchen.de;
+vh1-classic.uk;187
+viva.de;73
+vox.de;46
+wdr.de;9
+wetter-fernsehen.de;188
+zdf.de;2
+zdfinfo.de;137
+zdfkultur.de;378
+zdfneo.de;294
diff --git a/import.cpp b/import.cpp
index 80cf67e..a34d921 100644
--- a/import.cpp
+++ b/import.cpp
@@ -1246,15 +1246,15 @@ cXMLTVEvent *cImport::PrepareAndReturn(sqlite3 **db, char *sql)
return xevent;
}
-void cImport::AddShortTextFromEITDescription(cXMLTVEvent *xEvent, const char *EITDescription)
+bool cImport::AddShortTextFromEITDescription(cXMLTVEvent *xEvent, const char *EITDescription)
{
- if (!g->EPDir()) return;
+ if (!g->EPDir()) return false;
int season,episode,episodeoverall;
char *epshorttext=NULL;
if (!cParse::FetchSeasonEpisode(cep2ascii,cutf2ascii,g->EPDir(),xEvent->Title(),
NULL,EITDescription,
season,episode,episodeoverall,&epshorttext,
- NULL)) return;
+ NULL)) return false;
if (epshorttext)
{
@@ -1264,6 +1264,7 @@ void cImport::AddShortTextFromEITDescription(cXMLTVEvent *xEvent, const char *EI
xEvent->SetSeason(season);
xEvent->SetEpisode(episode);
xEvent->SetEpisodeOverall(episodeoverall);
+ return true;
}
cXMLTVEvent *cImport::AddXMLTVEvent(cEPGSource *Source,sqlite3 *Db, const char *ChannelID, const cEvent *Event,
@@ -1370,6 +1371,101 @@ cXMLTVEvent *cImport::AddXMLTVEvent(cEPGSource *Source,sqlite3 *Db, const char *
return xevent;
}
+bool cImport::UpdateXMLTVEvent(cEPGSource *Source, sqlite3 *Db, cXMLTVEvent *xEvent)
+{
+ if (!Source) return false;
+ if (!Db) return false;
+ if (!xEvent) return false;
+
+ if (!Begin(Source,Db)) return false;
+
+ char *sql=NULL;
+
+ if (xEvent->ShortText())
+ {
+ char *shortdesc=strdup(xEvent->ShortText());
+ if (!shortdesc)
+ {
+ esyslogs(Source,"out of memory");
+ return false;
+ }
+
+ string ed=shortdesc;
+
+ int reps;
+ reps=pcrecpp::RE("'").GlobalReplace("''",&ed);
+ if (reps)
+ {
+ shortdesc=(char *) realloc(shortdesc,ed.size()+1);
+ strcpy(shortdesc,ed.c_str());
+ }
+
+ if (asprintf(&sql,"update epg set season=%li, episode=%li, episodeoverall=%li, shorttext='%s' "
+ " where eventid=%li and src='%s' and channelid='%s'", (long int) xEvent->Season(),
+ (long int) xEvent->Episode(), (long int) xEvent->EpisodeOverall() ,shortdesc,
+ (long int) xEvent->EventID(),Source->Name(),xEvent->ChannelID())==-1)
+ {
+ free(shortdesc);
+ esyslogs(Source,"out of memory");
+ return false;
+ }
+ free(shortdesc);
+ }
+ else
+ {
+ if (asprintf(&sql,"update epg set season=%li, episode=%li, episodeoverall=%li "
+ " where eventid=%li and src='%s' and channelid='%s'", (long int) xEvent->Season(),
+ (long int) xEvent->Episode(), (long int) xEvent->EpisodeOverall(),
+ (long int) xEvent->EventID(),Source->Name(),xEvent->ChannelID())==-1)
+ {
+ esyslogs(Source,"out of memory");
+ return false;
+ }
+ }
+
+ if (Source->Trace())
+ {
+ char buf[80]="";
+ if (xEvent->ShortText())
+ {
+ strcat(buf,"shorttext");
+ if (xEvent->Season() || xEvent->Episode() || xEvent->EpisodeOverall()) strcat(buf,"/");
+ }
+ if (xEvent->Season())
+ {
+ strcat(buf,"season");
+ if (xEvent->Episode() || xEvent->EpisodeOverall()) strcat(buf,"/");
+ }
+ if (xEvent->Episode())
+ {
+ strcat(buf,"episode");
+ if (xEvent->EpisodeOverall()) strcat(buf,"/");
+ }
+ if (xEvent->EpisodeOverall())
+ {
+ strcat(buf,"episodeoverall");
+ }
+
+ if (xEvent->EITEventID())
+ {
+ tsyslogs(Source,"{%5i} updating %s of '%s' in db",xEvent->EITEventID(),buf,
+ xEvent->Title());
+ }
+ }
+
+ char *errmsg;
+ if (sqlite3_exec(Db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
+ {
+ esyslogs(Source,"%s -> %s",sql,errmsg);
+ free(sql);
+ sqlite3_free(errmsg);
+ return false;
+ }
+
+ free(sql);
+ return true;
+}
+
bool cImport::UpdateXMLTVEvent(cEPGSource *Source, sqlite3 *Db, const cEvent *Event, cXMLTVEvent *xEvent,
const char *Description)
{
diff --git a/import.h b/import.h
index 8b18e3d..6743310 100644
--- a/import.h
+++ b/import.h
@@ -69,12 +69,13 @@ public:
bool DBExists();
bool PutEvent(cEPGSource *Source, sqlite3 *Db, cSchedule* Schedule, cEvent *Event,
cXMLTVEvent *xEvent, int Flags);
+ bool UpdateXMLTVEvent(cEPGSource *Source, sqlite3 *Db, cXMLTVEvent *xEvent);
bool UpdateXMLTVEvent(cEPGSource *Source, sqlite3 *Db, const cEvent *Event, cXMLTVEvent *xEvent,
const char *Description);
cXMLTVEvent *SearchXMLTVEvent(sqlite3 **Db, const char *ChannelID, const cEvent *Event);
cXMLTVEvent *AddXMLTVEvent(cEPGSource *Source, sqlite3 *Db, const char *ChannelID,
const cEvent *Event, const char *EITDescription, bool UseEPText);
- void AddShortTextFromEITDescription(cXMLTVEvent *xEvent, const char *EITDescription);
+ bool AddShortTextFromEITDescription(cXMLTVEvent *xEvent, const char *EITDescription);
bool WasChanged(cEvent *Event);
};
diff --git a/parse.cpp b/parse.cpp
index 8d80f84..945efa9 100644
--- a/parse.cpp
+++ b/parse.cpp
@@ -97,7 +97,7 @@ time_t cParse::ConvertXMLTVTime2UnixTime(char *xmltvtime)
return ret;
}
-void cParse::RemoveNonAlphaNumeric(char *String)
+void cParse::RemoveNonAlphaNumeric(char *String, bool InDescription)
{
if (!String) return;
@@ -115,6 +115,27 @@ void cParse::RemoveNonAlphaNumeric(char *String)
p=strstr(String," Folge ");
if (p) *p=0;
+ if (InDescription)
+ {
+ // remove leading numbers (inkl. roman numerals)
+ len=strlen(String);
+ p=String;
+ while (*p)
+ {
+ // 0x30 - 0x39
+ if (((*p>=0x30) && (*p<=0x39)) || (*p=='I') || (*p=='V') || (*p=='X') || (*p=='/'))
+ {
+ memmove(p,p+1,len);
+ len--;
+ continue;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
// remove non alphanumeric characters
len=strlen(String);
p=String;
@@ -141,24 +162,6 @@ void cParse::RemoveNonAlphaNumeric(char *String)
pos++;
}
- // remove leading numbers (inkl. roman numerals)
- len=strlen(String);
- p=String;
- while (*p)
- {
- // 0x30 - 0x39
- if (((*p>=0x30) && (*p<=0x39)) || *p=='I' || *p=='V')
- {
- memmove(p,p+1,len);
- len--;
- continue;
- }
- else
- {
- break;
- }
- }
-
return;
}
@@ -254,10 +257,26 @@ bool cParse::FetchSeasonEpisode(iconv_t cEP2ASCII, iconv_t cUTF2ASCII, const cha
free(epfile);
return false;
}
+ int f_season=0,f_episode=0;
size_t slen;
if (ShortText)
{
slen=strlen(ShortText);
+ if ((slen==6) && (ShortText[0]=='S') && (isdigit(ShortText[1])!=0) &&
+ (isdigit(ShortText[2])!=0) && (ShortText[3]=='E') && (isdigit(ShortText[4])!=0) &&
+ (isdigit(ShortText[5])!=0))
+ {
+ // special SxxExx-Format
+ char buf[5];
+ buf[0]=ShortText[1];
+ buf[1]=ShortText[2];
+ buf[2]=0;
+ f_season=atoi(buf);
+ buf[0]=ShortText[4];
+ buf[1]=ShortText[5];
+ buf[2]=0;
+ f_episode=atoi(buf);
+ }
}
else
{
@@ -291,11 +310,15 @@ bool cParse::FetchSeasonEpisode(iconv_t cEP2ASCII, iconv_t cUTF2ASCII, const cha
return false;
}
- RemoveNonAlphaNumeric(dshorttext);
+ RemoveNonAlphaNumeric(dshorttext,!ShortText);
if (!strlen(dshorttext))
{
strn0cpy(dshorttext,ShortText ? ShortText : Description,slen); // ok lets try with the original text
}
+ if (!ShortText)
+ {
+ tsyslog("trying to find shorttext for '%s', with '%s'",Title,dshorttext);
+ }
char *line=NULL;
size_t length;
@@ -351,6 +374,18 @@ bool cParse::FetchSeasonEpisode(iconv_t cEP2ASCII, iconv_t cUTF2ASCII, const cha
found=true;
}
}
+
+ if ((f_season==Season) && (f_episode==Episode))
+ {
+ if (EPShortText)
+ {
+ if (*EPShortText) free(*EPShortText);
+ *EPShortText=strdup(epshorttext);
+ }
+ found=true;
+ break;
+ }
+
}
else
{
@@ -367,6 +402,10 @@ bool cParse::FetchSeasonEpisode(iconv_t cEP2ASCII, iconv_t cUTF2ASCII, const cha
{
isyslog("failed to find '%s' for '%s' in eplists",ShortText,Title);
}
+ if ((found) && (!ShortText))
+ {
+ tsyslog("found shorttext '%s' from description of '%s'",*EPShortText,Title);
+ }
if (line) free(line);
fclose(f);
diff --git a/parse.h b/parse.h
index fbd65c3..76849d3 100644
--- a/parse.h
+++ b/parse.h
@@ -45,7 +45,7 @@ public:
cParse(cEPGSource *Source, cGlobals *Global);
~cParse();
int Process(cEPGExecutor &myExecutor, char *buffer, int bufsize);
- static void RemoveNonAlphaNumeric(char *String);
+ static void RemoveNonAlphaNumeric(char *String, bool InDescription=false);
static bool FetchSeasonEpisode(iconv_t cEP2ASCII, iconv_t cUTF2ASCII, const char *EPDir,
const char *Title, const char *ShortText, const char *Description,
int &Season, int &Episode, int &EpisodeOverall, char **EPShortText,
diff --git a/xmltv2vdr.cpp b/xmltv2vdr.cpp
index b9eb456..1a7c2c6 100644
--- a/xmltv2vdr.cpp
+++ b/xmltv2vdr.cpp
@@ -834,7 +834,10 @@ void cEPGTimer::Action()
if ((strlen(event->ShortText())+strlen(event->Description()))==0) continue; // no text -> no episode
}
}
- if (maps->ProcessChannel(event->ChannelID())) continue; // already processed by xmltv2vdr
+ if (maps->ProcessChannel(event->ChannelID()))
+ {
+ if (event->ShortText()) continue; // already processed by xmltv2vdr
+ }
const char *ChannelID=strdup(*event->ChannelID().ToString());
cXMLTVEvent *xevent=import.SearchXMLTVEvent(&db,ChannelID,event);
@@ -855,7 +858,10 @@ void cEPGTimer::Action()
{
if (!event->ShortText() && event->Description())
{
- import.AddShortTextFromEITDescription(xevent,event->Description());
+ if (import.AddShortTextFromEITDescription(xevent,event->Description()))
+ {
+ import.UpdateXMLTVEvent(source,db,xevent);
+ }
}
}
free((void*)ChannelID);
@@ -1011,7 +1017,8 @@ cPluginXmltv2vdr::cPluginXmltv2vdr(void) : housekeeping(&g),epgexecutor(g.EPGSou
// VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT!
logfile=NULL;
last_maintime_t=0;
- last_timer_t=last_epcheck_t=last_housetime_t=time(NULL); // start this threads later!
+ last_epcheck_t=last_housetime_t=time(NULL); // start this threads later!
+ last_timer_t=last_epcheck_t-(time_t) 540; // check timers in 60 seconds
g.SetEPAll(0);
g.TEXTMappings()->Add(new cTEXTMapping("country",tr("country")));
g.TEXTMappings()->Add(new cTEXTMapping("year",tr("year")));