FastChannels - FAST Channels aggregator/manager

Life is Good!!!

Versant login works now! Unfortunately still seeing errors when actually trying to stream CNN and Versant channels

2026-10-24 10:13:59,694 INFO     gunicorn.access: 172.31.0.1 "GET /play/cnn_tve/cnn.m3u8 HTTP/1.1" 200 55006 1s
2026-10-24 10:13:58,681 INFO     app.routes.play: [play] request_id=714517de0b42ea2f ip=172.31.0.1 source=cnn_tve channel_id=cnn channel_name=CNN
2026-10-24 10:13:59,763 WARNING  gunicorn.error: Invalid request from ip=172.31.0.1: Request Line is too large (4108 > 4094)
2026-10-24 10:14:16,567 INFO     app.routes.play: [play] request_id=83bd8bcd3ac06b27 ip=172.31.0.1 source=versant_tve channel_id=msnow channel_name=MS NOW
2026-10-24 10:14:04,662 WARNING  gunicorn.error: Invalid request from ip=172.31.0.1: Request Line is too large (8192 > 4094)
2026-10-24 10:14:16,837 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/msnow.m3u8 HTTP/1.1" 302 2149 0s
2026-10-24 10:14:17,323 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3C/Event%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:21,949 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3C/Event%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:22,067 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3CEvent%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:26,666 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3CEvent%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:26,822 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3Cscte35:Signal%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:31,382 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3Cscte35:Signal%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:31,497 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3Cscte35:Binary%3E/DBEAAAAAAAAAADABQb+sN0wbQAuAixDVUVJAAAAAn//ACHLu8AMGE5CQ1Vtc25vd19FUDA2NDQxMTQ0MDAzORABATHlVDI=%3C/scte35:Binary%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:36,104 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3Cscte35:Binary%3E/DBEAAAAAAAAAADABQb+sN0wbQAuAixDVUVJAAAAAn//ACHLu8AMGE5CQ1Vtc25vd19FUDA2NDQxMTQ0MDAzORABATHlVDI=%3C/scte35:Binary%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:36,209 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3C/scte35:Signal%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:40,626 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3C/scte35:Signal%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:40,819 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3C/Event%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:45,562 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3C/Event%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:45,687 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3C/EventStream%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:50,262 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3C/EventStream%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:50,351 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3CEventStream%20schemeIdUri=%22urn:hlit:scte35:2020:1%22%20timescale=%2210000000%22%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:54,990 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3CEventStream%20schemeIdUri=%22urn:hlit:scte35:2020:1%22%20timescale=%2210000000%22%3E HTTP/1.1" 404 207 0s
2026-10-24 10:14:55,129 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3CEvent%20hlit-scte35:segmentTypeId=%220x11%22%20id=%222%22%3E HTTP/1.1" 404 207 0s
2026-10-24 10:15:00,222 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3Cscte35:Signal%3E HTTP/1.1" 404 207 0s
2026-10-24 10:15:00,059 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3CEvent%20hlit-scte35:segmentTypeId=%220x11%22%20id=%222%22%3E HTTP/1.1" 404 207 0s
2026-10-24 10:15:05,493 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3Cscte35:Signal%3E HTTP/1.1" 404 207 0s
2026-10-24 10:15:05,615 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3Cscte35:Binary%3E/DA/AAAAAAAAAADABQb+sN0wbQApAidDVUVJAAAAAn+/DBhOQkNVbXNub3dfRVAwNTcyNjc5MDAyOTYRAQHPcYIC%3C/scte35:Binary%3E HTTP/1.1" 404 207 0s
2026-10-24 10:15:10,706 INFO     gunicorn.access: 172.31.0.1 "GET /play/versant_tve/%3Cscte35:Binary%3E/DA/AAAAAAAAAADABQb+sN0wbQApAidDVUVJAAAAAn+/DBhOQkNVbXNub3dfRVAwNTcyNjc5MDAyOTYRAQHPcYIC%3C/scte35:Binary%3E HTTP/1.1" 404 207 0s

I'm running FC on a Synology if that helps narrow things down.

edit: Scratch that, only CNN is giving the errors now. Versant loads properly with ah4c! Here are some logs from after I added CNN to an ah4c feed:

