Thanks! HBO Max app. They called it barstool sports for a while, but often it is a TNT feed. Part of the same company for at least a while still probably. There is currently a college basketball game which is the TNT feed. Not my bag, but I also see an AEW wrestling event happening live right now. Live sports are available for non-ad version of subscribers.
Virtual Channels + Streamlink + Client Detection (tested on tvOS) coming real soon!
Channels DVR won’t let you attach deeplinks to individual programs (only channels), so I built a workaround.
When you tune to something like “Fruit Lane 5”, the channel serves a short black HLS video while the server figures out which device is actually watching (by polling the Channels client API on port 57000). Once it detects lane 5, it updates the matching lane5.strmlnk with the current event’s deeplink (ESPN+, Peacock, etc.), uses Stream Link Manager’s fast reprocess endpoint (PUT /dvr/files/{id}/reprocess) to refresh just that one file in ~1–2 seconds, then triggers playback — and the target app launches. Takes about 5-10 seconds from clicking the event to the deeplink app opening.
Only tested on tvOS so far, but it’s working great and I’m ridiculously excited about it.
Perfect for those without ADB setup and want to have virtual channels without having 150 channels with only one event.
Big thanks to @babsonnexus for helping me.
An update on the automated ADBTuner integration for FruitDeepLInks via Project One-Click:
-
ESPN looks to be working well, I just tested all 5 events that are live now -- and they all tuned and advanced to live.
-
Paramount+ has had basic testing (the app opens), but it'll be a few hours yet before I have a live event to confirm full functionality.
-
Prime Video is a bit of a mystery atm, as
aiv://schemes don't appear to work, and I haven't been able to find an alternative.
Once I have at least two providers up-and-running and confirmed, I'll publish in the hopes of getting a few other people in on the fun. 
When published, you'll use this same Action to create everything you'll need for a specific provider:
ESPN:
Paramount+:
I have a guess on those "AIV" for Android... using this event as example, I wonder if Fire/Android just expects a HTTP link.
"provider_guess": "Amazon Prime Video",
"serviceName": NaN,
"title": "Cavaliers vs. Bulls",
"channelId": "tvs.sbd.12962",
"scheme": "aiv",
"path": "$[312].raw_data.data.playables[6].punchoutUrls.open",
"punchout_url": "aiv://aiv/detail?gti=amzn1.dv.gti.10fd272d-309e-427a-87b6-6289003e2ccb&action=watch&type=live&territory=US&time=live&broadcast=amzn1.dv.gti.c96aa821-e6d8-4e68-8ea9-5f4359410f8e&refMarker=atv_dvm_liv_apl_us_bd_l_src_av",
"parsed": {
"gti": "amzn1.dv.gti.10fd272d-309e-427a-87b6-6289003e2ccb",
"broadcast_gti": "amzn1.dv.gti.c96aa821-e6d8-4e68-8ea9-5f4359410f8e",
"action": "watch",
"type": "live",
"territory": "US"
},
"best_guess_http": "https://app.primevideo.com/detail?gti=amzn1.dv.gti.10fd272d-309e-427a-87b6-6289003e2ccb"
Punchout_URL is what the scrape grabs. I took the GTI field and put into HTTPS format. I wonder if we fed that best_guess_HTTP schema to Fire/Android, it'd fire up? I used something similar for Apple MLS that just fed straight HTTP into Firestick and it opened AppleTV app and went to event.
Side note- I've been trying to guess all the HTTP schema for all these deeplinks to get the lanes hack to work on Firestick. Mixed bag so far.
The Fruit scraped deeplink I tried (the only one active atm) didn't work:
am start -W -a android.intent.action.VIEW -d 'pplus://www.paramountplus.com/live-tv/stream/efl-cup/dcc7c7f7-a4da-4a87-8bd6-09dfa0b6cc9c?searchReferral=appleatv&source=spotlight' 'com.cbs.ott'
I tried just changing the pplus:// to an https://, but that didn't work either.
However, going to the P+ website, and grabbing the link while playing the event did work on the FireStck:
am start -W -a android.intent.action.VIEW -d 'https://www.paramountplus.com/shows/video/p3GpRvoH5_A3ZDeaxsV5B4jbrxmozsTg/' 'com.cbs.ott'
Totally different resources IDs though...
This looks like it'll work, though I'm not sure the package name to use. I launched it like this:
am start -d "https://app.primevideo.com/detail?gti=amzn1.dv.gti.10fd272d-309e-427a-87b6-6289003e2ccb"
And then confirmed the app to use on the home screen. Hopefully we can figure out the package name (it's a system app, not 3rd party) so that choosing by app name on the home screen isn't required.
This launch got me to a screen confirming the game (including teams playing), but it's in the future, and requires NBA league pass -- so not a 100% confirmation, but everything looked correct and very promising.
I have noticed some of these sites come up with "share links" that are short lived URLs to the events. I suspect that may be the case with PPLUS. But, I'm not throwing in the towel on this one ... let me do some further recon.
Paramount+ works for me on my Shield as does ESPN. I'm not showing anything on Peacock or Prime, so I can't check those yet.
Very cool implementation.
Does this limit the ‘Lanes’ to those devices only on your home network?
Unfortunately, yes. And only works for appleTV. Not by choice- just only “hack” I could figure out.
And I didn’t forget about you- I’m just going to add your service to this project.
would a "url" style API call be helpful? like, Obviously, we'll have to audit these HTTP style links that it generates but starting to think it may be our only way to make Android compability work with some of these deeplinks.
ie
/api/adb/lanes/<provider_code>/<lane_number>/deeplink?format=html
No worries at all! Super appreciative of your help!
So was a folder of .strmlnk files for each lane with a script to update the files at the end of each programme not feasible?
Yes, that's what I ended up doing. It works perfect on AppleTV -- just that Firestick doesn't seem to like my hack for some reason. I suspect it has to do with what @bnhf has noticed that Android prefers a different schema than tvOS does. It'll take some work to make this cross compatible, but I'll keep working on it.
Personally, I have some Firesticks (as well as apple TVs) so I'm motiviated to figure it out too!
Oh right I got you
Yes had noticed some deeplinks are different on android.
I didn’t think strmlnk channels were available on android?
That should address the issue with Prime Video -- so, yes please!
EDIT: Could you return the same JSON style as format=json, but with an https:// scheme deeplink instead?
# JSON format
curl "$BASE/api/adb/lanes/sportscenter/1/deeplink?format=json&deeplink_format=http"
# Returns: {"status": "success", "deeplink": "https://...", "deeplink_format": "http", ...}
got it tee'ed up for next release (tidying some things up). Also, as we figure out more HTTP-style endpoints for these, it'll be easy to add (amazon only one we know for sure yet)
────────────────────────────────────────────────────────────────────────────────
Provider: aiv (651 unique deeplinks)
────────────────────────────────────────────────────────────────────────────────
✓ CONVERTED (used 1x)
FROM: aiv://aiv/detail?gti=amzn1.dv.gti.ffff786f-2722-49c8-a67a-a37f1dc68492&action=watch&type=l...
TO: https://app.primevideo.com/detail?gti=amzn1.dv.gti.ffff786f-2722-49c8-a67a-a37f1dc68492
✓ CONVERTED (used 1x)
FROM: aiv://aiv/detail?gti=amzn1.dv.gti.ffff786f-2722-49c8-a67a-a37f1dc68492&action=watch&type=l...
TO: https://app.primevideo.com/detail?gti=amzn1.dv.gti.ffff786f-2722-49c8-a67a-a37f1dc68492
✓ CONVERTED (used 1x)
FROM: aiv://aiv/detail?gti=amzn1.dv.gti.ffff786f-2722-49c8-a67a-a37f1dc68492&action=watch&type=l...
TO: https://app.primevideo.com/detail?gti=amzn1.dv.gti.ffff786f-2722-49c8-a67a-a37f1dc68492
... and 648 more unique deeplinks
oh yea there's a ton of strmlink available for android... our current dilema is fruit scrape returns schema in tvOS format. We have to detective a way to convert them to Android style. Every provider is different..
FruitDeepLinks Update — December 2025
Big month for FruitDeepLinks: international streaming support, a batch of critical bug fixes, and a brand-new way to launch deeplinks from Channels DVR without needing ADB.
New: Kayo Sports Integration
FruitDeepLinks now supports Kayo Sports, bringing major Australian sports coverage into the guide (Cricket — Big Bash League / The Ashes / internationals, AFL, NRL, NBA, NFL, Boxing, Wrestling, Golf, Darts, and more).
Highlights
- Kayo events are scraped daily
- Configurable lookahead via
KAYO_DAYS(default 7 days) - Events include proper Kayo web deeplinks
- Fully integrated with the existing Filter UI
- Total supported services is now 19+
Critical Bug Fixes (affects all services)
Kayo integration helped surface a few issues that impacted multiple providers:
-
Fixed a double-filtering bug
Web-based deeplinks (Peacock Web, Max, Kayo) were sometimes being filtered out even when enabled. Fixed infilter_integration.py. -
Sport name normalization
Sports filter values are now normalized (no more duplicates likefootballvsFootball). -
Filters page save issue fixed
A JavaScript error that could prevent saving settings has been resolved.
New Build Feature: Virtual Channels + Streamlink + Client Detection (tvOS-tested)
This is now included in the new build.
Channels DVR won’t let you attach deeplinks to individual programs (only channels), so FruitDeepLinks now includes a workaround:
- Tune to something like “Fruit Lane 5”
- That lane serves a short black HLS video while detection happens
- The server polls the Channels client API (port 57000) to figure out which device is actually watching
- Once it identifies lane 5, it updates
lane5.strmlnkwith the current event’s deeplink (ESPN+, Peacock, etc.) - It then hits Stream Link Manager’s fast reprocess endpoint:
PUT /dvr/files/{id}/reprocess
…to refresh just that single file in ~1–2 seconds - Playback triggers and the target app opens
Typical flow is about 5–10 seconds from clicking the event to the streaming app launching.
Status: Works reliably on tvOS right now. Android testing is in progress (expect some flakiness until that’s fully dialed in).
Huge thanks to @babsonnexus for helping me get this across the finish line. 
What’s Next
These improvements make it much easier to add additional services. I documented the integration steps in ADDING_NEW_STREAMING_SERVICE.md for contributors. Optus Sport / beIN Sports / other regional providers should be much more straightforward to plug in now.
How to Update
Pull the latest changes from the cdvr-detector-integration branch and rebuild your container.
Kayo is enabled by default — just configure provider filters in the web UI to match your subscriptions. 
hey, fruit already get max/tnt -- are you saying it's missing some events?
The aussies are gonna pleased with that one...

