FastChannels - FAST Channels aggregator/manager

That would be great! One thing I don't like is that every time channels get re-numbered, CDVR doesn't just re-number for future programming, it also re-numbers everything you have previously recorded. That drives me nuts! Depending on how many changes one makes to their sources, what was originally recorded on a Classic TV series channel could end up looking like it was recorded from a PBS channel.
Example: I know for certain that this episode of All in the Family did not air on Pioneer PBS:

If the reassignment of numbers could be limited to everything from that point forward, and leave my old recording metadata alone, perhaps I could be happy.

Here's the way my brain looks at this numbering thing. Now that I have my Tubi sourced Cinevault channels locked in at 11020 to 11022, If I assign my LG Channels to the 21000 range, the Cinevault channels should be 21020 to 21022. Nice and "matchy".

I don't know if I'm rigid enough to run with this kind of numbering scheme. But, I present it as an example of how far one can go with channel organization. There are some folks out there who need everything to line up perfectly.

Having the ability to assign and lock in channel numbers is amazing, and very helpful for loved ones like @speedingcheetah 's Mom.

Is anyone getting an issues with trying to get Pluto channels to work? I have tired with Fast Channels and the normal Pluto for channels by kineticman. I get the falling errors?

2026-04-15 23:44:22,780 WARNING urllib3.connectionpool: Retrying (Retry(total=2, connect=3, read=1, redirect=None, status=2)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='siloh-ns1.plutotv.net', port=443): Read timed out. (read timeout=10)")': /635_pluto/clip/639000492515090013e9afe6_The_Amazing_Race_Its_Always_The_Quiet_Ones_S27E9/720p/20221206_185401/hls/2553388-end/hls_600-00001.ts
2026-04-15 23:44:34,817 WARNING urllib3.connectionpool: Retrying (Retry(total=1, connect=3, read=0, redirect=None, status=2)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='siloh-ns1.plutotv.net', port=443): Read timed out. (read timeout=10)")': /635_pluto/clip/639000492515090013e9afe6_The_Amazing_Race_Its_Always_The_Quiet_Ones_S27E9/720p/20221206_185401/hls/2553388-end/hls_600-00001.ts

I just spot-checked a couple channels on Pluto, CNN Headlines and Comedy Central. No playback problems from my FastChannels source.

Well at that point, they are duplicate channels, so I just get rid of the dupes. However, I do do something similar with the previously mentioned remote off-air channels. I have my local off-air channels that I pick up using and HDHomeRun. I then have a CDVR server at a relative's house in another state that I also pick-up off-air channels using an HDHomeRun. I stream the remote off-air channels to my local CDVR server where I can watch them. The problem though was that some of the channel numbers were the same, so it caused all types of conflicts. What I end up doing is using Dispatcharr which allows me to renumber the channels and create a new M3U list with the new channel numbers. I then point CDVR to that M3U list. I remap the remote off-air channels to the 200 range, so channel 2.1 becomes 202.1, channel 6.1 becomes 206.1, and so on. That way I still can tell what the remote off-air channel number is, but have it be unique from my local off-air channel.

If CDVR allowed locking custom channel numbers, this process would be a lot easier...

Is this during an audit, or play?

I have seen some streaming providers go down from time to time. So, I try to build a certain amount of redundancy into my system. Some channels which I rarely watch or record from are fine with a single source. Other channels which have more valuable content are worth doubling up on. If my primary source crashes a recording or live tune, CDVR will fail over to a back-up source.

I also recognize that running all of my free providers solely through FastChannels fails my redundancy criteria. So, I plan to keep my separate sources containers updated and ready to fire up, just in case...

I did both and audit and a play and both failed. I believe that log was during the audit. When I try to play directly from Channels I get this:

026/04/15 21:30:34.758467 [HLS] Starting live stream for channel 9000 from 192.168.50.43 (bitrate=3321kbps)
2026/04/15 21:30:44.773269 [ERR] Probe failed for live stream after 10.0148021s and 0 bytes
2026/04/15 21:30:57.579301 [HLS] Couldn't generate stream playlist for ch9000-dANY-ip192.168.50.43: HLS: 901 Tuner Unreachable: Could not tune to ch9000 after 12s
2026/04/15 21:30:57.579301 [HLS] Stopping transcoder session ch9000-dANY-ip192.168.50.43 (out=0s finished=false first_seq=0 last_seq=-1)
2026/04/15 21:30:57.579804 [TNR] Closed connection to M3U-PlutoTV for ch9000 Pluto TV Trending Now
2026/04/15 21:30:57.581303 [SNR] Buffer statistics for ch9000 Pluto TV Trending Now: buf=18%,0%-100% drop=18%
2026/04/15 21:30:57.581303 [SNR] Streaming statistics for ch9000 Pluto TV Trending Now: timeouts=0 segment_timeouts=0 playlist_timeouts=0
2026/04/15 21:30:59.880815 [HLS] Stopping transcoder session ch9000-dANY-ip192.168.50.43 (out=0s finished=false first_seq=0 last_seq=-1)
2026/04/15 21:31:02.786547 [M3U] stream timestamps: pluto-pluto-tv-trending-now: start_at=2026-04-15T21:30:57-04:00 end_at=2026-04-15T21:31:21-04:00 live_delay=15s
2026/04/15 21:31:02.786547 [TNR] Opened connection to M3U-PlutoTV for ch9000 Pluto TV Trending Now
2026/04/15 21:31:02.786547 [TNR] Closed connection to M3U-PlutoTV for ch9000 Pluto TV Trending Now

