morgan4d5c81

tvheadend xmltv url grabber: HTTP feed vs socket

Tvheadend can fill its programme grid from a listings file instead of from a tuner’s over-the-air EPG. The tvheadend xmltv url grabber is the path that downloads that file over HTTP and hands it to the XMLTV module. The file format is the XML listings schema (https://en.wikipedia.org/wiki/XMLTV). Each programme node carries start, stop, channel id, and title. Tvheadend maps those channel ids onto the services you already scanned.

Treat the grabber as a feed, not a player. Open Configuration, then Channel / EPG, then EPG Grabber Modules. Enable Internal XMLTV, or External XMLTV if you run a separate tv_grab_* binary. The development notes at https://docs.tvheadend.org/documentation/development/xmltv describe the socket the module listens on and the extra arguments the grabber process accepts. For a URL grabber you point the script at a stable XML endpoint, then let Tvheadend ingest the result on a timer.

Two ingest styles show up on home boxes. HTTP: a small grabber (tv_grab_url or a one-line curl wrapper) fetches the XML and writes it to stdout. Socket: the same XML is pushed into xmltv.sock so the Internal module can read it without spawning a network client inside Tvheadend. HTTP is easier to debug because you can wget the URL and inspect the file. Socket stays quiet once the path works. I keep HTTP until the channel-id map is clean, then switch.

Channel mapping wastes an evening if you skip it. The XMLTV channel id and the service name Tvheadend stored at scan time often differ. Open the Channel tab, pick each service, and set the EPG source to the matching XMLTV id. Re-run the grabber. If titles appear but times sit one hour off, the grabber is in UTC and your box is in local time, or the reverse. Fix the grabber extra args, not the channel names.

After the grid fills, check a couple of peak slots against a known lineup. I keep a bookmark to the Australia IPTV shortlist page for that lineup check, then I go back to the grabber log. If a channel stays blank, the XML never contained that id. Leave player settings alone. The guide layer is separate from playback.

Cron the grabber twice a day. A 06:00 run covers the morning grid. A 16:00 run picks up late schedule edits. Watch the Tvheadend log for xmltv parse lines. A 404 from the URL is a dead feed, not a Tvheadend bug. Swap the URL, re-run, and confirm the file still validates as XMLTV before you touch mapping again.

click here