Sure - it's quite hobbled together right now, but thats my intention to get it out for anyone to test it. And I'm in way over my head so hopefully someone smarter would get interested in it too 
It’s all python based with a small SQLite DB that stores the API scrape. So I think it should work with windows but honestly not sure.
I think a container is probably the route I’ll take.
The one major thing I have to figure out is full screen. I made some changes to CC4C main.js to get CC4C to send a “F” key to trick ESPN player to go full screen but it’s not consistent just yet. I’ll get there …
I meant cc4c lol. I used to run the main.js directly on windows. But I'm not sure that still works does it?
Very cool. I was thinking something similar but having it call my HDMI for Channels setup with the event id to direct tune.
Will be watching as it evolves and hope you will share. The upcoming multi-view will be much better if I can get espn+ back.
I'm trying to install cc4c in linux (Debian 12.12) directly.
I installed node, npm, and puppeteer. I cloned the project and updated main.js with the path to Chrome that Puppeteer installed. It launches, but I get the error: "failed to start stream Watch the MSNBC Live Stream - NBC.com Extension has not been invoked for the current page (see activeTab permission). Chrome pages cannot be captured."
The Puppeteer version was 24.5.0 which may not have the above-mentioned fix, so I updated puppeteer with "npm install puppeteer@latest" which installed 24.26.0.
Still getting the same error... Does that version have the update, or do I need to patch the code?
Thanks,
-Jay
The instructions would be basically the same as described here for installing in a Debian LXC in Proxmox:
Whoa! That actually worked! OK, so I went into the folder in which I cloned the repo, added the environment variables, and installed bun. I didn't reinstall Chrome and I used the same main.js that I modified to run the Chrome that Puppeteer installed. The command to run xvbf and vnc complained because those were not installed, but cc4c launched in the foreground. I'm using the vnc server that comes with KDE, so I suppose those aren't needed. Performance is great. It's using about 20 - 25% total CPU with one stream. This is on a I7-7700 which is also running the Channels DVR server, so I'll have to see how it does while recording as well, but this seems workable. Thanks!
I assumed you were running Debian Server (no desktop), so there would be some differences.
Doesn't Puppeteer install Chromium rather than Chrome? Chrome is what you want, if possible.
Puppeteer created this folder tree when it was installed:
$HOME/.cache/puppeteer/chrome/linux-134.0.6998.165/
$HOME/.cache/puppeteer/chrome/linux-141.0.7390.78/
$HOME/.cache/puppeteer/chrome-headless-shell/linux-134.0.6998.165/chrome-headless-shell-linux64/
$HOME/.cache/puppeteer/chrome-headless-shell/linux-141.0.7390.78/chrome-headless-shell-linux64/
I used the executable in $HOME/.cache/puppeteer/chrome/linux-141.0.7390.78/ which identifies itself as "Google Chrome for Testing Version 141.0.7390.78 (Official Build) (64-bit)". Apparently, the "for Testing" version doesn't auto update, which might be a good thing in this application!
I am still usiing the manual way to do it, but if you modify main.js you can easily make full screen.
// Trigger fullscreen mode using the Fullscreen API
await new Promise(resolve => setTimeout(resolve, 1030));
await page.evaluate(() => {
const element = document.documentElement;
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
});
Are you including a bit of a buffer for games to go over?
Awesome work. hopefully I can figure out what you did so I can merge with the peacock/hbomax/prime scripts I am already doing. I am sure more channels will go DRM in the future.
it's coming along very well.. still hacked together a bit so not ready for dist yet, but it's largely working. very bugs to squash, then i can move onto packaging for a beta release.
Awesome. A lot of people already have a lot of addons. I plan on unifying it all in one. I also have created a hulu and amazon prime/netflix movie/tv ripper. Sadly it uses widevine l3 and no way to get l1 without breaking drm (illegal) so it maxes out at 720p. Would be nice to throw this all in one major addon for cc4c
It will use kodi to grab the stuff, until someone can create a similar interface for channels to use.
It also removes commercials from movies and shows
Edit: Some guy posted about DirecTV stream..did you get it working
ok its pretty stable now. now i'm tidying up some hard coded stuff into ini's so it can be moved to another server for beta testing.
if anyone is interested in testing, shoot me a note. need to be comfortable with linux as i dont have it containerized yet. not terrible to install though but not for beginners.
does it have a webpage like eplustv
Haven't loaded it up yet.
not ready for dist yet... working fine on my server, but having issues porting to another server. hope to resolve tonight
I am seeing the same thing.
ESPN4CC4C — ESPN+ Virtual Channels for Channels DVR
Hey everyone — I’ve been working on a side project that turns ESPN+ events into real, playable channels inside Channels DVR.
It’s called ESPN4CC4C, and it runs as a lightweight Docker container that builds and maintains a full M3U and XMLTV lineup from the ESPN+ schedule. Once it’s running, Channels DVR can treat them like regular TV channels — guide data, program titles, the works.
You’ll need to have Chrome Capture for Channels (CC4C) already running — that’s what actually launches the ESPN+ streams. ESPN4CC4C just handles all the scheduling, channel mapping, and metadata to make it seamless.
Highlights:
- 40 virtual ESPN+ channels (
eplus1–40) - Auto-refresh every 6 hours (internal cron)
- Fully self-contained — no manual refresh needed
- Clean, simple Docker Compose setup
- Logs and data persist across restarts
Quick Setup:
git clone https://github.com/kineticman/ESPN4CC4C.git
cd ESPN4CC4C
cp .env.example .env
# edit .env with your LAN IP and CC4C host info
./bootstrap.sh
Then just add these to Channels DVR:
M3U: http://<LAN-IP>:8094/out/playlist.m3u
XMLTV: http://<LAN-IP>:8094/out/epg.xml
Full repo and setup guide:
GitHub - kineticman/ESPN4CC4C: ESPN+ for Chrome Capture For Channels
I’ve also got a fullscreen playback hack for CC4C that makes this feel even cleaner. If anyone wants it, I can share setup steps.
So I installed this on Docker for Windows, but in the epg, all I get is Stand By on all the channels. I can start the channel and do get a remux and a video saying "Stand By No live event scheduled". I can watch ESPN+ channels in a browser with my TV provider set.
That means your DB didn’t initiate or fill up. And u ran the bootstrap? And .env properly setup?
It should give you status at the end- send me that. Safe to rerun it.
*edit- I have only tested this on Ubuntu. So could be path issues using windows? Anyway watch that whole bootstrap run and grab any errors and shoot me a message.
*edit 2-- ahh, the sh wont work on windows. i'll work on making a windows version(s).