FruitDeepLinks — Universal Sports Aggregator for Channels DVR

Oh, all right. Fine. I'll install Olive Tin and Project-One-Click. As long as it gets along with what's already there.

There will still be plenty of chances to get your hands dirty. There's FDL setup to do (and get right), there's encoder configuration, and connected streaming stick setup (app logins and such). Plus review of everything that's been done by the Project One-Click Action. :slight_smile:

1 Like

A post was merged into an existing topic: OliveTin for Channels: An Interface for Misc Channels DVR Scripts & Tricks

Running FDL with ADBTuner the past few days.

Was watching (while recording) the LSU vs Northwestern baseball game. By the web guide, it was scheduled to go 3 hr 5 min. For my series pass, I extend for 30 minutes because games always go long. At the 3 hr 5 min point, it switches to the Iowa State vs Arizona Basketball game. It continues to record until I stop recording.

Is there a way to extend the FDL data by 30 or 60 minutes so games that are recording will finish up? Post padding for games would be nice.

Edit: I think I found it. I need to add an environment variable.

Question for the braintrust.

I have multiple Channel TV passes set up to record shows with a TeamID, e.g. 3898 SC Softball and 1846 SC Women's Basketball. Now that I have an ESPN lane set up in ADBTuner and FruitDeepLinks providing scheduling information, I'm seeing games in the schedule... but the Passes are not picking up these for recording (and recording these passes is the entire point of this expedition into DFL and ADBTuner.)

I pulled the JSON for one such game in DFL and looked for the teamid that should be in the JSON and it was not there, nor was there any other field that looked like it might be a teamid from some other source.... there is this ID "umc.cst.yg7hptch7dg690hbbhq6wtf9" in the competitors array element.

Obviously this was in the ESPN TVE feed information and it worked for the linear channel games but I'm not sure if it worked for the brief period that I had EplusTV working.

Game JSON:

