FruitDeepLinks — Universal Sports Aggregator for Channels DVR

Yes.
That format opens directly to the live game video

If it’s easier you can drop the second string of numbers - that opened the video as well.

play.hbomax.com/video/watch-sport/10440061-0516-538b-a098-9f71e1edfc33

Ie can drop if not in the original scrape

/341d89ed-7eb9-4c01-9431-b46ef64529e9

I'm curious, are people seeing the correct providers listed for this weekend's NFL games in Event Inspector? For some reason, I am having this issue again where providers are either missing or inaccurate for some events and the only way to correct is to wipe the database and start over.
For example, this morning all the NFL games for Sat and Sun where showing nflctv only for the provider in event inspector. After wiping the /data directory and doing a fresh scrape, I now see all the games are showing the correct applicable providers (peacock_web, cbssportsapp, aiv, etc along with nflctv). All overnight scrapes throughout the week have been showing as successful.

I'm thinking there must be something amiss with my setup where once the event is inserted into the db, any provider changes/updates are not getting captured as it gets closer to the actual event. My setup is pretty straightforward, I am using the docker compose method on Debian Bullseye, and keeping up with the updated docker images.

Anyway, just wondering if anyone else is seeing the same... Thanks!

well ... certainly possible. I personally haven't seen this, but I don't use all the services.

it's possible that additional playables are added AFTER initial scrape. for example, maybe on Monday it sees the NFL game and only has one playable. then closer to game time, additional playables are added and the scraper doesnt add those to DB.

let me trace this down- if thats it, it is possible to have the scraper check events more often and insert in the DB.

Prior to the latest update, Fox started fine, but now it goes to a landing page where you have to pick an event.

i didnt change anything with Fox-- if you give me working html schema, i can implement it.

Sorry, user error! It was a game on Fox (Alt) which I'm not sure what that is. Regular Fox works fine.

foxone:// = FOX Sports (App)
Channel-based: foxone://channel/FS1

fsapp:// = FOX Sports (Alt)
Event-based: fsapp://live/FS1?eventId=...

when u say it didnt work, is that from Chrome Capture, or direct streamlinks?

Chrome Capture. Thanks for the explanation.

tnx -- right now, I have them both exporting the same URL which obviously isn't correct. I don't have Fox Sports, so if you figure out what it should look like (by using Chrome), let me know and i'll update it for everyone!

What's funny is that if I hover over the Rams/Panthers game on the website, it shows the link as foxsports.com/live/kdfx-cd. But when I click on the link to play it, it goes to Los Angeles Rams vs. Carolina Panthers - Live Score - January 10, 2026 | FOX Sports. Then I have to click on the play button, then the fullscreen button.

edit--> nice catch! so the logic worked like this... scraper finds event 123 on Monday then upgrades all the known playables at that time. next scrape, it ignores event 123 even if new playables added. it was setup like that as a time saver, but didnt consider that new information would be added over the week.

i am adding logic now to update the DB if new information on an event is added.

1 Like

Thanks! Yeah, I think it is common during the NFL playoffs to sometimes change time slots for certain upcoming games, which also affects the networks they are on.

2 Likes

pushed a patch... basically now, the scraper will upgrade every event not refreshed within last 23 hours. So, basically, every event.... side effect- full scrape will be slower, BUT i think its the only way to fix issues like this..

My goal is to get it to rescrape every event that starts WITHIN 24 hours of start time, but that's going to take a bit of an overhaul of the DB, but this update is fine as i assume most folks only update middle of night anyway so speed isn't a major concern.

@KineticMan I'm testing NBA deeplinks for ADB lanes. Doesn't work as is. So I created a testing channel in ADBTuner and this schema works: gametime://game/0022500553

When used as is currently, Deeplink: gametime://game/0022500553?source=atv-search
they don't work. So it seems that what is the question mark and after needs to be stripped out. I also tested https links and they don't work either with ADBTuner. If you could try and change when you get a chance, I would test out for you.

all set... pushed update- you'll probably need to run a refresh for the fix to kick in (no scrape needed)

I updated this -- I dont have that additional numbers in the scrape, so just dropped those. let me know if thats what you expected!

Awesome! It works! NBA app can now be used with ADBTuner.

Here is the config file I made that works for me to get past the watch live button screen:

{
    "name": "FruitDeepLinks - NBA",
    "author": "nateg",
    "version": "1.0",
    "description": "NBA for FruitDeepLinks with select for tuning to the Live feed.",
    "uuid": "599c8090-0e83-4a75-9c8b-69494d1a2d75",
    "global_options": {
        "wait_for_video_playback_detection": false,
        "use_fixed_delay": true,
        "fixed_delay_seconds": 10,
        "check_for_and_clear_whos_watching_prompts": false,
        "wait_after_post_playback_start_commands_seconds": 0
    },
    "pre_tune_commands": [
        "input keyevent KEYCODE_MEDIA_STOP",
        "am force-stop '||TARGET_PACKAGE_NAME||'",
        "sleep 1"
    ],
    "tune_commands": [
        "am start -W -a android.intent.action.VIEW -d '||TARGET_URL_OR_IDENTIFIER||' '||TARGET_PACKAGE_NAME||'"
    ],
    "post_playback_start_commands": [
        "input keyevent KEYCODE_DPAD_CENTER"
    ],
    "post_tune_commands": [
        "am force-stop '||TARGET_PACKAGE_NAME||'",
        "input keyevent KEYCODE_HOME"
    ]
}
1 Like

Meant to ask-- if you figure out what the HTML schema should be, that'd be helpful for CC4C users too

Wasn’t that part already sorted out here:

Ohh yea. Ignore me. Carry on.