2026-10-24 18:05:19,893 INFO app.routes.play: [play] request_id=19098d72358d9956 ip=172.31.0.1 source=cnn_tve channel_id=cnn channel_name=CNN
2026-10-24 18:05:28,995 INFO gunicorn.access: 172.31.0.1 "POST /play/fc-player/warm-stop-ack?channel_key=cnn_tve%3Acnn HTTP/1.1" 204 0 0s
2026-10-24 18:05:19,900 INFO app.routes.play: [fc-player] request_id=45059c1c751853b3 ip=172.31.0.1 source=cnn_tve channel_id=cnn channel_name=CNN adb=192.168.10.12 triggered=True -> ah4c (trigger-only)
2026-10-24 18:05:19,904 INFO gunicorn.access: 172.31.0.1 "GET /play/fc-player/cnn_tve/cnn.m3u8?scripts=2026.09.28&adb=192.168.10.12 HTTP/1.1" 204 0 3s
2026-10-24 18:05:20,256 INFO gunicorn.access: 172.31.0.1 "GET /play/cnn_tve/cnn/dash.mpd HTTP/1.1" 200 40376 0s
2026-10-24 18:05:21,353 INFO app.routes.play: [fc-player] request_id=9347fe83ca6425c5 ip=172.31.0.1 source=cnn_tve channel_id=cnn channel_name=CNN adb=192.168.10.65 triggered=True -> ah4c (trigger-only)
2026-10-24 18:05:21,284 INFO app.routes.play: [play] request_id=a10ad416953f5f5c ip=172.31.0.1 source=cnn_tve channel_id=cnn channel_name=CNN
2026-10-24 18:05:21,356 INFO gunicorn.access: 172.31.0.1 "GET /play/fc-player/cnn_tve/cnn.m3u8?scripts=2026.09.28&adb=192.168.10.65 HTTP/1.1" 204 0 3s
2026-10-24 18:05:21,484 INFO gunicorn.access: 172.31.0.1 "GET /play/cnn_tve/cnn/dash.mpd HTTP/1.1" 200 40376 0s
2026-10-24 18:05:22,967 INFO gunicorn.access: 172.31.0.1 "POST /play/fc-player/warm-stop-ack?channel_key=cnn_tve%3Acnn HTTP/1.1" 204 0 0s
2026-10-24 18:05:24,707 INFO gunicorn.access: 172.31.0.1 "POST /play/fc-player/warm-stop-ack?channel_key=cnn_tve%3Acnn HTTP/1.1" 204 0 0s
2026-10-24 18:05:25,175 INFO app.routes.play: [fc-player] request_id=d88f166a704134ab ip=172.31.0.1 source=cnn_tve channel_id=cnn channel_name=CNN adb=192.168.10.12 triggered=True -> ah4c (trigger-only)
2026-10-24 18:05:25,178 INFO gunicorn.access: 172.31.0.1 "GET /play/fc-player/cnn_tve/cnn.m3u8?scripts=2026.09.28&adb=192.168.10.12 HTTP/1.1" 204 0 1s
2026-10-24 18:05:25,190 INFO app.routes.play: [play] request_id=44bc5334961414f9 ip=172.31.0.1 source=cnn_tve channel_id=cnn channel_name=CNN
2026-10-24 18:05:25,496 INFO gunicorn.access: 172.31.0.1 "GET /play/cnn_tve/cnn/dash.mpd HTTP/1.1" 200 40376 0s

Unfortunately, the auto resign process didn't work. Log entries below.

