ESPN+ with Custom Channels via ADBTuner

So, unfortunately, I think the Onn version of the ESPN app doesn't work with the various directional commands to select the airing.

Every time i start a view, it randomly picks one item, selects it, and then just stays there. No video, and not the right item.

My guide data looks ok. Anything i can do to help troubleshoot?

Ok, I'll try it when I get home.

This is awesome. I used the Quick Start (Git + Compose — power without Portainer) instructions. How do I enter my ESPN credentials?

Tried again w/ the Portainer instructions..... Still need help.

On the bright side, I think I may be narrowing in on the issue. After rebuilding everything, I see this in the logs:

Step 2/5: Applying event filters...
No filters active (all events included)

[filter] Total events: 760, Included: 760, Filtered out: 0
[filter] Removed 0 events that didn't pass filters

So I am thinking it is not picking up my filters.ini file for some reason. Suspecting it may be a path issue, I added an environment variable for HOST_DIR, but without luck. As I am running in Synology, it expects everything to be in .../docker/.

ahhhh i didnt consider that.... i think i can do a fix for path issue. but full disclosure - im not familiar with Synology. anyone have any tips?

sounds like i could resolve all this by putting filters as an environment variable option.... @bnhf keeps telling me. i promise i will eventually

1 Like

Yes … please and thank you. :+1:t3:

I don't know enough to be of much help. But, I am thinking that if were in the /out, or /data directory it would probably work because everything else works just fine. I am guessing it is just the host directory that may be an issue.

Ok...that new version didn't work. Still seeing events from the channels I mentioned

  • delete DB (data folder has a sql file)
  • run:

docker exec -it espn4cc4c /app/bin/refresh_in_container.sh

then scroll up and do you see this?

=== Refreshing Existing Database ===
Step 1/5: Ingesting ESPN Watch Graph (1 days)...
→ python3 /app/bin/ingest_watch_graph_all_to_db.py --db /app/data/eplus_vc.sqlite3 --days 1
Ingested 211 airings into /app/data/eplus_vc.sqlite3
Step 2/5: Applying event filters...
Active Filters:
Leagues: All ()
Excluding: ncaaw, women's
Languages: All (
)
Excluding: es
Exclude Re-Air Events: True

[filter] Total events: 473, Included: 370, Filtered out: 103
[filter] Removed 103 events that didn't pass filters
Step 3/5: Building plan (72h validity)...

ok fine.

I just pushed ESPN4CC4C v5.6.0, which includes a much better filtering system that’s now fully wired into the refresh pipeline and driven by environment variables (no more filters.ini). You can control what gets into the guide using FILTER_* env vars in docker-compose.yml (networks, leagues, languages, ESPN+ only, no PPV, no re-airs, etc.), and the refresh process now actually deletes non-matching events from the database before building the plan. When you change filters, the container detects the config change and can automatically force a fresh plan rebuild so “sticky” old content doesn’t hang around.

To make it easy to see what’s going on, each refresh now also generates a visual report at http://<host>:8094/out/filteraudit.html. That page shows your active filters, how many events survived, which leagues/languages are still present, and a few sanity checks to prove that blocked content (like NCAAW, Spanish feeds, or re-airs) isn’t in the plan. It’s basically a quick “did my filters actually work?” dashboard you can open in a browser.

2 Likes

Those ADB DPAD commands are intended to get you to "live" from an actively streaming event. Based on what you're describing, the deeplinks are not working as those ADB commands are happening from app's home screen rather than in the app's player.

Deeplinks should be working for all events you're entitled to in your subscription, except for Re-Airs (events that have been previously broadcast -- i.e. not live). Deeplinks do not work for those, so Re-Airs should be filtered out.

Credentials are entered in the ESPN app on each of the streaming sticks connected to your encoder.

Ok, finally that worked!!

1 Like

So i need more than the Quick Start for the ESPN4CC4C? Is there an ELI5 for everything else I need?

Around 9:30 cst last night I cleared everything out, added filters to environment variable and started the container.
The filters worked exactly as expected and everything loaded up great. Fantastic!

I then made some minor tweaks to filters, cleared everything and pulled again (around 10:00 cst) and there was no filtering. In the logs, it showed it loaded the filters correctly, but then I see "Total events: 885, Included: 0, Filtered out: 885". All events show in the epg.

