XMLTV et guide des programmes

L'EPG — Electronic Program Guide — est la grille horaire affichée par le lecteur. XMLTV est le format de fichier le plus répandu pour la transporter. Une distinction utile : la playlist dit quoi lire, le fichier XMLTV dit ce qui passe et quand. Les deux sont indépendants et doivent être reliés explicitement.

Définition et fonctionnement

Un fichier XMLTV est un document XML contenant deux familles d'éléments : des <channel> qui déclarent les chaînes, et des <programme> qui décrivent chacun une diffusion avec un début, une fin et une chaîne de rattachement.

Le lecteur télécharge ce fichier, l'analyse, puis tente de faire correspondre chaque chaîne de la playlist avec une chaîne du guide. Cette correspondance est le point où presque tous les problèmes apparaissent.

Structure d'un fichier

<?xml version="1.0" encoding="UTF-8"?>
<tv>
  <channel id="exemple.chaine.1">
    <display-name>Chaîne Exemple 1</display-name>
  </channel>
  <programme start="20260801200000 +0200"
             stop="20260801214500 +0200"
             channel="exemple.chaine.1">
    <title lang="fr">Titre du programme</title>
    <desc lang="fr">Description fictive du programme.</desc>
  </programme>
</tv>
  • id sur <channel> — l'identifiant technique. C'est lui qui doit correspondre au tvg-id de la playlist.
  • channel sur <programme> — référence l'identifiant ci-dessus. S'il ne correspond à aucun <channel>, le programme est orphelin et ne s'affichera nulle part.
  • start et stop — horodatages au format AAAAMMJJHHMMSS suivis du décalage horaire.
  • lang — permet plusieurs versions linguistiques d'un même titre.

La question des fuseaux horaires

Le décalage indiqué après l'horodatage (+0200 dans l'exemple) est essentiel. Omis, il laisse le lecteur deviner, et le résultat classique est une grille décalée d'une ou deux heures.

En France métropolitaine, le décalage vaut +0100 en heure d'hiver et +0200 en heure d'été. Un fichier produit avec un décalage fixe toute l'année sera juste six mois sur douze — une cause fréquente de guide décalé qui « se répare tout seul » au changement d'heure.

Compatibilité

La plupart des lecteurs modernes acceptent XMLTV, souvent compressé au format .xml.gz pour réduire le poids. La profondeur du guide varie : certains n'affichent que le programme en cours et le suivant, d'autres plusieurs jours.

Un accès de type Xtream fournit généralement son propre guide, sans fichier à configurer. Renseigner en plus une source XMLTV externe peut alors créer des doublons.

Avantages et limites

Avantages

  • Format ouvert et documenté
  • Indépendant de la playlist
  • Multilingue par conception
  • Analysable hors ligne

Limites

  • Fichiers souvent très volumineux
  • Correspondance d'identifiants fragile
  • Analyse coûteuse sur petit appareil
  • Fuseaux mal renseignés fréquents

Erreurs fréquentes

  • Guide entièrement vide. Aucun tvg-id de la playlist ne correspond à un id du fichier XMLTV. C'est de loin la cause la plus courante.
  • Guide partiel. Seule une partie des chaînes est appariée ; les autres ont un identifiant différent ou absent.
  • Grille décalée. Fuseau horaire omis ou incorrect.
  • XML mal formé. Balise non fermée ou caractère spécial non échappé : le lecteur rejette alors le fichier entier.
  • Programmes orphelins. Ils référencent une chaîne non déclarée et alourdissent inutilement le fichier.
  • Doublons. Deux programmes se chevauchant sur la même chaîne produisent un affichage incohérent.

Notre analyseur XMLTV repère ces cas localement, sans envoyer le fichier.

Sécurité et confidentialité

Un fichier XMLTV ne contient normalement aucun identifiant : il décrit des programmes, pas des accès. En revanche, l'adresse depuis laquelle vous le téléchargez peut, elle, contenir des paramètres sensibles.

