I can make a positive contribution on the ESPN Deportes one: It just needed a space, so ESPN Deportes vs. ESPNDEPORTES. Same with ESPN Unlimited btw.
Great Stuff, Thank you.
I can make a positive contribution on the ESPN Deportes one: It just needed a space, so ESPN Deportes vs. ESPNDEPORTES. Same with ESPN Unlimited btw.
Great Stuff, Thank you.
I waited to reply until i was sure i was looking at a real, live, ESPN+ broadcast. Deep links still not working for me. Must be something with the Onn version of the app - any chance the uuid from the config needs to be moved, similar to the package name?
This user reported deeplinks work on Onn, but was having issues with advancing to the live point:
Weird that you're having very different fundamental issues.
Anybody else out there using this hybrid project with an Onn device?
Iâve just pushed a new ESPN4CC4C build (v5.7.x) that should make life a lot easier for anyone whoâs been wrestling with filters. The big change is a new helper page at /setupfilters, plus a JSON endpoint at /filters/json. Instead of guessing at network_id, league_abbr, or which values actually exist in your current schedule, you can now hit http://<YOUR-IP>:8094/setupfilters in a browser and see real values pulled from your live database: networks, sports, leagues, categories, packages, etc. The page also gives you ready-to-copy snippets you can paste into filters.ini or translate into the new filter environment variables in your docker-compose, so youâre not editing blind anymore.
There are also some under-the-hood quality-of-life tweaks. Multi-feed games (especially NHL/NBA home/away broadcasts) are now kept as separate entries but annotated in the guide description when ESPN exposes enough metadata, so instead of two identical âBruins vs Ducksâ entries, youâll see which one is the Bruins feed and which is the Ducks feed. XMLTV/category handling has been tightened up as well, but for most people the headline is: if filters ever felt confusing before, start with /setupfilters and you should be able to dial in âonly the stuff I care aboutâ without a bunch of trial and error.
let me know if you guys are noticing any issues with the internal cron job not running for the refresh_in_container on espn4cc4c... i had issues on mine and pushed some updates to hopefully address it.
container cronjobs are a headache
Checked logs and the cron job did fail. Pulled your latest version and the first thing in the log was that Cron was successfully installed and that the Cron daemon was running. Positive sign as I used to get "cron: can't lock /var/run/crond.pid, otherpid may be 21: Resource temporarily unavailable"
IIRC the next refresh is scheduled at 2:05, so will be able to confirm then.
Good News:Bad News.
Good News is that the Cron job executed successfully at the appointed time.
Bad News is that none of the filters were respected. Got
No filters active (all events included)
[filter] Total events: 858, Included: 858, Filtered out: 0
[filter] Removed 0 events that didn't pass filters
Well thatâs oddâŚ. Shouldnât have anything to do with filters at all. It was just calling refresh in container on a schedule. Unless somehow that broke the env variables. On the case.
This should have had nothing to do with env variables what so ever. Please run this
docker exec espn4cc4c env | grep FILTER
FILTER_REQUIRE_ESPN_PLUS=false
FILTER_EXCLUDE_NETWORKS=ESPN,ESPN2,ESPNU,ESPNEWS,ESPN Deportes,SECN,SECN+,ACCN,ACCNX,@ESPN
Yep...got this error still
[STARTUP] Installing cron schedules...
crontab: your UID isn't in the passwd file.
bailing out.
Found this in the cron_refresh.log. Perhaps it is not picking up the environment variables.
Configuration:
DB: /app/data/eplus_vc.sqlite3
OUT: /app/out
TZ: America/New_York
VALID_HOURS: 72
LANES: 40
ALIGN: 30
MIN_GAP_MINS: 30
VC_RESOLVER_BASE_URL:
AUTO_FORCE_REPLAN_ON_FILTER_CHANGE: True
AUTO_RESET_DB_ON_FILTER_CHANGE: False
[filter] No INI file found at /app/filters.ini, using defaults
No filters active (all events included)
In Fact, this is NOT my environment config, looks like the default. e.g. I have TZ=America/Chicago, I have LANES=200 (don't judge me ;), and of course my filter spec.
If I start the container from scratch, everything works as expected.
[filter] Removed 497 events that didn't pass filters
[filter] Total events: 1187, Included: 690, Filtered out: 497
Partial league match: True
Case-insensitive matching: True
ESPN+ Required: False
Excluding: @espn, accn, accnx, espn, espn deportes, espn2, espnews, espnu, secn, secn+
Networks: All (*)
Active Filters:
Step 2/5: Applying event filters...
Although I'm not running ABDTuner, updated ESPN4cc4c started fine with cronjob activated and existing filters intact here.
bingo - that was it. bin/cron_boot.sh isn't passing the env variables to the cron job. i'll push an update this morning. easy fix.
tnx for the log! and @Jean0987654321 yours was an odd one, but i added a workaround for it too.
if this stupid cron thing keeps giving us heartache, i'll move to APScheduler.. might be better anyway- would be nicer long term as I could add a /refresh API call ...
*edit, doing that anyway...
Yeah...just tried a new version and I got a new error
[STARTUP] Installing cron schedules...
/app/bin/cron_boot.sh: line 15: /etc/cron.d/espn4cc4c: Permission denied
yep i'm done with cron.. grab this new update pls. tnx for patience on this.
Quick update on the ESPN4CC4C container: Iâve moved all of the scheduled tasks off system cron and into an in-process scheduler using APScheduler. This should get rid of those pesky cron-related errors some people were seeing in their container logs, and it keeps everything self-contained inside the FastAPI app.
The scheduler now runs database refreshes at 08:05 / 14:05 / 20:05 every day, and a SQLite VACUUM on Sundays at 03:10. On top of that, thereâs a new web UI at:
http://:8094/admin/refresh
From there you can see the last refresh/VACUUM status (including whether it was manual or scheduled), plus buttons to trigger a refresh or run VACUUM on demand. No extra setup needed â just update to v5.9, restart your container, and youâre using the new scheduler automatically.
My peacock strategy should work similar if you check the github for it.
That did it. Thanks. Yeah...seems like a mess to get cron working inside a container. 
Having an issue trying to setup E+ with adbtuner. I run my most of my containers with macvlan so that I can IP them with an IP of my IoT VLAN. I have a mixture of physical hosts, Proxmox guests, & Docker containers and this makes it easier to manage and prevents me from having issues.
So my espn4cc4c container is set up like this in portainer:
espn4cc4c:
image: ghcr.io/kineticman/espn4cc4c:latest
container_name: espn4cc4c
networks:
IoT-enp10s0-macvlan-network:
ipv4_address: 192.168.12.13
environment:
- TZ=America/New_York
- VC_RESOLVER_BASE_URL=http://192.168.12.13:8094
- CC_HOST=192.168.12.13
- CC_PORT=5589
- PORT=8094
- APP_MODULE=bin.vc_resolver:app
- VALID_HOURS=72
- LANES=40
- ALIGN=30
- MIN_GAP_MINS=30
- M3U_GROUP_TITLE=ESPN+ VC
- VC_M3U_PATH=/app/out/playlist.m3u
- WATCH_API_KEY=0dbf88e8-cc6d-41da-aa83-18b5c630bc5c
volumes:
- espn4cc4c-data:/app/data
- espn4cc4c-out:/app/out
- espn4cc4c-logs:/app/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8094/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
restart: unless-stopped
I removed the local host references and used the actual IP of the container. Even though I did that it looks like the code is refencing localhost anyway instead of using the env var: VC_RESOLVER_BASE_URL which would be http://192.168.12.13:8094 Could you possibly make this value a variable?
2025-11-21 20:36:09.904 - stream - [Tune (VSKDn6hnE4agxVTujTAdMu)] Resolving dynamic URL (http://host.docker.internal:8094/whatson/7?deeplink=1) for channel.
2025-11-21 20:36:09.980 - stream - [Tune (VSKDn6hnE4agxVTujTAdMu)] ERROR: Could not retrieve dynamic URL data: [Errno -2] Name or service not known
Full ADB Tuner logs:
2025-11-21 20:35:53.577 - admin - Releasing tuner 8 per user request.
2025-11-21 20:35:53.578 - tuner_management - Released tuner (8).
2025-11-21 20:35:53.578 - uvicorn.access - 172.16.1.11:0 - "GET /admin/tuner/force-unlock/8 HTTP/1.1" 303
2025-11-21 20:35:53.610 - uvicorn.access - 172.16.1.11:0 - "GET / HTTP/1.1" 200
2025-11-21 20:36:09.256 - stream - [Tune VSKDn6hnE4agxVTujTAdMu] 192.168.12.17:5592 | Go-http-client/1.1
2025-11-21 20:36:09.257 - stream - [Tune (VSKDn6hnE4agxVTujTAdMu)] No active tuners found for ESPN+7. Reserving a new tuner.
2025-11-21 20:36:09.257 - tuner_management - [Tune VSKDn6hnE4agxVTujTAdMu] Attempting to reserve tuner for: ['com.espn.gtv', 'com.espn.score_center'].
2025-11-21 20:36:09.258 - tuner_management - [Tune VSKDn6hnE4agxVTujTAdMu] Available Tuners:
2025-11-21 20:36:09.258 - tuner_management - [Tune VSKDn6hnE4agxVTujTAdMu] Name: Onn TV Pro 2 (HDMI 5) Priority: 1
2025-11-21 20:36:09.258 - tuner_management - [Tune VSKDn6hnE4agxVTujTAdMu] Name: Onn TV Pro 1 (HDMI 4) Priority: 2
2025-11-21 20:36:09.258 - tuner_management - [Tune VSKDn6hnE4agxVTujTAdMu] Name: Onn2 (bottom HDMI 2) Priority: 4
2025-11-21 20:36:09.258 - tuner_management - [Tune VSKDn6hnE4agxVTujTAdMu] Name: Onn1 (HDMI 1) Priority: 5
2025-11-21 20:36:09.258 - tuner_management - [Tune VSKDn6hnE4agxVTujTAdMu] Using first available tuner (by priority).
2025-11-21 20:36:09.258 - tuner_management - [Tune VSKDn6hnE4agxVTujTAdMu] Reserved Tuner: Name: Onn TV Pro 2 (HDMI 5) Priority: 1
2025-11-21 20:36:09.258 - stream - [Tune (VSKDn6hnE4agxVTujTAdMu)] Tuning to ESPN+7 on Onn TV Pro 2 (HDMI 5)
2025-11-21 20:36:09.258 - stream - [Tune (VSKDn6hnE4agxVTujTAdMu)] Using channel configuration: ESPN+ Deep Links - Show Tuning Process (51af5028-092f-4ddc-b4ea-d5e5fca58cac)
2025-11-21 20:36:09.805 - lib.adb - [Tune (VSKDn6hnE4agxVTujTAdMu)] ADB: 10.100.12.24 - pidof com.espn.score_center
2025-11-21 20:36:09.904 - stream - [Tune (VSKDn6hnE4agxVTujTAdMu)] Resolving dynamic URL (http://host.docker.internal:8094/whatson/7?deeplink=1) for channel.
2025-11-21 20:36:09.980 - stream - [Tune (VSKDn6hnE4agxVTujTAdMu)] ERROR: Could not retrieve dynamic URL data: [Errno -2] Name or service not known
2025-11-21 20:36:10.260 - stream - [Tune VSKDn6hnE4agxVTujTAdMu] Redirecting to stream after 1.01 seconds (fixed delay of 1 seconds exceeded). Tuning is still in progress.
2025-11-21 20:36:10.261 - uvicorn.access - 192.168.12.30:0 - "GET /stream/135 HTTP/1.1" 307
2025/11/21 20:36:10 [PROXY] 192.168.12.30 -> GET "/proxy/8?requestKey=VSKDn6hnE4agxVTujTAdMu" -> "http://192.168.12.16:8090/stream4"