Rob Davis wrote: > Pjotr Kourzanov wrote: >> Luca Olivetti wrote: >>> En/na Klaus Schmidinger ha escrit: >>>> Udo Richter wrote: >>>>> Pjotr Kourzanov wrote: >>>>>> I am experiencing VDR errors when loading EPG via SVDRP. If the EPG >>>>>> data to >>> ... >>>> >>>> I have recently sent the attached patch to Thomas Koch >>>> <tom@xxxxxxxxxx>. >>>> It dramatically speeds up getting EPG information from VDR. >>> >>> I think the OP problem is the reverse: getting EPG data into vdr, not >>> out of it. >>> >>> Bye >> >> Indeed, I was referring to the problem of loading the data to VDR. >> Tweaking the watchdog >> timer looks like a dirty workaround to me - the value depending on >> amount of EPG data to >> be loaded divided by the speed at which this data could be transferred >> to VDR (do we assume >> loopback access, or ethernet? maybe wireless or WAN/VPN access?). >> >> I have neither investigated the problem deeper yet (just found a way >> to split the EPG data into >> parts), nor looked in the source code. Is it so difficult to convince >> the watchdog that while SVDR thread is busy it is actually doing >> useful work? > > Pjotr, > > How did you split the information up? See script attached (given stdin, creates epg.[0-9]* files of ~3megs, without overwriting). > > I have a 17MB xmltv file which I would like to upload into VDR. > > Is it possible to adjust xmltv2vdr.pl to split the xmltv epg into parts > too? > Maybe. I found xmltv2vdr just too slow - it took ~9 hours to output 17MB of VDR epg.data. The XML was btw. ~54MB. > My python knowledge is limited, but I am willing to have a stab at it. > xmltv2vdr.pl is perl:-( But if you know AWK, I've posted my version of xmltv2epg on this list that takes ~40 minutes on the same data:-) Also, it takes extra info like credits into VDR's epg... Regards, Pjotr -------------- next part -------------- #!/usr/bin/awk -f BEGIN { max=3*1024*1024 if (!base) base="epg." n=1 advance() size=0 } /^[CEeTSDX]/ { size+=length } { print > base n } /^c/ { if (size>max) { advance() size=0 } } func advance() { while (!system("stat " base n " >/dev/null 2>&1")) n++ }