Sorry
I deleted the Image as well this time and did a fresh pull and it worked. Weird.
Same pulled like 5 minutes ago had same version. Did another pull and this time 2.4 showed up.
Well, so does Amazon and Sling, but you have those sources in FAST for Guide data.
Is Philo guide data also DRM protected, or not worth scraping then?
It not really clear to me on how having Amazon and Sling help enrich guide data for other sources, if each source is just using what it scraped for its own source.
Ignore the guide enrichment thing. It was an idea I had but never panned out. I just left those scrapers in there.
Could you leave the generated-ts= timestamp in the Samsung epg?
Matt has it in his generated guide data xml and it's the epoch time the xml was generated.
<tv generator-info-name="www.matthuisman.nz" generated-ts="1774493686">
I use the OliveTin action Samsung-TVPlus Stale XML Alerter to check if the guide data is stale and ping me using Pushover, but that doesn't work with what you're providing
<tv generator-info-name="FastChannels" generator-info-url="http://192.168.1.4:5523">
If not, I'll just continue running his docker.
Or, if @bnhf can modify his stalexmlalerter.sh script to have curl follow redirects (-L), I can just point it to https://i.mjh.nz/SamsungTVPlus/us.xml as that returns a 302 to the location.
Let's see if @bnhf can edit that script first .. not saying your ask couldn't be done, but kind of niche request.
Thanks, he did and it works. So ignore my "edge" request. 
I'm confident you'll have more in the future 
I'm having way too much fun playing with this and constructing feeds. Thank you for a great contribution the community, @KineticMan. I hope you don't lose interest anytime soon.
I do find the presentation of the channels in a feed on the Feeds tab to be a little lacking.
I'd like to suggest adding the ability on the Channels tab to choose a feed to use as a filter. The resulting list should include both channels in the feed and disabled channels that would be in the feed if enabled.
I think this would make it a lot easier to find mis-categorized channels, adjust which duplicates you want in the feed, and adjust Gracenote IDs.
I like the idea... Easy to implement a filter like you asked, but allowing "editing" of the filter inside admin/channels might be tricky. I could have it list all the channels (like you suggested - would be all active/inactive) but probably wouldn't be able to change anything with the filter there (short of turning on/off channels). thoughts?
Anyone else notice that most Local Now channels only have about an hour of guide data?
I set the source to scrape every 60 minutes and set CDVR to refresh the guide data every 1hr.
Yes. I have enabled 3 of the local news channels, and only an hour or two guide data.
I'll say this for FastChannels. It has made it easy for me to wean my FAST channel list down to just what I'm interested in. I finally have run audits on all of the sources with the exception of Amazon, FreeLiveSports, and Sling.
The full list was over 4000 channels. After audits and disabling channels which do not interest me, I'm down to 455, and that's before eliminating duplicates!
Regarding duplicates... diabling all but one of each channel means that if that single channel fails for some reason, you get nothin'? Are you guys keeping a couple/few of each redundant channel?
It's a limitation of the API we use. The Local Now API hard-caps at exactly 5 programs per channel — program_size is completely ignored. The worst channels (short-duration shows like Euronews English at 30-min segments) yield only ~1 hour of future EPG coverage per scrape. not much else we can do, short of scraping every 60 minutes - i'll make that new default (had it at 360).
After choosing a feed, I would expect the list of channels to remain static, even if changes are made that affect the feed. Refresh if you want to see how changes on the channels tab have affected the feed.
I am to start with.
As I find which source is better for a channel (records without interruptions), I'll disable the duplicates. If none of the duplicate channels fail, I'll keep them enabled as backups since FAST channels come and go from sources.
If a recording is interrupted after starting it's not going to fall over to another stream.
I think that this is true of CDVR in general. I've never seen an in-progress, interrupted recording jump over to a different channel before. I may have seen a recording which failed to start switch to another channel/provider. 
Yes, it definitely does failover if it fails to start.
FastChannels 2.5.0
New & Improved:
- Channel numbers are now stable across scrape cycles. Channels keep their assigned numbers even as sources add or remove channels — no more guide reshuffling after a scrape. This should help some of the DVR issues you've seen if chan-num changes for a scheduled DVR recording.
- User-pinned channel numbers survive scrapes and source updates permanently.
- Channels admin now lets you filter by feed — see exactly which channels would appear in any given feed's output without leaving the admin panel.
- New startup migration system ensures database changes apply automatically on container start.
Under the hood:
- Worker processes are now fully isolated — scheduler, scraper, fast, and maintenance each run as separate processes with independent watchdog restarts. Should eliminate overnight time-outs we saw occassionally on jobs.
- Heavy background jobs (channel purge, bulk enable/disable, Gracenote tasks) moved to a dedicated maintenance queue so scrape jobs aren't delayed.
- EPG prune and other DB operations now run in batches to avoid SQLite lock contention.
- Feed channel filter logic deduplicated between admin and API routes.