FastChannels - FAST Channels aggregator/manager

That's the reason we use two sources for these.
If the source is set to get XMLTV guide data, you cannot override that in the playlist m3u using the tag tvc-guide-stationid=. You can put it in the playlist m3u, but Channels DVR ignores it.

In the two sources setup, one source has only channels with gracenote guide data as specified by the tag tvc-guide-stationid= in the playlist m3u. You must not specify an XLMTV URL for this one.
The other source has only channels that use the provided XMLTV guide data.

So in your Feeds tab in FastChannels, you have two playlist sources for each feed. One for channels with gracenote guide data and one for channels without gracenote guide data.

Look at the contents of the two playlists.

This one was out of my paygrade, so I put Codex to the task........

I dug into the memory issue pretty thoroughly, and I was wrong about what was happening.

The main problem was not that FastChannels was constantly regenerating XML on every request. The bigger issue was how XML and some feed validation work were being handled in memory inside the app, which could leave workers bloated over time. I’ve since changed that so cached XML is served much more efficiently, XML rebuilds stay out of the web workers, feed-related validation is lighter, and the app is running with a more sensible worker setup.

After those changes, memory usage is now looking much better here. What had been climbing into a much higher range is now sitting in a normal range again, roughly around the low-to-mid 200 MB area in my testing, without the big spikes and swap behavior I was seeing before.

So if anyone followed my earlier comments on this, that was on me. I had the cause wrong at first. The good news is the issue was real, it’s been tracked down much more accurately now, and the fixes have made a clear difference.

2 Likes

Looking forward to the update... as I said, I rebuild my container... it was hovering around the 1.5GB memory usage while doing the Stream Audits.. then I got to the Samsung and it spiked up to 5GB again...

v1.8.0? :grin:

Yea. i saw that option in Feeds in FastChanenls. But they are blank. Only Tubi works, cause i see the IDs in each channel under Channels tab. None of the other Sources have Gracenote ids in them.
Why i was wondering how to go about finding the catalog of them to search and match up to the dozen or two channels i use from Pluto etc.

Finding the correct gracenote station ID is time consuming.
You have to search for the correct network name or call sign, get the resulting station ID's and see which one has the correct programming for the channel.
I did this for a couple channels in Frndly TV to give you an idea.

1 Like

• FastChannels 1.8.0

  • Major memory usage improvements, especially around XML/EPG handling
  • XML rebuilds now stay out of the web request path, which reduces worker bloat and improves stability
  • More heavy work now runs through the background worker queue, helping reduce DB lock pressure
  • Added memory and CPU stats to /admin/settings
  • Reduced noisy logging for cached logos/posters
  • Added backend support for settings backup/restore, but I’m keeping it hidden from the UI for now until it gets more testing
  • Simplified image caching
  • Removed support for other regions for LG (only US works)
1 Like

Mem back to acceptable range...

Spoke too soon?

image

watch your logs - anything out of the ordinary? how many feeds do you have setup? just trying to find some common denominator ... mine is chilling ~300meg

here's the latest in the logs

2026-03-18 16:14:00,117 INFO __main__: Seeded 13 sources
2026-03-18 16:14:00,118 INFO __main__: Scheduler started — checking sources every 60s
2026-03-18 16:14:00,143 INFO __main__: Startup summary — enabled_sources=11 total_sources=13 enabled_feeds=5
2026-03-18 16:14:17,133 INFO __main__: [xml-cache] refreshed 6 XML artifact(s)
2026-03-18 16:14:17,261 INFO __main__: Worker listening on queue: scraper
2026-03-18 16:15:00,126 INFO __main__: [scheduler] Enqueued roku (interval=60m, age=1541m)
2026-03-18 16:15:00,182 INFO app.worker: FastChannels worker v1.8.0 starting
2026-03-18 16:15:00,190 INFO app.worker: [roku] Scrape job started
2026-03-18 16:15:01,572 INFO app.scrapers.roku: [roku] 794 channels fetched
2026-03-18 16:15:01,582 INFO app.scrapers.roku: [roku] EPG skip: 485/794 channels have fresh programs, skipping content proxy
2026-03-18 16:16:08,607 INFO app.scrapers.roku: [roku] description backfill: 992 unique IDs (504 cached, 488 fetched) → 1031 programs filled
2026-03-18 16:16:08,812 INFO app.scrapers.roku: [roku] prewarm seed: seeded osm_session from 483af83e821059b8b3f0825ae2d43e31
2026-03-18 16:16:08,812 INFO app.scrapers.roku: [roku] cache warm summary: play_id=698/794 selector=698/794 stream_url=0/794 retry_play=0 retry_selector=0
2026-03-18 16:16:08,812 INFO app.scrapers.roku: [roku] 1060 EPG entries fetched for 794 channels
10.89.3.26 "GET / HTTP/1.1" 302 201 0s
10.89.3.26 "GET /favicon.ico HTTP/1.1" 404 207 0s
2026-03-18 16:16:34,278 INFO app.worker: [xml-cache] refreshed 6 XML artifact(s)
2026-03-18 16:16:34,402 INFO app.worker: [roku] Scrape complete — 794 channels, 1060 programs (94.2s)
2026-03-18 16:16:34,413 INFO app.routes.images: [images] pre-warm starting: 794 URLs — 794 already fresh, 0 to fetch (8 workers)
2026-03-18 16:16:34,413 INFO app.routes.images: [images] pre-warm done: 0 cached, 794 already fresh, 0 failed (of 794 total)

4 custom feeds and the default
196 channels in 1 feed, 93, 104 and 27 in the other 3 feeds

and does the memory STAY at 1.32 GB usage, or did you just see a spike?

Nice addition!

at today's memory prices, are you Elon Musk?

on the restart, it was about 250MB and then it spiked to the 1.32GB and has been steady there, so about 5 mins now...

Yea. I figured. I already am seeing Ghost Hunters Channel on Plex that uses Gracenote is not correct Guide data. Episode not match what guide says...so far thats the only issue i have come across splitting up Plex using jgmoz container.
As for FastChannels, guide data isn't quite there and lacks GN ids for all but Tubi.
Hopefully, that can be improved in the future.
Cause, i very much would like to migrate to this in the future.

I only spend the time finding the GN ids for channels I want to record (very few) from FAST sources.
What's nice about the FastChannels project is it lets you put a GN ID in the Channels tab, saves it and it comes out in your feed. So as you find the correct one, just plug it in.

bumped again...

the very last entry in the log is from 16:16

2026-03-18 16:16:34,413 INFO app.routes.images: [images] pre-warm done: 0 cached, 794 already fresh, 0 failed (of 794 total)

Version 1.8.0 ?
What do the system stats look like on the Settings tab

Hang on... working on something with KineticMan