Help / Advice needed on creating a test channel

Good Evening

My name is Chris and I am new to Channels DVR, I have some basic technical skills and have in mind a bigger solution I would like to build, but will not overfill this topic.

I signed up for a 1 month membership to see if I can get this to work for what I have in mind.

I have decided to bring this down to the most basic by creating a 2 channel m3u and xml. I have python installed and using that to create a web server (testing only) to host the xml but no matter what I do I cannot get Channels DVR to read epg data from the xml only from the M3U. I will post some code but also try to ensure I don't violate any basic forum rules and will mask any personal info and for stream links just use XXXXX

I used a working Pluto m3u and xml as a template the history entry is from a iptv and the Pluto is public so I don t think I am violating any rules if I am I apologize

Here is my xml:

<tv>
    <channel id="History">
        <display-name>History CH</display-name>
        <desc>This is from the XMLTV file.</desc>
        <icon src="https://logo.iptveditor.com/history.png"/>
    </channel>
    <channel id="Trending-now">
        <display-name>Trending Now</display-name>
        <desc>This is from the XMLTV file.</desc>
        <icon src="https://images.pluto.tv/channels/673247127d5da5000817b4d6/colorLogoPNG_1732662634386.png"/>
    </channel>
    <programme start="20250116120000 -0500" stop="20250116123000 -0500" channel="cars-1">
        <title lang="en">Operation Repo</title>
        <desc lang="en">Matt and Froy navigate dangerous situations while repossessing cars.</desc>
        <category lang="en">Drama</category>
        <tvc-guide-title>Operation Repo</tvc-guide-title>
        <tvc-guide-description>Matt and Froy navigate dangerous situations while repossessing cars.</tvc-guide-description>
        <group-title>Drama</group-title>
    </programme>
    <programme start="20250116123000 -0500" stop="20250116130000 -0500" channel="trending-now">
        <title lang="en">Pluto TV Trending Now</title>
        <desc lang="en">The buzziest and most popular movies on Pluto TV.</desc>
        <category lang="en">Drama</category>
        <tvc-guide-title>Pluto TV Trending Now</tvc-guide-title>
        <tvc-guide-description>The buzziest and most popular movies on Pluto TV.</tvc-guide-description>
        <group-title>Drama</group-title>
    </programme>
</tv>

Here is my M3U:

#EXTM3U

#EXTINF:0 channel-id="History" channel-number="0" tvg-logo="https://logo.iptveditor.com/history.png" tvc-guide-title="Hist" tvc-guide-description="This is from the M3U" group-title="Drama", History
http://xxxxxxxxxxxx

#EXTINF:0 channel-id="Trending-now" channel-number="1" tvg-logo="https://images.pluto.tv/channels/673247127d5da5000817b4d6/colorLogoPNG_1732662634386.png" tvc-guide-art="https://images.pluto.tv/channels/673247127d5da5000817b4d6/featuredImage.jpg?fill=blur&fit=fill&fm=jpg&h=562&q=75&w=1000" tvc-guide-title="Pluto TV Trending Now" tvc-guide-description="The buzziest and most popular movies on Pluto TV can now be found in one place: Pluto TV Trending Now. From recent Hollywood hits to the titles everyone is talking about, there’s always a film you’ll be excited to see whenever you tune in." group-title="Movies", Pluto TV Trending Now
https://cfd-v4-service-channel-stitcher-use1-1.prd.pluto.tv/stitch/hls/channel/673247127d5da5000817b4d6/master.m3u8?advertisingId=&appName=web&appVersion=unknown&appStoreUrl=&architecture=&buildVersion=&clientTime=0&deviceDNT=0&deviceId=b20768aa-d431-11ef-8330-66e5e3415b5a&deviceMake=Chrome&deviceModel=web&deviceType=web&deviceVersion=unknown&includeExtendedEvents=false&sid=4b3dcf7f-f62c-4443-9bf5-59e12d8896a7&userId=&serverSideAds=true

Here is my Channels DVR log

2025/01/17 16:59:57.815928 [SYS] Starting Channels DVR v2024.12.10.0055 (windows-x86_64 pid:12876) in C:\ProgramData\ChannelsDVR\data
2025/01/17 16:59:57.904573 [SYS] Started HTTP Server on 8089
2025/01/17 16:59:58.329137 [M3U] Refreshed lineup for Plutoworking with 2 channels
2025/01/17 16:59:58.595133 [DBG] Scheduling wake timer for scheduled recording in 23h58m30s
2025/01/17 16:59:58.976470 [DVR] Recording engine started in Y:\Recordings
2025/01/17 16:59:59.318944 [SYS] Bonjour service running for dvr-plexserver.local. [192.168.50.35]
2025/01/17 17:00:01.055207 [SYS] Created database snapshot: backup-20250117.215959
2025/01/17 17:00:08.599288 [IDX] Pruned 0 expired airings from XMLTV-Plutoworking in 661.2µs.
2025/01/17 17:00:08.599288 [DBG] Scheduling wake timer for guide data in 16h26m21.4007114s
2025/01/17 17:00:14.030947 [M3U] Refreshed lineup for Plutoworking with 2 channels
2025/01/17 17:00:16.832061 [DVR] Fetched guide data for XMLTV-Plutoworking in 56ms
2025/01/17 17:00:16.858370 [DVR] Indexed 0 airings into XMLTV-Plutoworking (0 channels over 0s) + 0 skipped [12ms index]
2025/01/17 17:00:17.100888 [DVR] Indexed 2 channels (672 airings + 0 replaced) with placeholders [235ms index]
2025/01/17 17:00:17.100888 [IDX] Pruned 0 expired groups from XMLTV-Plutoworking in 0s.
2025/01/17 17:00:17.104375 [DBG] Scheduling wake timer for guide data in 16h6m12.895625s
2025/01/17 17:00:17.104375 [DBG] Scheduling wake timer for scheduled recording in 23h58m30s

