Ev0
ViX Beta Tester
- Joined
- Jan 13, 2011
- Messages
- 1,089
- Reaction score
- 26
- Points
- 48
Or just add a service in the Zapper.
https://github.com/OpenViX/enigma2/...ystemPlugins/OpentvZapper/providers.py#L2-L29

The Epgrefresh plugin works but I would like to test the Zapper. I cant find the path to update the provider info. Any tips?


For UK Sky EPG I just have a daily timer that runs at 6am for 15 minutes to record the IEPG channel. The recording destination is the trash folder so that the recording is instantly deleted. This populates my EPG. I put my box into deep standby overnight so this timer wakes up the box and when the recording is finished goes into standby. A power timer then kicks in where if the box is in standby for 10 minutes it is switched to deep standby.
View attachment 62690View attachment 62691
You would have to modify the timer to record from the channel from which you obtain the epg

Why wouldn't you use the epgrefresh or Opentv Zapper plugins?
So I added this change, but unfortunately on the reload whether I use the epg patch or crossepgImportEPGv21 patch in epgcache to reload it does not work. The 1st method creates an epg.dat that epgcache refuses to read (message:-epg file has incorrect byte order.. dont read it) and the latter crashes badly in eEPGCache::crossepgImportEPGv21 trying to read the created db - it obviously passes the 1st checks but then trying to process the data it crashes.The only EPG database changes from V7 to V8 should be the LOAD string check change and also the 8bit to 16bit type change for the source type.
Im on the wine.. so drunken copy/paste assumptions below!
Why buf[0] = 0x01? NOWNEXT=1, would assume V8 is buf[0] = 0x00 buf[1] = 0x00 here?
https://github.com/E2OpenPlugins/e2...3546d/src/enigma2/crossepg_dbconverter.c#L256
const char *header = "UNFINISHED_V8";
https://github.com/E2OpenPlugins/e2...3546d/src/enigma2/crossepg_dbconverter.c#L337
fwrite ("ENIGMA_EPG_V8", 13, 1, fd);
https://github.com/E2OpenPlugins/e2.../src/enigma2/crossepg_dbconverter.c#L191-L210
Code:buf[0] = 0x01; buf[1] = 0x00; buf[2] = length ; buf[3] = (event_id >> 8) & 0xff; buf[4] = event_id & 0xff; buf[5] = (start_mjd >> 8) & 0xff; buf[6] = start_mjd & 0xff; buf[7] = toBCD (start_time.tm_hour); buf[8] = toBCD (start_time.tm_min); buf[9] = toBCD (start_time.tm_sec); buf[10] = toBCD (title->length / (60*60)); buf[11] = toBCD ((title->length / 60) % 60); buf[12] = toBCD (title->length % 60); for (i=0; i<crcs_count; i++) { memcpy (buf+13+(i*4), &crcs[i], 4); }

A download will happen 3 minutes after a reboot if a tuner is available. If not you can force it via the blue button menu. Apart from that a download happens every several hours depending on how you have it configured. It was a conscious decision not to have a specific download timer.I've just started using OpenTV epg as it's stated cross epg does not work in python3 but it seems to have very limited options as to when the downdload should start. I have a fixed 28.2 dish and a motorised and OpenTV usually just moves the dish to 28.2 to start the download but I have no control as to when this happens. Could a 'start time' be added and a 'once a day' option and maybe 'in standby only'?


Then use EPGRefresh. This was supposed to be super simple with zero setup required.I have 2 tuners (Solo2). I could do what you suggest but a lot of messing about if I want to record 2 things at once. Surely an option to download every day at 3am or something would solve the problem or as I said return to previous sat position?