{
  "best": {
    "deeplink": "sportscenter://x-callback-url/showWatchStream?playID=ec5927e0-8744-4bad-9b81-df2ceeefccd0",
    "deeplink_source": "ESPN Watch Graph",
    "espn_graph_id": "ec5927e0-8744-4bad-9b81-df2ceeefccd0",
    "http_deeplink_url": null,
    "logical_service": "espn_linear",
    "provider": "sportscenter",
    "reason": "Top of filtered playables order"
  },
  "event": {
    "airing_type": "live",
    "channel_name": "ESPN",
    "channel_provider_id": "espn-plus",
    "classification_json": "[{\"type\": \"sport\", \"value\": \"Softball\"}, {\"type\": \"league\", \"value\": \"College Softball\"}]",
    "content_segments_json": "[]",
    "created_ms": null,
    "created_utc": null,
    "end_ms": 1772993100000,
    "end_utc": "2026-03-08T18:05:00+00:00",
    "genres_json": "[\"Softball\"]",
    "hero_image_url": "https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/1280x720KF.TVALC03.jpg",
    "id": "appletv-umc.cse.5ydq22jsveywojac4x1tvcujt",
    "is_free": 0,
    "is_premium": 1,
    "last_seen_utc": "2026-03-04T07:41:39+00:00",
    "pvid": "umc.cse.5ydq22jsveywojac4x1tvcujt",
    "raw_attributes_json": "{\"images\": {\"contentImage\": {\"height\": 2160, \"isP3\": false, \"joeColor\": \"b:rgb(42,94,132) p:rgb(102,188,249) s:rgb(102,188,249) t:rgb(90,169,226) q:rgb(90,169,226)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/eDCjDa-WKqCan005Zt6HHg/{w}x{h}sr.{f}\", \"width\": 3840}, \"contentImageLive\": {\"height\": 2160, \"isP3\": false, \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}sr.{f}\", \"width\": 3840}, \"contentImagePost\": {\"height\": 2160, \"isP3\": false, \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}sr.{f}\", \"width\": 3840}, \"leagueLogo\": {\"height\": 760, \"joeColor\": \"b:rgb(13,33,49) p:rgb(236,240,244) s:rgb(237,238,239) t:rgb(192,199,205) q:rgb(192,197,201)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/AC8X3WF33GxmQ0shCma_Gg/{w}x{h}bb.{f}\", \"width\": 760}, \"shelfItemImage\": {\"height\": 2160, \"isP3\": false, \"joeColor\": \"b:rgb(42,94,132) p:rgb(102,188,249) s:rgb(102,188,249) t:rgb(90,169,226) q:rgb(90,169,226)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/eDCjDa-WKqCan005Zt6HHg/{w}x{h}Sports.TVALC01.{f}\", \"width\": 3840}, \"shelfItemImageLive\": {\"height\": 2160, \"isP3\": false, \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}KF.TVALC03.{f}\", \"width\": 3840}, \"shelfItemImagePost\": {\"height\": 2160, \"isP3\": false, \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}KF.TVALC03.{f}\", \"width\": 3840}}, \"competitors\": [{\"abbreviation\": \"TEX\", \"backgroundColor\": \"#BF5700\", \"id\": \"umc.cst.31aauykvtdfmc0qydiporrx0j\", \"images\": {\"masterArtLogo\": {\"height\": 5700, \"joeColor\": \"b:rgb(152,69,0) p:rgb(249,245,242) s:rgb(244,236,229) t:rgb(230,210,193) q:rgb(226,203,183)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/U7wPlD2To_0tk83D0BY29A/{w}x{h}{c}.{f}\", \"width\": 6448}, \"teamLogo\": {\"height\": 760, \"isP3\": false, \"joeColor\": \"b:rgb(158,70,1) p:rgb(250,245,242) s:rgb(245,236,229) t:rgb(231,210,194) q:rgb(227,203,184)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/X_KUzP7ZW5AKc_NZyo8Q_w/{w}x{h}.{f}\", \"width\": 760}, \"teamLogoDark\": {\"height\": 760, \"isP3\": false, \"joeColor\": \"b:rgb(158,70,1) p:rgb(250,245,242) s:rgb(245,236,229) t:rgb(231,210,194) q:rgb(227,203,184)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/X_KUzP7ZW5AKc_NZyo8Q_w/{w}x{h}.{f}\", \"width\": 760}, \"teamLogoLight\": {\"height\": 760, \"isP3\": false, \"joeColor\": \"b:rgb(158,70,1) p:rgb(250,245,242) s:rgb(245,236,229) t:rgb(231,210,194) q:rgb(227,203,184)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/X_KUzP7ZW5AKc_NZyo8Q_w/{w}x{h}.{f}\", \"width\": 760}}, \"isHome\": false, \"leagueId\": \"umc.csl.68xersvuh1ma3ijo7dphbd9ij\", \"name\": \"Texas Longhorns\", \"nickname\": \"Longhorns\", \"shortName\": \"Texas\", \"type\": \"Team\"}, {\"abbreviation\": \"SCAR\", \"backgroundColor\": \"#73000a\", \"id\": \"umc.cst.yg7hptch7dg690hbbhq6wtf9\", \"images\": {\"masterArtLogo\": {\"height\": 5700, \"joeColor\": \"b:rgb(115,0,10) p:rgb(240,229,230) s:rgb(243,134,166) t:rgb(215,183,186) q:rgb(217,107,134)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/YVGEO8AlZBCyNPKICxrMKA/{w}x{h}{c}.{f}\", \"width\": 6448}, \"teamLogo\": {\"height\": 760, \"isP3\": false, \"joeColor\": \"b:rgb(35,30,31) p:rgb(243,235,237) s:rgb(223,195,204) t:rgb(201,194,196) q:rgb(185,162,169)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/tc-ZmKfy23qJXOuA3n3i6w/{w}x{h}.{f}\", \"width\": 760}, \"teamLogoDark\": {\"height\": 760, \"isP3\": false, \"joeColor\": \"b:rgb(35,30,31) p:rgb(243,235,237) s:rgb(223,195,204) t:rgb(201,194,196) q:rgb(185,162,169)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/tc-ZmKfy23qJXOuA3n3i6w/{w}x{h}.{f}\", \"width\": 760}, \"teamLogoLight\": {\"height\": 760, \"isP3\": false, \"joeColor\": \"b:rgb(35,30,31) p:rgb(243,235,237) s:rgb(223,195,204) t:rgb(201,194,196) q:rgb(185,162,169)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/tc-ZmKfy23qJXOuA3n3i6w/{w}x{h}.{f}\", \"width\": 760}}, \"isHome\": false, \"leagueId\": \"umc.csl.68xersvuh1ma3ijo7dphbd9ij\", \"name\": \"South Carolina Gamecocks\", \"nickname\": \"Gamecocks\", \"shortName\": \"SC\", \"type\": \"Team\"}], \"channels\": [{\"appAdamIds\": [\"317469184\"], \"appAgeRestrictionRatingValue\": 300, \"appBundleIds\": [\"com.espn.ScoreCenter\"], \"appName\": \"ESPN: Live Sports & Scores\", \"appStoreUrl\": \"https://itunes.apple.com/app/id317469184?mt=8\", \"hexColor\": \"#EF4135\", \"id\": \"tvs.sbd.30061\", \"images\": {\"appIcon\": {\"height\": 768, \"supportsLayeredImage\": true, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/c7/85/a8/c785a884-1e56-7259-8f7c-0d3cab0c488f/App_Icon_-_Small-marketing.lsr/{w}x{h}.{f}\", \"width\": 1280}, \"logoGlyph\": {\"height\": 58, \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/UETqn_AmS3bWeVD1uzaDXA/{w}x{h}.{f}\", \"width\": 110}, \"squareColorLogo\": {\"height\": 2963, \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/55bIoUyMmJKUAs6qbfcA-g/{w}x{h}SWL.TVARHBL1.{f}?bColor=EF4135\", \"width\": 2963}, \"whiteLogo\": {\"height\": 742, \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/TFnNkhwyYGtAJ2k_ynBZgw/{w}x{h}.{f}\", \"width\": 3000}}, \"isApSubscription\": false, \"isAppleMusicImmersiveBrand\": false, \"isAppleTvPlus\": false, \"isConsented\": false, \"isFirstParty\": false, \"isInstalled\": false, \"isItunes\": false, \"isMountainBrand\": false, \"isStaging\": false, \"isSubscribed\": false, \"isTvAppBrand\": false, \"isWatchlistEnabled\": true, \"minWatchlistAppVersion\": \"6.4.0\", \"name\": \"ESPN\", \"shouldTrackPlayActivity\": true, \"title\": \"ESPN\", \"type\": \"Brand\", \"url\": \"https://tv.apple.com/us/channel/espn/tvs.sbd.30061\"}], \"playables\": {\"tvs.sbd.30061:550bb999-ed7b-4f01-8ab9-8e4ab9a3f36d:2d654663\": {\"airingType\": \"Live\", \"canonicalId\": \"umc.cse.5ydq22jsveywojac4x1tvcujt\", \"canonicalMetadata\": {\"images\": {\"contentImage\": {\"height\": 2160, \"joeColor\": \"b:rgb(42,94,132) p:rgb(102,188,249) s:rgb(102,188,249) t:rgb(90,169,226) q:rgb(90,169,226)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/eDCjDa-WKqCan005Zt6HHg/{w}x{h}Sports.TVALC01.{f}\", \"width\": 3840}, \"posterImageLive\": {\"height\": 2160, \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}sr.{f}\", \"width\": 3840}, \"posterImagePost\": {\"height\": 2160, \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\", \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}KF.TVALC03.{f}\", \"width\": 3840}}, \"leagueName\": \"College Softball\", \"leagueShortName\": \"College Softball\", \"shortTitle\": \"#3 Texas vs. #24 South Carolina\", \"sportName\": \"Softball\", \"venueAddr\": \"Columbia, South Carolina, US\", \"venueName\": \"Carolina Softball Stadium at Beckham Field\"}, \"channelId\": \"tvs.sbd.30061\", \"contentId\": \"umc.cmr.espn.sp.p3vzdcn63cx4zifzl1oejs2r\", \"contentType\": \"SportingEvent\", \"entitlementReason\": \"Unknown\", \"eventTime\": {\"gameKickOffStartTime\": 1772985600000, \"liveBadgeTime\": {\"endTime\": 1772993100000, \"startTime\": 1772985600000}, \"playerInfoDisplayTime\": {\"endTime\": 1772996400000, \"startTime\": 1772985600000}, \"playerInfoTransportBarTime\": {\"endTime\": 1772996400000, \"startTime\": 1772985600000}, \"tuneInTime\": {\"endTime\": 1772993100000, \"startTime\": 1772985600000}}, \"externalId\": \"550bb999-ed7b-4f01-8ab9-8e4ab9a3f36d\", \"externalServiceId\": \"com.espn.service.linear.sec\", \"id\": \"tvs.sbd.30061:550bb999-ed7b-4f01-8ab9-8e4ab9a3f36d:2d654663\", \"isConsented\": false, \"isDownloadable\": false, \"isEligibleForPlayerTabs\": true, \"isEmbargoed\": false, \"isEntitledToPlay\": false, \"isEntitledToPlayOnDevice\": false, \"isGeoRestricted\": false, \"isItunes\": false, \"isKeyPlayAvailable\": false, \"isUpgradeEligible\": false, \"locales\": [{\"displayName\": \"English (United States)\", \"locale\": \"en_US\"}], \"makeAdditionalPlayerTabsRequest\": false, \"playablePassThrough\": \"eyJwbGF5YWJsZUlkIjoidHZzLnNiZC4zMDA2MTo1NTBiYjk5OS1lZDdiLTRmMDEtOGFiOS04ZTRhYjlhM2YzNmQ6MmQ2NTQ2NjMifQ==\", \"primaryLocale\": {\"displayName\": \"English (United States)\", \"locale\": \"en_US\"}, \"punchoutUrls\": {\"play\": \"sportscenter://x-callback-url/showWatchStream?playChannel=sec&x-source=AppleUMC\"}, \"releaseDate\": 1772985600000, \"requiresLocationConsent\": false, \"serviceId\": \"tvs.lvs.30043\", \"serviceLogo\": {\"height\": 800, \"supportsLayeredImage\": false, \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/OnI1DtPkNUoZ_H-QA0sJ6Q/{w}x{h}.{f}\", \"width\": 2000}, \"serviceName\": \"SEC Network\", \"title\": \"#3 Texas vs. #24 South Carolina\", \"type\": \"Event\"}}, \"sport_name\": \"Softball\", \"league_name\": \"College Softball\", \"apple_tv_url\": \"https://tv.apple.com/us/sporting-event/3-texas-vs-24-south-carolina/umc.cse.5ydq22jsveywojac4x1tvcujt\"}",
    "runtime_secs": 7500,
    "slug": null,
    "start_ms": 1772985600000,
    "start_utc": "2026-03-08T16:00:00+00:00",
    "synopsis": "Softball - (College Softball) - Texas Longhorns vs South Carolina Gamecocks - Available on ESPN",
    "synopsis_brief": "Softball - (College Softball) - Texas Longhorns vs South Carolina Gamecocks - Available on ESPN",
    "title": "College Softball: #3 Texas vs. #24 South Carolina",
    "title_brief": "#3 Texas vs. #24 South Carolina"
  },
  "is_live_now": false,
  "ok": true,
  "playables": [
    {
      "content_id": "umc.cmr.espn.sp.p3vzdcn63cx4zifzl1oejs2r",
      "created_utc": "2026-03-04T07:41:39Z",
      "deeplink_open": null,
      "deeplink_play": "sportscenter://x-callback-url/showWatchStream?playID=550bb999-ed7b-4f01-8ab9-8e4ab9a3f36d",
      "espn_graph_id": "ec5927e0-8744-4bad-9b81-df2ceeefccd0",
      "event_id": "appletv-umc.cse.5ydq22jsveywojac4x1tvcujt",
      "http_deeplink_url": "https://www.espn.com/watch/player/_/id/550bb999-ed7b-4f01-8ab9-8e4ab9a3f36d",
      "locale": null,
      "logical_service": "espn_linear",
      "playable_id": "tvs.sbd.30061:550bb999-ed7b-4f01-8ab9-8e4ab9a3f36d:2d654663",
      "playable_url": null,
      "priority": 0,
      "provider": "sportscenter",
      "service_name": "SEC Network",
      "title": "#3 Texas vs. #24 South Carolina"
    }
  ],
  "pretty_json_fields": [
    {
      "key": "classification_json",
      "value": "[\n  {\n    \"type\": \"sport\",\n    \"value\": \"Softball\"\n  },\n  {\n    \"type\": \"league\",\n    \"value\": \"College Softball\"\n  }\n]"
    },
    {
      "key": "genres_json",
      "value": "[\n  \"Softball\"\n]"
    },
    {
      "key": "content_segments_json",
      "value": "[]"
    },
    {
      "key": "raw_attributes_json",
      "value": "{\n  \"images\": {\n    \"contentImage\": {\n      \"height\": 2160,\n      \"isP3\": false,\n      \"joeColor\": \"b:rgb(42,94,132) p:rgb(102,188,249) s:rgb(102,188,249) t:rgb(90,169,226) q:rgb(90,169,226)\",\n      \"supportsLayeredImage\": false,\n      \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/eDCjDa-WKqCan005Zt6HHg/{w}x{h}sr.{f}\",\n      \"width\": 3840\n    },\n    \"contentImageLive\": {\n      \"height\": 2160,\n      \"isP3\": false,\n      \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\",\n      \"supportsLayeredImage\": false,\n      \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}sr.{f}\",\n      \"width\": 3840\n    },\n    \"contentImagePost\": {\n      \"height\": 2160,\n      \"isP3\": false,\n      \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\",\n      \"supportsLayeredImage\": false,\n      \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}sr.{f}\",\n      \"width\": 3840\n    },\n    \"leagueLogo\": {\n      \"height\": 760,\n      \"joeColor\": \"b:rgb(13,33,49) p:rgb(236,240,244) s:rgb(237,238,239) t:rgb(192,199,205) q:rgb(192,197,201)\",\n      \"supportsLayeredImage\": false,\n      \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/AC8X3WF33GxmQ0shCma_Gg/{w}x{h}bb.{f}\",\n      \"width\": 760\n    },\n    \"shelfItemImage\": {\n      \"height\": 2160,\n      \"isP3\": false,\n      \"joeColor\": \"b:rgb(42,94,132) p:rgb(102,188,249) s:rgb(102,188,249) t:rgb(90,169,226) q:rgb(90,169,226)\",\n      \"supportsLayeredImage\": false,\n      \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/eDCjDa-WKqCan005Zt6HHg/{w}x{h}Sports.TVALC01.{f}\",\n      \"width\": 3840\n    },\n    \"shelfItemImageLive\": {\n      \"height\": 2160,\n      \"isP3\": false,\n      \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\",\n      \"supportsLayeredImage\": false,\n      \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}KF.TVALC03.{f}\",\n      \"width\": 3840\n    },\n    \"shelfItemImagePost\": {\n      \"height\": 2160,\n      \"isP3\": false,\n      \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\",\n      \"supportsLayeredImage\": false,\n      \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}KF.TVALC03.{f}\",\n      \"width\": 3840\n    }\n  },\n  \"competitors\": [\n    {\n      \"abbreviation\": \"TEX\",\n      \"backgroundColor\": \"#BF5700\",\n      \"id\": \"umc.cst.31aauykvtdfmc0qydiporrx0j\",\n      \"images\": {\n        \"masterArtLogo\": {\n          \"height\": 5700,\n          \"joeColor\": \"b:rgb(152,69,0) p:rgb(249,245,242) s:rgb(244,236,229) t:rgb(230,210,193) q:rgb(226,203,183)\",\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/U7wPlD2To_0tk83D0BY29A/{w}x{h}{c}.{f}\",\n          \"width\": 6448\n        },\n        \"teamLogo\": {\n          \"height\": 760,\n          \"isP3\": false,\n          \"joeColor\": \"b:rgb(158,70,1) p:rgb(250,245,242) s:rgb(245,236,229) t:rgb(231,210,194) q:rgb(227,203,184)\",\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/X_KUzP7ZW5AKc_NZyo8Q_w/{w}x{h}.{f}\",\n          \"width\": 760\n        },\n        \"teamLogoDark\": {\n          \"height\": 760,\n          \"isP3\": false,\n          \"joeColor\": \"b:rgb(158,70,1) p:rgb(250,245,242) s:rgb(245,236,229) t:rgb(231,210,194) q:rgb(227,203,184)\",\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/X_KUzP7ZW5AKc_NZyo8Q_w/{w}x{h}.{f}\",\n          \"width\": 760\n        },\n        \"teamLogoLight\": {\n          \"height\": 760,\n          \"isP3\": false,\n          \"joeColor\": \"b:rgb(158,70,1) p:rgb(250,245,242) s:rgb(245,236,229) t:rgb(231,210,194) q:rgb(227,203,184)\",\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/X_KUzP7ZW5AKc_NZyo8Q_w/{w}x{h}.{f}\",\n          \"width\": 760\n        }\n      },\n      \"isHome\": false,\n      \"leagueId\": \"umc.csl.68xersvuh1ma3ijo7dphbd9ij\",\n      \"name\": \"Texas Longhorns\",\n      \"nickname\": \"Longhorns\",\n      \"shortName\": \"Texas\",\n      \"type\": \"Team\"\n    },\n    {\n      \"abbreviation\": \"SCAR\",\n      \"backgroundColor\": \"#73000a\",\n      \"id\": \"umc.cst.yg7hptch7dg690hbbhq6wtf9\",\n      \"images\": {\n        \"masterArtLogo\": {\n          \"height\": 5700,\n          \"joeColor\": \"b:rgb(115,0,10) p:rgb(240,229,230) s:rgb(243,134,166) t:rgb(215,183,186) q:rgb(217,107,134)\",\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/YVGEO8AlZBCyNPKICxrMKA/{w}x{h}{c}.{f}\",\n          \"width\": 6448\n        },\n        \"teamLogo\": {\n          \"height\": 760,\n          \"isP3\": false,\n          \"joeColor\": \"b:rgb(35,30,31) p:rgb(243,235,237) s:rgb(223,195,204) t:rgb(201,194,196) q:rgb(185,162,169)\",\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/tc-ZmKfy23qJXOuA3n3i6w/{w}x{h}.{f}\",\n          \"width\": 760\n        },\n        \"teamLogoDark\": {\n          \"height\": 760,\n          \"isP3\": false,\n          \"joeColor\": \"b:rgb(35,30,31) p:rgb(243,235,237) s:rgb(223,195,204) t:rgb(201,194,196) q:rgb(185,162,169)\",\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/tc-ZmKfy23qJXOuA3n3i6w/{w}x{h}.{f}\",\n          \"width\": 760\n        },\n        \"teamLogoLight\": {\n          \"height\": 760,\n          \"isP3\": false,\n          \"joeColor\": \"b:rgb(35,30,31) p:rgb(243,235,237) s:rgb(223,195,204) t:rgb(201,194,196) q:rgb(185,162,169)\",\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/tc-ZmKfy23qJXOuA3n3i6w/{w}x{h}.{f}\",\n          \"width\": 760\n        }\n      },\n      \"isHome\": false,\n      \"leagueId\": \"umc.csl.68xersvuh1ma3ijo7dphbd9ij\",\n      \"name\": \"South Carolina Gamecocks\",\n      \"nickname\": \"Gamecocks\",\n      \"shortName\": \"SC\",\n      \"type\": \"Team\"\n    }\n  ],\n  \"channels\": [\n    {\n      \"appAdamIds\": [\n        \"317469184\"\n      ],\n      \"appAgeRestrictionRatingValue\": 300,\n      \"appBundleIds\": [\n        \"com.espn.ScoreCenter\"\n      ],\n      \"appName\": \"ESPN: Live Sports & Scores\",\n      \"appStoreUrl\": \"https://itunes.apple.com/app/id317469184?mt=8\",\n      \"hexColor\": \"#EF4135\",\n      \"id\": \"tvs.sbd.30061\",\n      \"images\": {\n        \"appIcon\": {\n          \"height\": 768,\n          \"supportsLayeredImage\": true,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/c7/85/a8/c785a884-1e56-7259-8f7c-0d3cab0c488f/App_Icon_-_Small-marketing.lsr/{w}x{h}.{f}\",\n          \"width\": 1280\n        },\n        \"logoGlyph\": {\n          \"height\": 58,\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/UETqn_AmS3bWeVD1uzaDXA/{w}x{h}.{f}\",\n          \"width\": 110\n        },\n        \"squareColorLogo\": {\n          \"height\": 2963,\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/55bIoUyMmJKUAs6qbfcA-g/{w}x{h}SWL.TVARHBL1.{f}?bColor=EF4135\",\n          \"width\": 2963\n        },\n        \"whiteLogo\": {\n          \"height\": 742,\n          \"supportsLayeredImage\": false,\n          \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/TFnNkhwyYGtAJ2k_ynBZgw/{w}x{h}.{f}\",\n          \"width\": 3000\n        }\n      },\n      \"isApSubscription\": false,\n      \"isAppleMusicImmersiveBrand\": false,\n      \"isAppleTvPlus\": false,\n      \"isConsented\": false,\n      \"isFirstParty\": false,\n      \"isInstalled\": false,\n      \"isItunes\": false,\n      \"isMountainBrand\": false,\n      \"isStaging\": false,\n      \"isSubscribed\": false,\n      \"isTvAppBrand\": false,\n      \"isWatchlistEnabled\": true,\n      \"minWatchlistAppVersion\": \"6.4.0\",\n      \"name\": \"ESPN\",\n      \"shouldTrackPlayActivity\": true,\n      \"title\": \"ESPN\",\n      \"type\": \"Brand\",\n      \"url\": \"https://tv.apple.com/us/channel/espn/tvs.sbd.30061\"\n    }\n  ],\n  \"playables\": {\n    \"tvs.sbd.30061:550bb999-ed7b-4f01-8ab9-8e4ab9a3f36d:2d654663\": {\n      \"airingType\": \"Live\",\n      \"canonicalId\": \"umc.cse.5ydq22jsveywojac4x1tvcujt\",\n      \"canonicalMetadata\": {\n        \"images\": {\n          \"contentImage\": {\n            \"height\": 2160,\n            \"joeColor\": \"b:rgb(42,94,132) p:rgb(102,188,249) s:rgb(102,188,249) t:rgb(90,169,226) q:rgb(90,169,226)\",\n            \"supportsLayeredImage\": false,\n            \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/eDCjDa-WKqCan005Zt6HHg/{w}x{h}Sports.TVALC01.{f}\",\n            \"width\": 3840\n          },\n          \"posterImageLive\": {\n            \"height\": 2160,\n            \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\",\n            \"supportsLayeredImage\": false,\n            \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}sr.{f}\",\n            \"width\": 3840\n          },\n          \"posterImagePost\": {\n            \"height\": 2160,\n            \"joeColor\": \"b:rgb(49,53,56) p:rgb(217,208,199) s:rgb(183,195,209) t:rgb(183,177,171) q:rgb(156,166,178)\",\n            \"supportsLayeredImage\": false,\n            \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/WOdIWO4Yn61r3aloYrPvCw/{w}x{h}KF.TVALC03.{f}\",\n            \"width\": 3840\n          }\n        },\n        \"leagueName\": \"College Softball\",\n        \"leagueShortName\": \"College Softball\",\n        \"shortTitle\": \"#3 Texas vs. #24 South Carolina\",\n        \"sportName\": \"Softball\",\n        \"venueAddr\": \"Columbia, South Carolina, US\",\n        \"venueName\": \"Carolina Softball Stadium at Beckham Field\"\n      },\n      \"channelId\": \"tvs.sbd.30061\",\n      \"contentId\": \"umc.cmr.espn.sp.p3vzdcn63cx4zifzl1oejs2r\",\n      \"contentType\": \"SportingEvent\",\n      \"entitlementReason\": \"Unknown\",\n      \"eventTime\": {\n        \"gameKickOffStartTime\": 1772985600000,\n        \"liveBadgeTime\": {\n          \"endTime\": 1772993100000,\n          \"startTime\": 1772985600000\n        },\n        \"playerInfoDisplayTime\": {\n          \"endTime\": 1772996400000,\n          \"startTime\": 1772985600000\n        },\n        \"playerInfoTransportBarTime\": {\n          \"endTime\": 1772996400000,\n          \"startTime\": 1772985600000\n        },\n        \"tuneInTime\": {\n          \"endTime\": 1772993100000,\n          \"startTime\": 1772985600000\n        }\n      },\n      \"externalId\": \"550bb999-ed7b-4f01-8ab9-8e4ab9a3f36d\",\n      \"externalServiceId\": \"com.espn.service.linear.sec\",\n      \"id\": \"tvs.sbd.30061:550bb999-ed7b-4f01-8ab9-8e4ab9a3f36d:2d654663\",\n      \"isConsented\": false,\n      \"isDownloadable\": false,\n      \"isEligibleForPlayerTabs\": true,\n      \"isEmbargoed\": false,\n      \"isEntitledToPlay\": false,\n      \"isEntitledToPlayOnDevice\": false,\n      \"isGeoRestricted\": false,\n      \"isItunes\": false,\n      \"isKeyPlayAvailable\": false,\n      \"isUpgradeEligible\": false,\n      \"locales\": [\n        {\n          \"displayName\": \"English (United States)\",\n          \"locale\": \"en_US\"\n        }\n      ],\n      \"makeAdditionalPlayerTabsRequest\": false,\n      \"playablePassThrough\": \"eyJwbGF5YWJsZUlkIjoidHZzLnNiZC4zMDA2MTo1NTBiYjk5OS1lZDdiLTRmMDEtOGFiOS04ZTRhYjlhM2YzNmQ6MmQ2NTQ2NjMifQ==\",\n      \"primaryLocale\": {\n        \"displayName\": \"English (United States)\",\n        \"locale\": \"en_US\"\n      },\n      \"punchoutUrls\": {\n        \"play\": \"sportscenter://x-callback-url/showWatchStream?playChannel=sec&x-source=AppleUMC\"\n      },\n      \"releaseDate\": 1772985600000,\n      \"requiresLocationConsent\": false,\n      \"serviceId\": \"tvs.lvs.30043\",\n      \"serviceLogo\": {\n        \"height\": 800,\n        \"supportsLayeredImage\": false,\n        \"url\": \"https://is1-ssl.mzstatic.com/image/thumb/OnI1DtPkNUoZ_H-QA0sJ6Q/{w}x{h}.{f}\",\n        \"width\": 2000\n      },\n      \"serviceName\": \"SEC Network\",\n      \"title\": \"#3 Texas vs. #24 South Carolina\",\n      \"type\": \"Event\"\n    }\n  },\n  \"sport_name\": \"Softball\",\n  \"league_name\": \"College Softball\",\n  \"apple_tv_url\": \"https://tv.apple.com/us/sporting-event/3-texas-vs-24-south-carolina/umc.cse.5ydq22jsveywojac4x1tvcujt\"\n}"
    }
  ],
  "providers": [
    "espn_linear"
  ]
}

