FruitDeepLinks — Universal Sports Aggregator for Channels DVR

ADB testers- please grab fresh pull and test this .. I was giving false ESPN watch endpoints from this morning update.

Turns out ESPN provides multiple different IDs for each event, and we were storing the wrong one. The event record IDs from ESPN's Graph API don't actually work for playback - they throw entitlement errors. The actual playback IDs are buried in the feed URLs.

So if you were seeing ESPN deeplinks fail with "content not available" errors, that's why. The enrichment script was matching events correctly but grabbing the event record ID instead of the playback ID.

Fixed it to extract the playback ID directly from ESPN's feed URLs. For events with multiple feeds (like different camera angles or language options), we now consistently pick the first one, which appears to be the canonical/primary feed.

Tested on the Connecticut vs Army game - was using a broken ID before, now uses the correct playback ID and launches properly.

If you've already run the enrichment, just run it again and it'll update all your ESPN events with the correct IDs:

docker exec fruitdeeplinks python3 /app/bin/fruit_enrich_espn.py --fruit-db /app/data/fruit_events.db --espn-db /app/data/espn_graph.db

Match rate should stay the same (~75%), but now those matched events will actually work.

Does anybody have a good config for the NBA app? I'm trying to use adbtuner's default configuration and that doesn't work. The streamlinks only just opens the app