2026-10-24 07:30:59,596 WARNING  app.scrapers.spectrum: [spectrum-renewal] refresh_token grant rejected: HTTP 401 reason=2076 (device_verifier saved=True, client_device_id saved=True) β€” if a browser re-login follows, this is the window a deviceverifier/auth renewal could replace
2026-10-24 07:30:59,602 INFO     app.routes.tasks: Enqueued Spectrum sign-in
2026-10-24 07:30:59,603 INFO     app.scrapers.spectrum: [spectrum] refresh_token was rejected outright β€” triggered unattended re-login
2026-10-24 07:30:59,603 WARNING  app.routes.play: [spectrum-dash] resolve failed for 127: [spectrum] saved session has expired and could not be refreshed β€” sign in again via the "Sign in to Spectrum" button.
2026-10-24 07:31:00,184 WARNING  app.scrapers.spectrum: [spectrum-renewal] refresh_token grant rejected: HTTP 401 reason=2076 (device_verifier saved=True, client_device_id saved=True) β€” if a browser re-login follows, this is the window a deviceverifier/auth renewal could replace
2026-10-24 07:31:00,185 WARNING  app.routes.play: [spectrum-dash] resolve failed for 127: [spectrum] saved session has expired and could not be refreshed β€” sign in again via the "Sign in to Spectrum" button.
2026-10-24 07:31:01,604 WARNING  app.scrapers.spectrum: [spectrum-renewal] refresh_token grant rejected: HTTP 401 reason=2076 (device_verifier saved=True, client_device_id saved=True) β€” if a browser re-login follows, this is the window a deviceverifier/auth renewal could replace
2026-10-24 07:31:01,604 WARNING  app.routes.play: [spectrum-dash] resolve failed for 127: [spectrum] saved session has expired and could not be refreshed β€” sign in again via the "Sign in to Spectrum" button.
2026-10-24 07:31:04,017 WARNING  app.scrapers.spectrum: [spectrum-renewal] refresh_token grant rejected: HTTP 401 reason=2076 (device_verifier saved=True, client_device_id saved=True) β€” if a browser re-login follows, this is the window a deviceverifier/auth renewal could replace
2026-10-24 07:31:04,017 WARNING  app.routes.play: [spectrum-dash] resolve failed for 127: [spectrum] saved session has expired and could not be refreshed β€” sign in again via the "Sign in to Spectrum" button.
2026-10-24 07:31:06,855 WARNING  app.scrapers.spectrum: [spectrum-renewal] refresh_token grant rejected: HTTP 401 reason=2076 (device_verifier saved=True, client_device_id saved=True) β€” if a browser re-login follows, this is the window a deviceverifier/auth renewal could replace
2026-10-24 07:31:06,856 WARNING  app.routes.play: [spectrum-dash] resolve failed for 127: [spectrum] saved session has expired and could not be refreshed β€” sign in again via the "Sign in to Spectrum" button.
2026-10-24 07:31:07,451 WARNING  app.scrapers.spectrum: [spectrum-renewal] refresh_token grant rejected: HTTP 401 reason=2076 (device_verifier saved=True, client_device_id saved=True) β€” if a browser re-login follows, this is the window a deviceverifier/auth renewal could replace
2026-10-24 07:31:07,451 WARNING  app.routes.play: [spectrum-dash] resolve failed for 127: [spectrum] saved session has expired and could not be refreshed β€” sign in again via the "Sign in to Spectrum" button.
2026-10-24 07:31:08,502 INFO     app.tve.browser_login.common: [mvpd-login] Spectrum SSO-confirm showed account da***[email protected] but da***[email protected] is configured β€” clicked "Sign in with another account" instead of Continue url=https://id.spectrum.net/login/auto?account_type=&client_id=stva-ovp&dark=true&client_device_id=e7a65fa4-f099-4f9f-97cd-27d76d4ef678&code_challenge=uypAMgX7tBT25mPkvoKbkqSKPhh9vtBJjBcZ3m15fyY&code_challenge_method=S256&exVisitID=202610241431V-03b0ee10-7ad0-4a79-b63a-2691388f6c55&nonce=zZS5JbQUC8JtSsoNffdxYmynU3361K8h&redirect_uri=https:%2F%2Fwatch.spectrum.net&x_client_version=18.0.2&supportSMB=true&l10n=en
2026-10-24 07:31:09,265 WARNING  app.scrapers.spectrum: [spectrum-renewal] refresh_token grant rejected: HTTP 401 reason=2076 (device_verifier saved=True, client_device_id saved=True) β€” if a browser re-login follows, this is the window a deviceverifier/auth renewal could replace
2026-10-24 07:31:09,265 WARNING  app.routes.play: [spectrum-dash] resolve failed for 127: [spectrum] saved session has expired and could not be refreshed β€” sign in again via the "Sign in to Spectrum" button.
2026-10-24 07:31:10,417 WARNING  app.scrapers.spectrum: [spectrum-renewal] refresh_token grant rejected: HTTP 401 reason=2076 (device_verifier saved=True, client_device_id saved=True) β€” if a browser re-login follows, this is the window a deviceverifier/auth renewal could replace
2026-10-24 07:31:10,417 WARNING  app.routes.play: [spectrum-dash] resolve failed for 127: [spectrum] saved session has expired and could not be refreshed β€” sign in again via the "Sign in to Spectrum" button.
2026-10-24 07:31:12,183 WARNING  app.fc_player_bridge: [fc-player] device playback error: 10-24 07:31:10.453 E/FCPlayer.Playback(15389): playback error channel_key=spectrum:127 (retry 1/3): androidx.media3.exoplayer.ExoPlaybackException: Source error
2026-10-24 07:31:13,159 WARNING  app.scrapers.spectrum: [spectrum-renewal] refresh_token grant rejected: HTTP 401 reason=2076 (device_verifier saved=True, client_device_id saved=True) β€” if a browser re-login follows, this is the window a deviceverifier/auth renewal could replace
2026-10-24 07:31:13,160 WARNING  app.routes.play: [spectrum-dash] resolve failed for 127: [spectrum] saved session has expired and could not be refreshed β€” sign in again via the "Sign in to Spectrum" button.

Tnx out of pocket today but will check out tomorrow

Figured… this one gonna be tricky. Hit you up with DM tomorrow for ideas

Really, aren't most of them the "me edition"? Since day negative 47, I've always been there to harass and bully help you reach the peak of your technical and creative ability!

But truly, honestly, this is excellent stuff, wasn't expecting such a fast turn around for so much of this. I've gone ahead and tested and reviewed just about everything I could and updated the spreadsheet with my notes and current FC terminology.

2 Likes


If the answer to this is somewhere else, I'm sorry. I promise I looked.

I am trying to set up PrismCast and I keep getting these errors despite doing what I think it's telling me to do (but I am clearly not). I use docker/portainer on a Mac mini M4 to run all the ChannelsDVR things, including FastChannels and PrismCast. What am I doing wrong?

The first thing you should do is to install PrismCast natively on your Mac Mini M4, otherwise you'll have no hardware acceleration. As a metter of fact, it's only built AMD64, so if you have it running in Docker on an M4 you're using emulation -- which is even worse.

Fix that, and then we'll see where you're at.

1 Like

You are the best! Here's where I'm at now. Everything seems to work though. Should I just count this as a win or let my need for no errors win? :slight_smile:

I have tried to fix this using different http addresses and nothing has seemed to work.

having a hard time tracing this one-- can u confirm exactly how u are calling these CNN streams?