Pass that I hoped would record it:
image

So... is this something that might happen someday? Not going to happen? Setup error on my part? Something I might have to squeeze into the tool chain somehow if I could figure out how?

BTW, the beauty of the team id is that Channels recognizes it regardless of what the event title or channel is, so whether it's a tournament, game of the week, or whatever, the team ID is matched and the recording happens. Just using the abbrevation for the school "SCAR" won't get just the sports I want.

Hate to burst your bubble... But, as I understand it, teamIDs come from Gracenote (i think?) and the EPG that FDL generates aren't that rich. I made them with the information I gathered from the scrape and tried to make it as pretty as I could, but it'll never be as rich as Gracenote.

I'll defer to others on ways to work around this, but systematically, FDL will probably never be able to accomplish teamIDs.

1 Like

I've always had passes with "Connecticut" and "UConn" + sports for this reason.

Make sure you use "South Carolina" since your school is neither USC nor Carolina.
(Sorry - too easy)

Make sure you use "South Carolina" since your school is neither USC nor Carolina.

You can take that attitude and hoist a blue flag in LA. I didn't use the USC abbreviation on purpose, though we're more entitled to it than that other school with a mascot named after a product dispensed on bathroom walls.

I could see some sort of mapping from what appears to be an Apple internal code (the one that starts "umc.cst." to the TeamId that CDVR uses.

I think a better solution would be if CDVR would allow you to pass that code, prefix and all, to CDVR and have CDVR accept any arbitrary string as "a" team id, and you just put one for each source you need in a Pass (multiple Passes if necessary). I don't know what the event schema is that you're passing to CDVR and what the requirements are for the TeamId element, nor how CDVR stores that in its database. But it seems somewhat arbitrary that CDVR thinks every data feed would use the Gracenote TeamId format.

EDIT: I see that there's a provision to "map" channels to the standard CDVR guide channels, so that channels can use its own guide data with the TeamID in it. I'm assuming that won't work, even with linear channels, using ADBTuner, because there's not a persistent 1:1 relationship between an ADBTuner lane and a CDVR guide channel, because the first ADBTuner ESPN lane could be ESPN at 6:00 PM and SECN at 9:00 PM.

If you can find a DB of team codes, I'd be happy to try to do something but quick search didn't find anything. I think the Apple internal code is just that - internal to Apple

I'm thinking I could mine the apple feed you're pulling from for a list of sports, team names, and internal Apple IDs to build a mapping list. Next I need some way of pulling the same thing from Gracenote. Assuming I could do that, I could match them up by sport and name and produce a JSON that gives you the one:one mapping.

The obvious answer to getting the Gracenote list would be to sign up for a Gracenote developer account and paying for the access, but that's not attractive for speculative work.

I'm wondering if there's any way to pull a list of events that CDVR sees with team ids? Their Show API doesn't appear to expose the TeamId. Is there an M3U feed that might? This won't be a one-time thing, I'll have to do this 4-6 times through the year before we've gone through all the sports seasons and had at least most of the teams show up in both lists so that they can be matched. We're already losing women's college basketball teams from the schedule for this year as the conference tournaments play out.

UPDATE: The CDVR Grid data has the numbers in it. I'm going to start collecting captures for a a bit. We'll see in a few days how practical this is.

Hi @KineticMan
Apple TV now has F1 broadcasts. Season starts this weekend. Curious if you are seeing that in any of your scans. It looks you are separating MLS and MLB on Apple broadcasts though separate lanes. Would you do something similar for F1?

I'm flumoxed now. There's an event for Friday at Noon EST on the main ESPN channel. I see it in the feed in FDL. It doesn't seem to be coming out in the XML, and I don't understand why not. Tools for running this down?

are you using "lanes" or "Direct" ?
wonder if your "lanes" are full during that time?

Yes. (both). I burned everything to the ground and started over. (I kept the containers, but removed all the sources from CDVR and recreated the lanes using Olive Tin/P1C). I also checked the filters and saw that some new leagues/sports had shown up to mark as unwanted.

It's showing in the XML now and got picked up by CDVR for recording. Not sure I trust it, but... :slight_smile: Here goes.

My nightly gather also crashed with some odd Python errors:

2026-03-05 02:30:41,741 - INFO - === Driver Initialization Complete (system: /usr/bin/chromedriver) ===
[Hybrid] Establishing browser session...
Traceback (most recent call last):
File "/app/bin/apple_scraper_db.py", line 982, in <module>
raise SystemExit(main())
^^^^^^
File "/app/bin/apple_scraper_db.py", line 848, in main
driver.get(SEARCH_URL.format(term="all"))
File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 356, in get
self.execute(Command.GET, {"url": url})
File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 347, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.11/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout: Timed out receiving message from renderer: 300.000
(Session info: chrome=145.0.7632.116)
Stacktrace:
#0 0x561eb7c2339e <unknown>
#1 0x561eb75e5c92 <unknown>
#2 0x561eb75d0c8c <unknown>
#3 0x561eb75d0a79 <unknown>
#4 0x561eb75cf076 <unknown>
#5 0x561eb75cf526 <unknown>
#6 0x561eb75ddb87 <unknown>
#7 0x561eb75f323d <unknown>
#8 0x561eb75f8a5b <unknown>
#9 0x561eb75cfb31 <unknown>
#10 0x561eb75f307f <unknown>
#11 0x561eb7675afa <unknown>
#12 0x561eb7655dc3 <unknown>
#13 0x561eb7625ec5 <unknown>
#14 0x561eb7626ab1 <unknown>
#15 0x561eb7be7780 <unknown>
#16 0x561eb7beaa38 <unknown>
#17 0x561eb7bea4ea <unknown>
#18 0x561eb7beaea5 <unknown>
#19 0x561eb7bd72fb <unknown>
#20 0x561eb7beb207 <unknown>
#21 0x561eb7bbef36 <unknown>
#22 0x561eb7c0feb5 <unknown>
#23 0x561eb7c100ac <unknown>
#24 0x561eb7c21a1f <unknown>
#25 0x7f3486b491f5 <unknown>
[ERROR] Step 1 FAILED with exit code 1
[2026-03-05 02:35:42] [ERROR] Auto refresh failed with code 1
1 Like

I've never seen those errors before, but it's likely your container ran out of memory for some reason. not sure what device your running this on but honestly it doesn't take much horsepower. keep an eye on it for me

System is not very beefy, but also doesn't typically have a lot going on at 2:30 AM. It ran fine this morning.

I didn't get a chance to dig into it, but instead of recording the game on ESPN, it recorded a show on SECNetwork. Title and graphic look correct. I tried to look at it after the fact, but the only scrap of info I've got is that ADBTuner says that it's doing:

Tune ID: 6h4yE994zdUoMr3EY6WAek
Channel: ESPN 15

And I've not been able to find that ID

Sorry - I have too many friends who went to Clemson to not dunk on South Carolina as a force of habit. Plus, well, women's basketball.

I'll make it up to you, and make fun of them pronouncing Clempson. :slight_smile:

That's Clemens. :slight_smile: My daughter, the traitor, made me spend money so she could attend Clemens. Sigh. My own child.

1 Like