<?xml version="1.0" encoding="UTF-8"?>
<!--
  PhiPTV — XMLTV guide sample for service operators
  https://phiptv.com/providers

  HOW PHIPTV READS AN XMLTV FILE
   • Only <programme> elements are used. <channel> elements (display-name,
     icon, url) are ignored — channel names and logos come from the playlist.
   • Each <programme> needs start, stop and channel. The channel value must
     equal the channel's epg_channel_id (Xtream) or tvg-id (M3U) exactly.
   • Timestamps: YYYYMMDDHHMMSS, a space, then a ±HHMM offset. Without the
     offset (or without the space) the time is treated as UTC.
   • From each programme the FIRST <title>, <desc>, <category> and <icon>
     are used; lang attributes are not inspected. Put the language you want
     shown first.
   • Use &amp; &lt; &gt; &quot; &apos; for special characters. Numeric
     references such as &#233; are not decoded — write the character itself
     in UTF-8. CDATA sections are not unwrapped.
   • On import PhiPTV keeps programmes that end after 24 hours ago and start
     within the next 48 hours, for the channel ids in the customer's
     playlist. The guide shows 12 hours back and 24 hours ahead.
   • Refreshed every 12 hours by default (4, 6, 12 or 24 — the customer's
     choice), fetched WITHOUT a custom User-Agent: do not filter it.
   • Xtream catch-up links and guide reminders use each programme's start
     and stop, so keep them accurate.
   • The file may be gzip-compressed (.xml.gz) and may be large; there is no
     size cap. Serve it with gzip transport encoding if you can.
   • Xtream panels: serve this at /xmltv.php so it is found automatically.
     M3U playlists: publish the guide URL where customers can copy it — they
     paste it into the playlist's EPG field in PhiPTV.
-->
<tv generator-info-name="example-panel" source-info-name="Example Operator">

  <!-- <channel> blocks are optional for PhiPTV but keep other players happy. -->
  <channel id="news1.example">
    <display-name>News Channel 1</display-name>
    <icon src="https://cdn.example.com/logos/news1.png"/>
  </channel>
  <channel id="sport1.example">
    <display-name>Sport Channel 1 HD</display-name>
    <icon src="https://cdn.example.com/logos/sport1.png"/>
  </channel>
  <channel id="kids1.example">
    <display-name>Kids Channel 1</display-name>
    <icon src="https://cdn.example.com/logos/kids1.png"/>
  </channel>

  <programme start="20260901180000 +0100" stop="20260901183000 +0100" channel="news1.example">
    <title lang="en">Evening News</title>
    <desc lang="en">The day's headlines, weather and sport.</desc>
    <category lang="en">News</category>
    <icon src="https://cdn.example.com/stills/evening-news.jpg"/>
  </programme>

  <programme start="20260901183000 +0100" stop="20260901190000 +0100" channel="news1.example">
    <title lang="en">Regional Report</title>
    <desc lang="en">News from your region.</desc>
    <category lang="en">News</category>
  </programme>

  <programme start="20260901190000 +0100" stop="20260901213000 +0100" channel="sport1.example">
    <title lang="en">Live Football: Home Team v Away Team</title>
    <desc lang="en">Full match coverage with pre-match build-up.</desc>
    <category lang="en">Sport</category>
    <icon src="https://cdn.example.com/stills/football.jpg"/>
  </programme>

  <programme start="20260901160000 +0100" stop="20260901163000 +0100" channel="kids1.example">
    <title lang="en">Cartoon Time</title>
    <desc lang="en">Animated adventures for younger viewers.</desc>
    <category lang="en">Children</category>
  </programme>

</tv>