I agree EPGRefesh is not the most intuitive. I wrote the OpenTvZapper because there were so many questions about setting up EPGRefresh to do this download.I have tried that in the past and can't remember exactly why but I thought it was rubbish to put it mildly lol. Might give it another go.
So I added this change, but unfortunately on the reload whether I use the epg patch or crossepgImportEPGv21 patch in epgcache to reload it does not work. The 1st method creates an epg.dat that epgcache refuses to read (message:-epg file has incorrect byte order.. dont read it) and the latter crashes badly in eEPGCache::crossepgImportEPGv21 trying to read the created db - it obviously passes the 1st checks but then trying to process the data it crashes.
Hard to tell whether the data is corrupt or the database format is incorrect or both.
diff --git a/src/enigma2/crossepg_dbconverter.c b/src/enigma2/crossepg_dbconverter.c
index 46c0f43..f54a18f 100644
--- a/src/enigma2/crossepg_dbconverter.c
+++ b/src/enigma2/crossepg_dbconverter.c
@@ -191,25 +191,26 @@ static void write_titles (epgdb_channel_t *channel, FILE *fd)
uint16_t event_id = events_count;
uint16_t start_mjd = title->mjd;
length = 10 + (crcs_count * 4);
- buf = _malloc (length + 2);
+ buf = _malloc (length + 3);
buf[0] = 0x01;
- buf[1] = length ;
- buf[2] = (event_id >> 8) & 0xff;
- buf[3] = event_id & 0xff;
- buf[4] = (start_mjd >> 8) & 0xff;
- buf[5] = start_mjd & 0xff;
- buf[6] = toBCD (start_time.tm_hour);
- buf[7] = toBCD (start_time.tm_min);
- buf[8] = toBCD (start_time.tm_sec);
- buf[9] = toBCD (title->length / (60*60));
- buf[10] = toBCD ((title->length / 60) % 60);
- buf[11] = toBCD (title->length % 60);
+ buf[1] = 0x00; //ENIGMA_EPG_V8
+ buf[2] = length;
+ buf[3] = (event_id >> 8) & 0xff;
+ buf[4] = event_id & 0xff;
+ buf[5] = (start_mjd >> 8) & 0xff;
+ buf[6] = start_mjd & 0xff;
+ buf[7] = toBCD (start_time.tm_hour);
+ buf[8] = toBCD (start_time.tm_min);
+ buf[9] = toBCD (start_time.tm_sec);
+ buf[10] = toBCD (title->length / (60*60));
+ buf[11] = toBCD ((title->length / 60) % 60);
+ buf[12] = toBCD (title->length % 60);
for (i=0; i<crcs_count; i++)
{
- memcpy (buf+12+(i*4), &crcs[i], 4);
+ memcpy (buf+13+(i*4), &crcs[i], 4);
}
- fwrite (buf, length+2, 1, fd);
+ fwrite (buf, length+3, 1, fd);
_free (buf);
title = title->next;
@@ -253,7 +254,7 @@ static void write_epgdat ()
unsigned int magic = 0x98765432;
fwrite (&magic, sizeof (int), 1, fd);
- const char *header = "UNFINISHED_V7";
+ const char *header = "UNFINISHED_V8";
fwrite (header, 13, 1, fd);
fwrite (&ccount, sizeof (int), 1, fd); // write the exact number at the end
@@ -334,7 +335,7 @@ static void write_epgdat ()
/* sync data on disk and mark epg.dat as a good epg */
fsync (fileno (fd));
fseek (fd, sizeof (int), SEEK_SET);
- fwrite ("ENIGMA_EPG_V7", 13, 1, fd);
+ fwrite ("ENIGMA_EPG_V8", 13, 1, fd);
write_end:
if (fd) fclose (fd);
events_count++;
uint16_t event_id = events_count;
uint16_t start_mjd = title->mjd;
length = 10 + (crcs_count * 4);
buf = _malloc (length + 3);
buf[0] = 0x01;
buf[1] = 0x00; //ENIGMA_EPG_V8
buf[2] = length;
buf[3] = (event_id >> 8) & 0xff;
buf[4] = event_id & 0xff;
buf[5] = (start_mjd >> 8) & 0xff;
buf[6] = start_mjd & 0xff;
buf[7] = toBCD (start_time.tm_hour);
buf[8] = toBCD (start_time.tm_min);
buf[9] = toBCD (start_time.tm_sec);
buf[10] = toBCD (title->length / (60*60));
buf[11] = toBCD ((title->length / 60) % 60);
buf[12] = toBCD (title->length % 60);
for (i=0; i<crcs_count; i++)
{
memcpy (buf+13+(i*4), &crcs[i], 4);
}
fwrite (buf, length+3, 1, fd);
_free (buf);
Having left it for longer full epg now available. Thanks Huevos.

I'm interested to know how you got this working.
I've just upgraded to OpenVix 6, not realising that CrossEPG would not work.
I've tried EPGRefresh, even leaving it on a 12519 channel overnight and all I ever get is full 7 day Freeview EPG and now/next for Sky.
Cheers
I'm interested to know how you got this working.
I've just upgraded to OpenVix 6, not realising that CrossEPG would not work.
I've tried EPGRefresh, even leaving it on a 12519 channel overnight and all I ever get is full 7 day Freeview EPG and now/next for Sky.
Cheers