IPappTV

Troubleshooting

EPG downloaded, but channels show no programmes

Why an XMLTV file can hold a hundred thousand programmes and none of them reach your channels - and how to fix it on the playlist side

Symptom: the channel list header shows "EPG: 0 programmes" or a very small number for a large list, and there is no current programme under the channel names. The download finished without an error. Shortest fix: a guide from the same provider as the list - then the channel identifiers in both files are consistent.

1. Two files that have to match

The M3U playlist and the XMLTV guide are two separate files. For a programme to land under the right channel, something has to link them. The app tries three rules in turn, and one hit is enough:

  1. Identifier: the channel's tvg-id in the playlist equals the channel id in XMLTV. Case does not matter.
  2. Name: the channel name from the playlist equals the name from the guide, case-insensitively.
  3. Simplified name: HD, FHD, UHD, SD, 4K, PL and every character other than letters and digits are stripped from both names. "TVP 1 HD" and "tvp1" are then the same.

When no rule hits, the channel stays without a schedule - even if its programmes are in the XMLTV file. The app does not guess further by name similarity - a wrong match (one station's schedule under another) is worse than none.

2. What the app imports and what it skips

XMLTV files from large providers hold thousands of channels, of which a few hundred are in your list. The app stores only the programmes of channels it matched to the playlist. The rest of the file is skipped. That keeps the import to seconds rather than minutes and stops the database growing to hundreds of megabytes on a box with 4 GB of storage.

Side effect: the "EPG: N programmes" figure in the header is about matching, not about the file. Zero with a large file means "nothing matched", not "the file is empty".

3. The safeguard against wiping history

The guide accumulates history day by day (for catch-up). On every import the app cleans out channels that are no longer in the playlist. If matching failed on a single refresh - because the provider briefly changed identifiers or served a different file - the cleanup would wipe all the collected history.

That is why cleanup is suspended when fewer than half of the channels already in the database were matched. The app treats such a large drop as a matching error, not a real list change. The history stays; the next successful import puts things back to normal. This threshold was added after a report where one refresh matched 1 channel out of 300 and deleted the rest - and the only rescue was a manual guide reset.

4. How to find what does not match

  1. Open the playlist in a text editor and look at a few #EXTINF lines. Is there a tvg-id? What form does it take - "BBC1.uk", "bbc1", "12345"?
  2. Open the XMLTV file (after unpacking .gz) and find the <channel id="…"> entries. Are the identifiers in the same convention? If the list says "BBC1.uk" and the guide says "bbc1.bbc.co.uk", nothing will hit.
  3. Compare the names. Without identifiers, matching goes by name. "BBC One HD" hits "BBC One", but "BBC One (backup)" does not - after stripping characters the bracket remains as "backup".
  4. A guide from the list's provider. Panels that generate the playlist also generate XMLTV with the same identifiers. If you use a guide from elsewhere, that is the most common cause of zero matches.

5. Several guide sources

The url-tvg entry in the list header can hold several addresses separated by commas. The app takes only the first. If your channels are described only in the second file, enter its address manually in the list's EPG field - it takes precedence over the header.

6. When matching worked and then stopped

  • The provider changed identifiers. Refresh list and EPG manually (channel list menu). If it is fine after the refresh, it was a temporary inconsistency between the files.
  • There is a schedule, but the wrong one. Two channels in the list share a tvg-id or the same simplified name (e.g. "Sky One" and "Sky One HD" are the same after simplification - intended; "BBC One" and "BBC Two" are not). Fix the identifiers in the list at the source.
  • The database looks corrupted - Settings → "Reset the guide". This deletes the collected history; it rebuilds one day at a time.

7. When it does not help

Write to kontakt@ipapptv.com with two snippets: two or three #EXTINF lines from the playlist and two or three <channel> entries from the XMLTV for the same stations. No addresses with a username and password. From that it is immediately clear which rule should have fired.

If you have a computer with ADB, the log adb logcat -s IPappTV-EPG during a guide refresh shows the number of playlist keys, the number of channels in the database, and whether cleanup was suspended.