I do something very similar with my paid DTV channels. I have my redundant TVE, ADBTuner, and Roku Tuner Bridge channels numbered this way.

Has Pluto ever worked for you? I’m not having any issues myself.

Username/password for Pluto correct under source settings? Once confirmed, humor me and do a refresh on Pluto too then try.

Pluto has always worked. However..... I just figured out what is causing the issues. It appears that on my Asus Router GT-BE19000AI with Advertisement Blocking turned on the router appears to be very aggressive, as it is blocking siloh-ns1.plutotv.net, production-cmp.isgprivacy.cbsi.com and another domain from working. When I turn it off, Pluto TV comes right back up. There is no way for me to allow these domains. So I will have to turn that off for now and filter it all through NextDNS. I'll have to report it ASUS and wait for a fix for them to make it less aggressive in what it is blocking.

1 Like

Wow that seems like a lot of work! :smiley: I don't record anything off any of the streaming channels so redundancy for us isn't necessary. We just watch it live. The stuff we do record is usually from off-air channels. Funny enough we do have redundancy there with the remote off-air channels (which I record at the remote location). With the streaming services though, if one of them does go down, we notice because one of the channels we usually watch live isn't available. At that point I then take a look to see why its down and fix it.

I have everything set up this morning. Most sources are working properly but running into an issue with plex. Default set up: Plex **No config. I deleted and waited a few minutes to add. restarted container and retrieve latest and I'm getting 0 channels .

2026-04-16 16:51:58,131 ERROR app.scrapers.plex: [plex] live-tv RSC returned 500
2026-04-16 16:51:58,131 INFO app.worker: [plex] channel fetch complete
2026-04-16 16:51:58,132 INFO app.worker: [plex] EPG fetch starting
2026-04-16 16:51:58,142 INFO app.scrapers.plex: [plex] grid fetch starting: channels=0 windows=3 span_hours=24
2026-04-16 16:52:09,632 INFO gunicorn.access: XXX.XX.X.X "POST /api/sources/9/config HTTP/1.1" 200 38 0s
2026-04-16 16:52:13,072 INFO app.scrapers.plex: [plex] grid window 1/3 fetched in 14.9s: metadata=5438 cumulative_programs=0 seen_airings=0
2026-04-16 16:52:14,043 INFO gunicorn.access: XXX.XX.X.X "POST /api/sources/7/config HTTP/1.1" 200 36 0s
2026-04-16 16:52:26,505 INFO app.scrapers.plex: [plex] grid window 2/3 fetched in 13.4s: metadata=5442 cumulative_programs=0 seen_airings=0
2026-04-16 16:52:42,994 INFO app.scrapers.plex: [plex] grid window 3/3 fetched in 16.5s: metadata=5441 cumulative_programs=0 seen_airings=0
2026-04-16 16:52:42,994 INFO app.scrapers.plex: [plex] 0 EPG entries fetched from grid API in 44.9s
2026-04-16 16:52:43,006 INFO app.worker: [plex] EPG fetch complete

oh wow - plex changed something in their API. I have a fix. Will push out fix ASAP.

everyone will need to upgrade if you want to continue using plex!

2 Likes

v3.0.4 release notes:

IMPORTANT - YOU MUST UPGRADE TO FIX PLEX SCRAPER DUE TO API CHANGE

Features

  • Channel descriptions — channels now carry a description field; shown in the preview modal and emitted in XMLTV output. Coverage added across Stirr, Samsung, LocalNow, FreeLiveSports, Pluto, Tubi, Xumo, Distro, and Plex
  • Stream audit: Recheck All (incl. previously dead) — new option in the audit modal to re-audit channels that were previously marked dead, allowing them to come back if they're live again
  • Stream audit report — dead, DRM, and error channels now included in the audit summary report
  • Channel admin feed filter — defaults to active + enabled channels when a feed filter is selected

Bug Fixes

  • Fix: Gracenote M3U channel numbering — when a feed has a starting channel number configured, the Gracenote and standard sources no longer overlap; gracenote block starts cleanly after the standard block
  • Fix: Plex channels — Plex broke today due to a change on Plex's end; updated the scraper to handle it
  • A few scraper reliability and logging fixes

I had a quick fix out on 3.0.3 but had a hotfix for Pluto images.. 3.0.4 released

4 Likes

Man, these providers sure keep you jumping to keep up with them.

It has occurred to me that, on the Channels tab, it would be nice if you could click on the "dup" tag and see all the channels in the dup group. (I just coined that term.)

as opposed to just using the filter box?

Thanks old man :grin:

Just a quick thankyou for Fast Channels. It's wonderful. Finally had sometime to play around and get use to it. Thanks for this.

I don't understand how the Duplicates filter can be used to achieve what I'm looking for.

My scenario is that I'm looking at a filtered list. I see a channel with the Dup tag and want to see all of the alternatives for that channel, including those that don't meet my current filter criteria. How would I achieve that?