I am also trying to get each channel to be recognized in the Apple TVOS app under Drama and Movies again that's a part of the bigger solution but cannot get that to work either. Again what you see here does work and populates the epg and time slots but it bis pulling from m3u the reason I know this is that "tvc-guide-description="This is from the M3U" and of course reversed that in the xml which is exactly what I see when I click on the channel (I know very simplistic but helps me to determine where the data is coming from)

If I reverse it by putting the epg based data in the xml and removing it from the m3u which you would think would work no data is displayed other than the channel id's and all time slots are blank effictively killing the dvr function, not to mention that the correct way is for the epg data to come from the xml not the m3u

Just so you know all the tags are there but when I post the page removes them not sure how to make them show correctly excuse my noob-ness

Any kind of help or advice would be so greatly appreciated!!

~Chris

Try matching the channel id= and the channel= in your xml
<channel id="Trending-now">
<programme start="20250116123000 -0500" stop="20250116130000 -0500" channel="Trending-now">
Pretty sure they have to be a case sensitive match and you have
<programme start="20250116123000 -0500" stop="20250116130000 -0500" channel="trending-now"> lower case t in programme channel vs. Upper Case T in channel id
Also need to use a current or future time for programme start= in order for it to appear in the guide.

Place it between two rows of three backtick marks

```
Post here
<tv>
</tv>
```
And it appears like this

Post here 
<tv>
</tv>

Hi

Thank you so much for the reply but the xml represents
2 separate channels 1 is “History” and the other is “Trending-now” I know silly names but again just trying to achieve a working template that I can use to build from

Btw

Thank you also for the advice on the backticks

If your xml doesn't contain current/future airings and the channel id and channel doesn't match, you're just spinning your wheels and airings won't appear in the guide.

Another tip since you're new to Channels DVR.
If you make changes to your channel lineup or guide data be sure to delete and recreate the guide database to reflect the changes.

You may also want to check the actual XMLTV DTD. Those tvc-guide-… and group-title entities are not part of the spec. Also, for live streams, the duration in the #EXTINF should be -1, not 0.

I would recommend using an existing python xmltv library like the one I used here:

Thank you again but I am confused unless I am missing something the xml and m3u both have channel id also the start and end times are both listed and that portion appears to work

It’s the epg data that I can’t seem to get to work unless it is in the m3u as I posted here. As soon as I put it in my xml and take it out of the m3u it doesn’t display

You also said delete and create a epg database do you mean delete the xml and create a new one?

I know that this may not be permitted to ask but is it possible (of course taking out the streaming url) a snippet of one channel from a m3u and the corresponding entry in the xml and post it?

I am just trying to get a working template

the channel ids don't match

Thank you to everyone I will try and go with all the helpful recommendations you have all posted and the errors you have pointed out it is so greatly appreciated!!!

You do that in the Channels DVR web admin UI under
Settings > Live TV & DVR > Guide Data > Maintenance :gear: dropdown

Thank you to all for all the helpful advice but in the end I decided my best way to accomplish my overerall goals was to go with IPTVEditor. Thru the advice you gave me (gave me some basic understanding of how this all works)

My only remaining goal is how to create a new category on the AppleTvos clent which is what my family and kids will be using. I need to be able to create a new category called "TV Shows" and "Live TV" or rename the existing categories which the defaults are:
All Channels
HD Channels
SD Channels|
Favourites
Movies
Sports
Drama
News
Kids

I think the solution would be to use the "Favorites" category and if I understand it correctly in combination with the Channel Collection feature I can create sub categories if you will. This would allow me to create a category within Favorites called TV Shows and within that I could create individual show folders such as "Big Bang Theory" etc etc. I could also create a folder under Favorites called "Live TV" and then place all my live channels under there.

If this has been answered previously please forgive I just dont really know or understand what it is I would be searching for. I did try setting up Stream Link and then enabling Playlist Manager but found it to be way too slow for me to do any type of editing.

If this question has been asked and answered if you could be so kind as to just give me the link to that topic. My feeling is that the categories in the Apple Tvos client are coded and cannot be altered if there is a way please let me know

Thank you in advance for the answer it is greatly appreciated!!

Channel Collections

Thank you both for the answer but I am confused, the channels collection in the way it is explained is just that for Channels which would be Live TV. When adding a custom source (as I did) which is done via a url (in my case that url is a middleman url pointing to the trimmed m3u) Channels Collection does not see the TV shows as they arent listed as actual channels. Of course I could modify the m3u but that would defeat the purpose of the middleman url and the automatic updating.

I know that by simply modifying the name of one of the existing categories on the trimmed m3u to just Movies that when I feed the modified url to channels dvr it automatically dumps all the movies to the category listed as Movies on the Apple TVOS (makes sense) but as there is no category listed as TV Shows I dont really have that option. My hope was that the channels collection could see everything but it only sees either actual channels or if I use virtual channels for instance it only see local data

Is there a way around this ?

M3U are used for live content. Channels doesn't other versions of M3U files.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.