Now, no matter how I set the filters now, I get the same results. (filter audit below if that helps)
Any Ideas?

Thanks

ESPN4CC4C Filter Audit

Step 1: What filters are turned on?

This is the output of EventFilter.get_filter_summary(), based on your FILTER_* environment variables and /app/filters.ini.

Active Filters:
  Networks: espn+, espn3
  ESPN+ Required: True
  Case-insensitive matching: True
  Partial league match: True
Note: during a normal refresh, events that do not match your filters are deleted from the events table. If you re-run the filters afterwards (like this audit does), all remaining events should pass.

Step 2: What does the database look like after filtering?

These numbers show how many events survived filtering and how many plan slots are using them.

Metric	Value
events_total	885
plan_slots	17314
events_total = how many events survived your filters.
plan_slots = how many schedule slots are using those events.

Leagues still present in events (top 20)

League	Count
 	245
ncaam	123
ncaaw	111
ncaa football	103
college	56
ncaa women's volleyball	52
nhl	43
nfl	33
nba	25
ncaam soccer	16
ncaaw soccer	14
f1	8
uefa women's champions league	7
nba g league	7
xg	6
ufc	5
pga jr. league championship	5
usp	4
magic city	3
pga tour	2
Languages still present in events

Language	Count
en	812
es	73
Re-airs still present in events (should be 0 if exclude_reair is true): 259
Step 3: Prove that blocked stuff is not in the guide

Now we look at the actual plan (what shows up in the guide). If your filters are working correctly, the checks below should all be 0.

Check	Count
bad_slots_league	340
bad_slots_language_es	134
bad_slots_reair	476
If all the numbers above are 0, then:
✅ Your filters are ON (Step 1)
✅ The database only contains allowed events (Step 2)
✅ The guide/plan is not using any blocked content (Step 3)

This filtering is gonna be the death of me. Let me debug.

-edit- what exactly are you trying to filter? I might have some confusing logic in the filter there.

What I am looking to do is get just ESPN+, and ESPN3 as a bonus. I don't want any of the "linear" networks as I already have them from other sources (they just duplicate and mess up recordings, etc.).

I tried, including (as shown in the filter audit), excluding those networks, and with/without require espn plus with the same results (that one I don't really understand how it works with the others).

Ahh. It is very confusing on how ESPN tags their events. Try this (I’ll work on making that clearer as your case seems like it’ll be a common usage).

Your filters aren’t “broken”; the combo you picked just matches zero events. In the data, ESPN+ isn’t tagged as network_short = "ESPN+" — it’s tagged via packages = ["ESPN_PLUS"] and usually has a blank network name. Linear channels (ESPN, ESPN2, ESPN3, etc.) have a real network_short but an empty packages field. So when you say “Networks: espn+, espn3 and ESPN+ Required: true”, nothing can satisfy both rules at once. The code sees Included: 0 and, for safety, doesn’t delete anything, so your guide looks unfiltered.

For what you want (“ESPN+ + ESPN3, no other linear”), today you basically have two workable options:
• ESPN+ only (simplest & most reliable):


FILTER_REQUIRE_ESPN_PLUS=true
FILTER_ENABLED_NETWORKS=
FILTER_EXCLUDE_NETWORKS=

  • or if u want ESPN+ + ESPN3, drop other linears (no ESPN+ requirement, just an exclude list):

FILTER_REQUIRE_ESPN_PLUS=false
FILTER_EXCLUDE_NETWORKS=ESPN,ESPN2,ESPNU,ESPNEWS,ESPNDEPORTES,SECN,SECN+,ACCN,ACCNX,@ESPN,ESPNUnlimited

1 Like

The first one using ESPN_PLUS=true did not work. Same result with the "Total events: 885, Included: 0, Filtered out: 885".

The second example WORKED! [filter] Removed 405 events that didn't pass filters
[filter] Total events: 883, Included: 478, Filtered out: 405

It did let through ESPN Deportes, but I think I know why that is like it is.

thanks for testing. i'll clean that up for future users (it confuses me too-- maybe I could write up some sample configs that are likely case scenarios), and check into that Espn Deportes glitch.