Masquez cette adresse avant de la partager, au même titre qu'une URL de playlist.

EPG et XMLTV ne sont pas la même chose

La confusion est si répandue qu'elle mérite d'être levée explicitement, parce qu'elle envoie chercher au mauvais endroit.

  • EPG désigne une fonction : afficher une grille de programmes. Ce n'est pas un format, il n'a ni structure ni marqueur propre, et il n'existe aucune « spécification EPG » à consulter.
  • XMLTV est un format de fichier, doté d'une définition de type de document publique que chacun peut lire. C'est le plus courant pour transporter une grille, mais ce n'est pas le seul concevable.
  • tvg-id n'appartient à aucun des deux : c'est une convention côté playlist M3U, absente de la définition XMLTV.

Cette page décrit XMLTV, qui dispose d'un document précis. Le reste — ce que fait votre application de ces données — varie et n'est pas documenté de façon vérifiable.

Vérifier localement

L'analyseur XMLTV contrôle le document dans votre navigateur : structure, nombre de chaînes et de programmes, identifiants en double, programmes orphelins, chaînes sans programme, horodatages et décalages.

Sa limite change la lecture des résultats : il n'a pas accès à votre playlist et ne peut donc pas confirmer que vos tvg-id correspondent. Un rapport sans anomalie signifie que le fichier est correct de son côté, pas que le guide s'affichera.

Si vous ne savez pas encore ce que vous avez entre les mains, le détecteur de format le dira. Si le guide reste vide, le diagnostic complet est sur EPG vide.

Questions fréquentes

Quelle différence entre XMLTV et EPG ?

EPG désigne une fonction — afficher une grille de programmes — et non un format. XMLTV est un format de fichier précis, avec une définition de type de document publique, capable de transporter cette grille. Votre application affiche un EPG ; elle le lit dans un fichier XMLTV. Chercher « la spécification EPG » ne mène nulle part, parce qu'elle n'existe pas.

À quoi sert exactement tvg-id ?

C'est un attribut des lignes #EXTINF d'une playlist M3U, dont la seule fonction est de porter la valeur qui doit correspondre à l'attribut id d'un élément channel du fichier XMLTV. Point important : tvg-id n'appartient pas à XMLTV. C'est une convention côté playlist, et les deux mondes ne se rencontrent que parce que la même chaîne de caractères y est écrite deux fois.

Un fichier XMLTV peut-il être valide sans aucun programme ?

Oui, et c'est une cause fréquente de guide vide. La définition XMLTV autorise un document ne contenant que des éléments channel. Un tel fichier se charge sans la moindre erreur et n'affiche aucun programme — rien ne signale le problème, ce qui explique que personne ne le trouve.

Pourquoi les horaires sont-ils décalés d'un nombre fixe d'heures ?

Parce que la définition XMLTV autorise un horodatage sans décalage horaire explicite, et précise qu'en son absence 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 envoie-t-il mon fichier quelque part ?

Non. L'analyse s'effectue dans votre navigateur, sans appel réseau 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 : il ne dispose que d'une moitié de la comparaison.

Sources et limites

Dernière vérification : 2 août 2026. Prochaine revue : février 2027.

  • La structure des éléments <tv>, <channel> et <programme>, le caractère facultatif de l'heure de fin et la règle du fuseau implicite proviennent de xmltv.dtd, la définition de type de document du projet XMLTV (consultée le 2 août 2026).
  • Les contrôles et limites attribués à l'analyseur sont ceux réellement implémentés dans ce dépôt.
  • Le statut de tvg-id — convention de playlist, absente de XMLTV — est établi par l'absence de cet attribut dans la définition citée.

Non vérifié : le comportement de chaque application face à un fichier partiel, les plafonds de taille qu'elles appliquent, et la fenêtre temporelle qu'elles affichent. Aucun test manuel dans une application n'a été effectué.

À lire ensuite