Education·8 min

Av Shamir

Så här ser en XMLTV EPG-fil faktiskt ut (med exempel)

Det snabbaste sättet att slippa förvirras av programguider är att öppna en och läsa den. XMLTV är vanlig XML — utförlig, men inte komplicerad — och tio minuter med ett verkligt exempel sparar dig timmar av gissningar om varför guiden är tom.

I det här inlägget visas en verklig fil, den förklaras tagg för tagg och förståelsen används sedan för att förklara det vanligaste guideproblemet.

Den ärliga beskrivningen: Tuneline är en mediaspelare för innehåll som du tillhandahåller. Den visar en guide från en schemakälla som du anger. Den levereras utan guide och utan innehåll.

Strukturen i en mening

En XMLTV-fil innehåller exakt två sorters saker: <channel>-element som deklarerar vad som finns och <programme>-element som anger vad som visas när.

Det är allt. Resten är detaljer.

Ett minimalt, komplett exempel

<?xml version="1.0" encoding="UTF-8"?>
<tv generator-info-name="example-grabber">

  <channel id="example.news.us">
    <display-name>Example News</display-name>
    <icon src="http://logos.example/news.png" />
  </channel>

  <programme start="20260806180000 +0000"
             stop="20260806190000 +0000"
             channel="example.news.us">
    <title lang="en">Evening Report</title>
    <desc lang="en">The day's headlines and analysis.</desc>
    <category lang="en">News</category>
  </programme>

</tv>

Det där är en giltig och komplett guide som beskriver en källa och en timmes schema. En verklig fil består av samma två strukturer upprepade tusentals gånger.

Tagg för tagg

ElementVad den gör
<tv>Roten. Allt finns inuti den.
<channel id="…">Deklarerar en källa. id är den viktiga delen — det är kopplingsnyckeln.
<display-name>Det läsbara namnet som visas i guiden.
<icon src="…">URL till logotypen.
<programme start stop channel>Ett schemalagt objekt. channel måste matcha en <channel id>.
<title>Programnamn.
<desc>Sammanfattning.
<category>Genre. Det är detta som föräldrakontroller och filter använder.

Tidsstämpelformatet förvirrar alla

start="20260806180000 +0000"

Läs det som YYYYMMDDHHMMSS följt av en UTC-förskjutning. Det innebär alltså 6 augusti 2026, 18:00:00 UTC.

Förskjutningen är det viktiga. Om en fil utelämnar den eller anger en som inte stämmer med verkligheten läses guiden in utan problem, men allt visas vid fel tid. Det är ett helt annat problem än en tom guide och åtgärdas i tidszoninställningarna, inte genom att byta källa. (Åtgärda felaktiga tider.)

Kopplingen: Därför är guiden tom trots att filen lästes in

Här är det viktigt att förstå en sak, eftersom den förklarar de flesta klagomål på guider.

Din spellista och din guide är två separata filer som måste kopplas ihop. Kopplingen görs med ett ID.

I M3U:

#EXTINF:-1 tvg-id="example.news.us" tvg-logo="…",Example News
http://example.com/news.m3u8

I XMLTV:

<channel id="example.news.us">

tvg-id måste vara samma som channel id. Exakt — inklusive skiftläge och skiljetecken.

När de matchar visas schemat för posten. När de inte gör det får du en post med en tom guide, och det var inget fel på filen. (Den andra sidan av M3U.)

Det är därför ”Jag lade till en guide och inget hände” oftast varken beror på spellistan eller guiden. Det beror på att ingen fick dem att använda samma identifierare. En guide som täcker en annan region än din spellista kan läsa in tusentals program som inte matchar någon av dina poster.

Lägga till en guidekälla

Så kontrollerar du en guidekälla innan du litar på den

Innan du skyller på spelaren bör du titta på filen.

1. Är den komprimerad? Många källor levereras som .xml.gz. Det är normalt — de flesta spelare hanterar det. Om du granskar filen manuellt ska du packa upp den först.

2. Innehåller den faktiskt dina källor? Sök i filen efter något av dina tvg-id-värden. Om det inte finns där täcker guiden inte din lista, och ingen inställning kan ändra det.

curl -s "https://example.com/guide.xml.gz" | gunzip | grep -c "<channel "
curl -s "https://example.com/guide.xml.gz" | gunzip | grep "example.news.us"

Den första kontrollen visar hur många källor den deklarerar. Den andra visar om din källa finns bland dem.

3. Täcker den ett användbart tidsintervall? Kontrollera de tidigaste och senaste start-värdena. Vissa kostnadsfria guider innehåller bara 24 timmar, andra två veckor. En guide som slutade uppdateras i går ser likadan ut som en trasig guide.

