There are several possibilities, you could use External:XMLTV - when you enable this, copy the path shown in Path:
Then write a script something like this:
#!/bin/bash
URL='http://url.from.your.epg.provider'
TVHSOCK=/path/to/tvh/socket
wget -O - $URL | socat - UNIX-CONNECT:$TVHSOCK
TVHSOCK is the path copied from Path: above.
You may need to install wget and/or socat if your system doesn't already have them.
Note that the very first time, you may need to run it twice to actually get the EPG data. If you run it with the log viewer open [that's at the bottom of the screen - click the button that looks like two '^'], you should see TVH handling the EPG grab.
After running it the 1st time, look in Configuration - Channel/EPG - Channels and check to see that all your channels have an EPG source set.
For any that don't, look in EPG Grabber Channels, find matches for the missing ones, and set the channel.
Once you have EPG sources set for your channels, run the script again and the EPG should populate.
Once you have it working, you can add it to a crontab so it runs regularly.