EPG vide ou absent : diagnostic XMLTV et correspondances
Un guide vide n'est presque jamais une panne. C'est le plus souvent le résultat normal d'une association qui n'a pas eu lieu : votre playlist désigne des chaînes par un identifiant, le fichier de guide en désigne d'autres par le leur, et rien ne se rencontre. Aucune des deux parties n'est en erreur pour autant, ce qui explique qu'aucune ne signale quoi que ce soit. Reste à savoir laquelle des trois causes possibles est la vôtre — et une seule question suffit à commencer.
Réponse immédiate
Commencez par déterminer si le guide est vide partout ou seulement sur certaines chaînes. Cette distinction sépare deux diagnostics qui n'ont presque rien en commun.
- Vide partout : source non chargée, fichier ne contenant aucun programme, archive non décompressée, ou document mal formé.
- Vide sur certaines chaînes : identifiants qui ne correspondent pas, ou chaînes déclarées dans le fichier sans aucun programme associé.
- Grille décalée : ce n'est pas un guide vide mais un guide mal placé dans le temps — cause distincte, traitée plus bas.
Trois choses distinctes que l'on confond souvent
Le vocabulaire compte ici plus qu'ailleurs, parce que la cause du problème se situe exactement à la jonction de ces trois objets.
- La chaîne : une entrée de votre playlist, avec un nom lisible et une adresse de flux.
- L'identifiant : une étiquette technique, invisible à l'écran, qui sert uniquement à rapprocher une chaîne de sa grille. Côté playlist elle s'appelle
tvg-id; côté guide, c'est l'attributidd'un élément<channel>. - Le programme : un élément
<programme>du fichier XMLTV, avec une heure de début et la chaîne à laquelle il se rattache.
Un point mérite d'être souligné, parce qu'il surprend : tvg-id n'appartient pas au format XMLTV. C'est une convention côté playlist. Le format XMLTV, lui, ne connaît que l'attribut id de ses éléments <channel>. Les deux mondes ne communiquent que parce que quelqu'un a pris soin d'y écrire la même chaîne de caractères.
Ce que la définition XMLTV impose — et ce qu'elle n'impose pas
Trois règles de la définition officielle expliquent à elles seules la plupart des guides vides. Elles sont moins strictes qu'on ne le suppose, et c'est précisément le problème.
| Règle | Conséquence pratique |
|---|---|
| L'élément racine accepte des chaînes puis des programmes, les deux en nombre quelconque — zéro compris. | Un fichier ne contenant que des chaînes est parfaitement valide. Il se charge sans erreur et n'affiche aucun programme. |
| Un programme exige une heure de début et une chaîne ; l'heure de fin est facultative. | Une grille sans heures de fin reste conforme. Certaines applications l'affichent mal, sans que le fichier soit en cause. |
Les horodatages suivent la forme AAAAMMJJhhmmss ; le fuseau peut être ajouté, et en son absence le temps universel est supposé. | Un fichier écrit en heure locale sans décalage sera lu comme du temps universel : toute la grille se déplace d'un nombre constant d'heures. |
Vérifier la correspondance des identifiants
C'est la cause la plus fréquente d'un guide partiellement vide. La comparaison est textuelle et sensible à la casse : deux identifiants visuellement proches ne se rencontrent pas.
Playlist M3U
#EXTINF:-1 tvg-id="exemple.chaine.fr" tvg-name="Exemple",Exemple
http://example.com/stream/1
Fichier XMLTV
<channel id="exemple.chaine.fr">
<display-name>Exemple</display-name>
</channel>
<programme start="20260801200000 +0200" channel="exemple.chaine.fr">
<title>Titre du programme</title>
</programme>
La correspondance se joue ici :
tvg-id="exemple.chaine.fr" == <channel id="exemple.chaine.fr">
<programme channel="exemple.chaine.fr">
Ne correspondent pas :
"Exemple.Chaine.fr" casse différente
"exemple.chaine.fr " espace de fin
"exemplechainefr" ponctuation retiréeExemple fictif. Le domaine example.com est réservé à la documentation.
Quand la grille est décalée plutôt que vide
Un décalage constant — toutes les émissions avancées ou retardées du même nombre d'heures — ne relève pas des identifiants, qui fonctionnent puisque des titres s'affichent. Il relève des horodatages.
Dans l'exemple ci-dessus, +0200 est le décalage explicite. Lorsqu'il manque, l'horodatage est réputé exprimé en temps universel. Un fichier produit à 20 h heure de Paris et écrit 20260801200000 sans décalage sera donc lu comme 20 h en temps universel, soit 22 h chez vous en été.
L'écart observé est un indice utile : comparez-le au décalage entre votre fuseau et le temps universel. S'ils coïncident, la cause est trouvée, et elle se situe du côté de la source.
Recharger sans tout effacer d'abord
Le réflexe fréquent — supprimer la source, vider les données, tout reconfigurer — détruit l'information dont le diagnostic a besoin. Une progression plus économe :
- 1
Noter la configuration actuelle
Adresse de la source de guide, chaînes concernées, écart horaire éventuel. Sans cette note, un retour en arrière devient impossible.
- 2
Relever le tvg-id d'une chaîne sans guide
Une seule suffit. C'est la valeur que vous chercherez ensuite, telle quelle, dans le fichier XMLTV.
- 3
Analyser le fichier localement
L'analyseur indique le nombre de chaînes et de programmes, les identifiants en double, les programmes orphelins et les chaînes sans aucun programme.
- 4
Lancer un rechargement du guide et attendre la fin
Un rechargement interrompu produit exactement le même symptôme qu'une source absente. Laissez-le aboutir avant de conclure.
- 5
Vérifier une chaîne, pas la grille entière
Celle dont vous avez relevé l'identifiant. Un guide qui revient sur cette chaîne-là est un diagnostic ; un coup d'œil global n'en est pas un.
- 6
Ne supprimer les données qu'en dernier
Et seulement après avoir noté ce qui précède. Effacer avant de mesurer revient à recommencer à zéro sans avoir rien appris.
Les libellés exacts des menus varient d'une application à l'autre. Nous ne les nommons pas ici : aucune source officielle ne les documente, et les inventer vous ferait chercher une option qui n'existe pas.
Arbre de décision
Question 1 — Le guide est-il vide sur absolument toutes les chaînes ?
Un guide vide partout et un guide vide sur quelques chaînes n'ont presque jamais la même cause. La première question sépare les deux.
- Oui → passer à la question 2
- Non → passer à la issue 1
Question 2 — Le fichier contient-il des éléments <programme>, d'après l'analyseur XMLTV local ?
La DTD XMLTV autorise un document valide ne contenant que des <channel>. Un tel fichier se charge sans erreur et ne produit aucun programme.
- Oui → passer à la question 3
- Non → passer à la issue 2
Question 3 — Les valeurs tvg-id de votre playlist correspondent-elles, à l'identique, aux attributs id des éléments <channel> ?
La correspondance est textuelle et sensible à la casse. L'analyseur ne peut pas la vérifier : il ne voit que le fichier XMLTV, jamais votre playlist.
- Oui → passer à la issue 4
- Non → passer à la issue 3
Issue 1
Causes probables
- les chaînes concernées n'ont pas de tvg-id dans la playlist
- leur tvg-id ne correspond à aucun id déclaré dans le fichier XMLTV
- le fichier déclare bien ces chaînes mais ne contient aucun programme pour elles
Vérifications sans risque
- relever le tvg-id d'une chaîne sans guide et le chercher tel quel dans le fichier XMLTV
- utiliser l'analyseur pour lister les chaînes déclarées sans aucun programme
Issue 2
Causes probables
- la source ne fournit que la liste des chaînes, sans grille
- le téléchargement a été interrompu avant la partie <programme>
- le fichier fourni est une archive non décompressée
Vérifications sans risque
- vérifier la taille du fichier : une grille complète pèse nettement plus que quelques kilo-octets
- décompresser l'archive avant de la fournir à l'application ou à l'analyseur
Limite : Un fichier bien formé mais sans programme relève de la source qui le publie, pas de votre configuration.
Issue 3
Causes probables
- identifiants proches mais non identiques entre playlist et XMLTV
- différence de casse ou d'espacement dans l'identifiant
- playlist et guide provenant de deux sources sans convention commune
Vérifications sans risque
- comparer les deux identifiants caractère par caractère, casse comprise
- privilégier une playlist et un guide issus de la même source
Issue 4
Causes probables
- horodatages sans décalage horaire explicite, donc interprétés en temps universel
- grille correcte mais décalée d'un nombre fixe d'heures
- programmes présents mais hors de la fenêtre affichée par l'application
Vérifications sans risque
- vérifier avec l'analyseur si les horodatages portent un décalage
- comparer le décalage constaté à l'écart entre votre fuseau et le temps universel
Ce que l'analyseur local vérifie — et ce qu'il ne peut pas vérifier
L'analyseur XMLTV traite le fichier dans votre navigateur. Il contrôle que le document est bien formé, compte les éléments <channel> et <programme>, signale les attributs manquants, les identifiants en double, les programmes rattachés à une chaîne non déclarée, les chaînes sans aucun programme, les horodatages invalides, les décalages absents et les plages dont la fin précède le début.
Une limite qui change la lecture des résultats
L'analyseur n'a pas accès à votre playlist. Il ne peut donc pas confirmer que vos tvg-id correspondent aux identifiants du fichier. Un rapport sans anomalie ne signifie pas que le guide s'affichera : il signifie que le fichier est correct de son côté.
Il ne télécharge par ailleurs aucun guide distant, n'effectue aucun appel réseau et ne conserve rien après la fermeture de l'onglet. La taille est plafonnée à 8 Mo, et les guides compressés doivent être décompressés au préalable.
Selon l'application
Les causes ci-dessus sont indépendantes du lecteur : elles tiennent au fichier et aux identifiants. Ce qui varie d'une application à l'autre, c'est l'emplacement des réglages — que nous ne documentons pas sans source.
- TiviMate. L'éditeur annonce la prise en charge des guides XMLTV. Le diagnostic ci-dessus s'applique sans adaptation. Voir la fiche TiviMate.
- SmartOne IPTV. Le site officiel annonce la playlist M3U et un accès par identifiants ; il ne documente pas sa gestion du guide. Nous ne pouvons donc rien affirmer de spécifique.
- Autres lecteurs. La prise en charge du guide n'est pas systématique. Vérifiez d'abord sur le site de l'éditeur que la fonction existe, avant de chercher pourquoi elle ne fonctionne pas.
Informations à préparer avant de demander de l'aide
- l'application utilisée et l'appareil ;
- le type de source de guide : intégrée à l'accès, ou adresse séparée ;
- l'étendue du problème : toutes les chaînes ou seulement certaines ;
- le nombre approximatif de chaînes touchées ;
- l'écart horaire constaté, s'il y en a un ;
- le résultat de l'analyseur : nombre de chaînes, de programmes, anomalies signalées ;
- un
tvg-idconcerné et l'identifiant correspondant dans le fichier.
Questions fréquentes
Pourquoi certaines chaînes ont-elles un guide et d'autres non ?
Parce que l'association se fait chaîne par chaîne. Chaque entrée de votre playlist porte un tvg-id qui doit correspondre exactement à l'attribut id d'un élément channel du fichier XMLTV. Les chaînes dont l'identifiant ne correspond à rien restent vides, les autres s'affichent normalement — dans le même guide, au même moment.
Quelle différence entre EPG et XMLTV ?
EPG désigne la fonction : afficher une grille de programmes. XMLTV désigne un format de fichier précis, avec sa définition de type de document, capable de transporter cette grille. Votre application affiche un EPG ; elle le lit dans un fichier XMLTV.
Qu'est-ce que tvg-id exactement ?
Un attribut ajouté aux lignes #EXTINF d'une playlist M3U. Il ne fait pas partie de la définition XMLTV : c'est une convention du côté playlist, dont la seule fonction est de porter la valeur qui doit correspondre à l'attribut id d'un channel XMLTV. La comparaison est textuelle et sensible à la casse.
Pourquoi les horaires sont-ils décalés d'un nombre fixe d'heures ?
La définition XMLTV autorise un horodatage sans fuseau explicite, et précise qu'en l'absence de fuseau le temps universel est supposé. Un fichier produit en heure locale mais écrit sans décalage sera donc lu comme du temps universel, ce qui déplace toute la grille d'un nombre constant d'heures.
L'analyseur XMLTV envoie-t-il mon fichier quelque part ?
Non. L'analyse s'effectue dans votre navigateur, sans appel réseau, sans téléchargement de guide distant et sans conservation après la fermeture de l'onglet. C'est aussi pourquoi il ne voit jamais votre playlist et ne peut donc pas confirmer que les identifiants correspondent.
Sources et date de vérification
Dernière vérification : 1er août 2026. Prochaine revue : février 2027.
- Les règles de structure et d'horodatage citées proviennent de
xmltv.dtd, la définition de type de document du projet XMLTV (consultée le 1er août 2026) : déclarations de l'élément racine, de<channel>et de<programme>, et commentaire sur le format des dates. - Les contrôles et les limites attribués à l'analyseur sont ceux réellement implémentés dans cet outil, vérifiés dans le code de ce site.
Non vérifié : le comportement de chaque application face à un fichier partiel, les libellés de leurs menus, et les plafonds de taille qu'elles appliquent. Cette page repose sur la définition du format, non sur un test manuel dans une application. Aucune de ces vérifications ne garantit le retour du guide.