4. Hur stor är den? Fullständiga nationella guider kan bli tiotals eller hundratals megabyte okomprimerade. Det är normalt och är anledningen till att den första inläsningen kan ta flera minuter på en TV-box. (Kostnadsfria XMLTV-källor.)

Vanliga fel i filerna

Guidefiler från verkligheten går sönder på förutsägbara sätt:

  • En HTML-felsida som sparats som .xml. Öppna den. Om den första raden är <!DOCTYPE html> misslyckades hämtningen och felet sparades.
  • Ohanterade et-tecken. Ett ensamt & i stället för &amp; i en titel är ogiltig XML och kan avbryta hela tolkningen. En enda felaktig titel och guiden försvinner helt.
  • Dubbla <channel id>-poster. Två deklarationer av samma ID; beteendet beror på spelaren.
  • Program utan matchande kanal. Schemaposter vars attribut channel inte matchar någon deklarerad <channel id>. De tas bort utan meddelande.
  • Tider där stop saknas. Vissa hämtare utelämnar dem och förväntar sig att starttiden för nästa program ska ange sluttiden. Vissa spelare drar inte den slutsatsen, vilket lämnar luckor.

Kan jag skriva eller redigera en själv?

Ja. Det är XML, så vilken textredigerare som helst fungerar, och för en liten, handplockad konfiguration är det fullt praktiskt.

Användbara ändringar:

  • Ändra ett <channel id> så att det matchar det tvg-id som din spellista redan använder — ofta enklare än att redigera hundratals rader i spellistan.
  • Banta den. Ta bort de <channel>- och <programme>-element du inte behöver. En mindre fil läses in mycket snabbare på enheter med begränsade resurser.
  • Korrigera förskjutningen om alla tider är fel på samma sätt.

Två regler: spara som UTF-8 och se till att filen är välformad — ett enda obehörigt & kan göra hela guiden obrukbar.

Vanliga frågor

Hur ser en EPG-fil ut?

Vanlig XML med två sorters element: <channel> som deklarerar varje källa och <programme> som anger starttid, sluttid och titel för varje schemalagt objekt.

Vilket format har XMLTV?

XML, som vanligtvis tillhandahålls som .xml eller gzip-komprimerad .xml.gz. Tidsstämplar är YYYYMMDDHHMMSS plus en UTC-förskjutning.

Varför läses min guide in men visar ingenting?

Nästan alltid för att värdena i din spellistas tvg-id inte matchar guidens <channel id>-värden. Filen lästes in utan problem, men det fanns inget att koppla den till.

Hur kontrollerar jag om en guide täcker mina källor?

Hämta den, packa upp den vid behov och sök efter någon av dina tvg-id-strängar. Om den inte finns i filen beskriver guiden inte din lista.

Varför är min guidefil så stor?

En nationell guide med två veckors schema för hundratals källor är verkligen tiotals eller hundratals megabyte stor. Det är förväntat och är anledningen till att den första inläsningen går långsamt.

Kan jag redigera en XMLTV-fil?

Ja, i valfri textredigerare. Spara som UTF-8 och se till att XML-filen är välformad — ett enda obehörigt & kan förstöra hela tolkningen.

Sammanfattning

  • XMLTV innehåller exakt två saker: <channel>-deklarationer och <programme>-poster.
  • Tidsstämplar är YYYYMMDDHHMMSS + UTC-förskjutning — en felaktig förskjutning innebär rätt data men fel tider.
  • Guiden kopplas till din spellista genom tvg-id = channel id, exakt. En felaktig matchning är den vanligaste orsaken till en tom guide.
  • Kontrollera innan du skyller på något: packa upp filen, sök efter ditt ID och kontrollera datumintervallet.
  • Ett enda obehörigt & kan göra en hel guidefil ogiltig.

Har du en spellista och en guide-URL? Ladda ner Tuneline — lägg till båda så fylls rutnätet i. Kostnadsfritt och utan annonser.

— Shamir

Dela artikeln

The fast fix

Get Tuneline free

A clean, no-account media player for macOS, Windows, Linux, Android, TV, and iOS. Bring your own playlist.

Download free

The cross-platform media player behind these answers — new platforms, sync updates, the honest build story. No spam, unsubscribe anytime.

Läs den här artikeln på ett annat språk

Tuneline är en mediespelarapplikation. Den tillhandahåller, lagrar eller distribuerar inget innehåll. Du tar med din egen spellista, precis som med VLC.