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

Using the adbtuner:development version pushed yesterday, I've been testing this first-of-its-kind Custom Config for clearing both the Profile screen, and the Watch Live screen in Paramount+.

The Paramount+ app can take a while at times to open, so I've set the check time pretty high atm -- however, I'm guessing @turtletank will tighten this up such that if a match is found earlier, the appropriate keyevent will be sent sooner.

For now though, here it is, for the interested. I'll roll this updated config into Project One-Click, once the timing is sorted out:

{
    "name": "FruitDeepLinks - Parmount+ v3.0 (FireTV and AndroidTV)",
    "author": "bnhf",
    "version": "4.0",
    "description": "Paramount+ for FruitDeepLinks with Profile and Live feed detection.",
    "uuid": "62a01c95-94f8-41b7-b56b-4838859ab42d",
    "global_options": {
        "wait_for_video_playback_detection": false,
        "use_fixed_delay": true,
        "fixed_delay_seconds": 5,
        "check_for_and_clear_whos_watching_prompts": true,
        "wait_after_post_playback_start_commands_seconds": 0
    },
    "pre_tune_commands": [
        "input keyevent KEYCODE_MEDIA_STOP",
        "am force-stop ||TARGET_PACKAGE_NAME||"
    ],
    "tune_commands": [
        "am start -W -a android.intent.action.VIEW -d '||TARGET_URL_OR_IDENTIFIER||' '||TARGET_PACKAGE_NAME||'"
    ],
    "tune_match_text_commands": [
        {
            "match_text": [
                "who's watching",
                "add profile",
                "edit profiles",
                "watch live",
                "start from beginning"
            ],
            "commands": [
                "input keyevent KEYCODE_DPAD_CENTER"
            ],
            "check_after_seconds": 5
        }
    ],
    "post_playback_start_commands": [],
    "post_tune_commands": [
        "input keyevent KEYCODE_HOME",
        "am force-stop ||TARGET_PACKAGE_NAME||"
    ],
    "timed_keep_active_commands": []
}

EDIT: Timing issues sorted -- this is working very well on a FireStick 4K Max Gen2. Pull the -2 release from today, and use the updated config here.

Is anybody finding events on Prime Video that don't require another subscription through Prime? TNF maybe? Anything else?

EDIT: Can existing subscriptions be linked to Prime?

Only NBALP can but thats it.

Is there a way to filter out the Prime Video events that require an add-on subscription?

:+1:

I've had good results with all of the ESPN events that I've tried since updating.

1 Like

Nothing definitive in the raw data that has caught my eye yet. Take a look at event inspector for an Amazon event and see if you guys can notice anything I’m missing in the json.

@KineticMan you may need to fix your NBA end of things via CC4C. It's pretty simple for that

ADB
gametime://game/0022500505

CC4C
https://www.nba.com/game/0022500505

Trying to use the multisource lanes here and I couldnt get NBA stuff to work as I get 404 errors. I got a GPU on hand so it doesn't hurt to have some more tuner options

to confirm, you want NBA playables for CC4C to return this schema?

https://www.nba.com/game/0022500505

yep. I find that works for NBA

np - easy enough. will push in next update.

Not too sure why this is happening as Peacock fail to play back the stream

This started happening for me during live events in the last day or so while using the app directly. I have an ad-blocker running so I assume that they added a new required URL that needs to be whitelisted.

1 Like

i havent changed anything specifically to Peacock... see if you can working URL and compare it to the scraped one.

1 Like

probably of low value, but thought i'd mention... went to event inspector and noticed Marquee was listed under services. looks like apple is connected to Marquee (chicago regional sports). don't know if it's a test or not (says Bears vs Bears), but i'm adding them to provider list. Might be of interest to someone!
go cubs go

Odd thing on Espn channels, I can play most women's or men's basketball games, and most NHL games. But some games, like USC vs TCU football game or Louisville vs Cal basketball game, it takes me to landing page where I need to click "Watch" and then a couple more clicks to start the game.

1 Like

You on newest version? I did an update to improve on espn playables.

Pretty certain I am, updated on 12/27. Just checked for newer version and didn't find anything newer. Also, I'm using the cc4c version.

I have a couple of questions if I may, and if I am being clueless feel free to mock me openly.

  1. I noticed the filters I have selected for Sports / Leagues are not being applied to the multisource_lanes.m3u output. The output is showing many events for leagues and sports that I have disabled. Is that by design? The filters are working fine in the direct.m3u output.

  2. For the direct.m3u output, I have a source in CDVR setup to use a specific starting channel number (5000). However, I noticed that each day the channel numbers are not getting re-used for new events. New events each day are now up to around channel number 5600, I think because CDVR is saving the channel numbers in the mapping from previous events. Is there any way to select a starting channel number for the direct.m3u output (similar to multisource_lanes.m3u)?

Thank you.