ESPN+ & FOX Sports with Custom Channels via EPlusTV

Interesting, I'll have to try it again. The problem I've been having is I did a ton of refreshes to try to get a cf.edge to play with and all I ever got was foxdtc-video.akamai and fa.edge.

EDIT: Finally got a cf.edge to show up and it works again! I think the last one was good for something like 6 months.

1 Like

Well, this is dead for me. I had a working cf.edge link for a day or two and now it's 403 forbidden again. Doesn't matter what index I use for the M3U, 1, 7 whatever they're all forbidden.

So direct streaming from Fox doesn't work by capturing a link for me.

Is there an issue with the docker or is it me? I can't get any guide information. I've tried both linear and non-linear. I used this docker last year and it was working well for me.

1 Like

What provider(s) are you using?

1 Like

I'm attempting to use it with ESPN+.

ESPN added DRM to all of their streams a few months back, so EPlusTV can no longer support it.

FruitDeepLinks might be a workable replacement for you.

1 Like

Sounds about right that ESPN would do something to make my life just a little more difficult and raise the price. I'll check out that link.

Yeah it only works for 24 hours now.

Time to move to a different setup for Fox stuff.

Is anyone else running into issues tonight? I just updated everything to v4.15.1 and reauthenticated my TV credentials but I cannot get Gotham Sports MSG or YES network or ESPN with TV provider or ISP to work. Am I the only one?

      adapter: [Array],
      transformRequest: [Array],
      transformResponse: [Array],
      timeout: 60000,
      xsrfCookieName: 'XSRF-TOKEN',
      xsrfHeaderName: 'X-XSRF-TOKEN',
      maxContentLength: -1,
      maxBodyLength: -1,
      env: [Object],
      validateStatus: [Function: validateStatus],
      headers: [AxiosHeaders],
      method: 'post',
      url: 'https://api.gothamsports.com/proxy/device/app/register',
      data: '{"uniqueId":"4ea91769-d268-4a18-b7b5-6300995604f6"}'
    },
    request: <ref *1> ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: true,
      _last: false,
      chunkedEncoding: false,
      shouldKeepAlive: true,
      maxRequestsOnConnectionReached: false,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: true,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      strictContentLength: false,
      _contentLength: 51,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: true,
      _header: 'POST /proxy/device/app/register HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'Content-Type: application/json\r\n' +
        'authorization: Bearer undefined\r\n' +
        'gg-rsn-id: f403f16d\r\n' +
        'user-agent: okhttp/4.11.0\r\n' +
        'x-authorization: eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..0X3lYxe7ZxqA4b5_._--pw0UH3RS2IfuAhbBXkZsoJd6f3VHMuiEW1uUxJqur83TpruMD9SxzXdnJoUEIVUu4SLLKBP4hjL02QaVKit7MXm8RDSOAwQze7ouOSuxMM9S-QOY_X_Y5aHutz1fRLflg42h0C9eGyAY6uYcRpYPSCJdUqeWYBmPotE-0BeyD1MBBFFYc0Qb2WIANrCJgX0mk4E9oP0EAXVN_vuyFdliR2OYJGmQ18d7n-YRT03u0rycpuBmLo14S9o6MMNPrmc05EsCLq2qVGzH8z0VmsViOoqFuZFERWDKF5BeyrVFvfq--xVzOOd8WXXuYMeNmUy950GcNrwvqMZX6rlohMFs61s2nJPe2Nd3gi0vicjtgR2mJbKYlkdKZqJkbSKrtlw559tyO_4AQkYHHNHGc1I1IzDrTko_WRcxmJAtsmaHZbP_eTCTErb82xunu2ebMg-IR_hk5dWbgZN5ZExK_9rcX-dJxgWIM8XVhtPBBr7mia3qgegIsTTeyqjLGSlgHlnk_YSZNHPnuYRRXAP2F65bteQbqcv_NECgSFYJYTcCjYnDjVQhmpjnx9LfW2vCD0IwwBqfa7E2LyQm7jtvco-P0bJrtA8nUXG5euocS1bZoAFSxUfXsCuekSDBBY4FaFA1KrXfGSJnD37xFZzxZcbEA-JvEUAs1csVwxWz9Dqj7NBnFQL5zGcHCaN7dYlsUwcEGh1yEFqo3j15NDX4EwDQ9zRyBYO9GBA41d44TRSr9G6F0RpC_RPF2rUU2PA_PC-UDP8Id44mRQHADnj8UfPEi6_RC6wdfrBCWkAW3GbDjo9-nCgOQ1qfOwWNJ2yDppeZd6r8fZ4EQgun8nP9eromPJSx3ggx4w77R_8y_sAKy_xryBbgtte6w5O1VyB8O1YcsSfr4GcPnPwNMi-gXytvTmWbra9znRJ8yV8fVK30r_GbX9lddbJWknfQ9jcrgNHRCGkcD74MxQGZZ31tcnFFGk7Vyqc_ZB3sVVyo1-3OAoK9o81b61cku6NM_G3wuaWPAgTHTNTDN0uoubNZdG0Y_S6Q-HSA0hJVNMM2p1w.2sBVOgr5B7rq1cH_6NYggg\r\n' +
        'x-client-id: game-gotham-androidtv\r\n' +
        'Content-Length: 51\r\n' +
        'Accept-Encoding: gzip, compress, deflate, br\r\n' +
        'Host: api.gothamsports.com\r\n' +
        'Connection: keep-alive\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'POST',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      joinDuplicateHeaders: undefined,
      path: '/proxy/device/app/register',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: true,
      host: 'api.gothamsports.com',
      protocol: 'https:',
      _redirectable: [Writable],
      Symbol(shapeMode): false,
      Symbol(kCapture): false,
      Symbol(kBytesWritten): 0,
      Symbol(kNeedDrain): false,
      Symbol(corked): 0,
      Symbol(kChunkedBuffer): [],
      Symbol(kChunkedLength): 0,
      Symbol(kSocket): [TLSSocket],
      Symbol(kOutHeaders): [Object: null prototype],
      Symbol(errored): null,
      Symbol(kHighWaterMark): 65536,
      Symbol(kRejectNonStandardBodyWrites): false,
      Symbol(kUniqueHeaders): null
    },
    data: {
      gameSuccess: false,
      gameError: [Object],
      message: 'Request failed with status code 401',
      ggErrorCode: 'INTERNAL'
    }
  }
}
TypeError: Cannot read properties of undefined (reading 'secret')
    at GothamHandler.<anonymous> (/app/services/gotham-handler.ts:732:59)
    at Generator.next (<anonymous>)
    at fulfilled (/app/services/gotham-handler.ts:5:58)
    at processTicksAndRejections (node:internal/process/task_queues:103:5)

ESPN has not worked for awhile (DRM) and there is an open issue on Gotham: Gotham Broken · Issue #245 · tonywagner/EPlusTV · GitHub

Thank you both for the logs.

I identified a potential Fox One streaming issue in them, and I've attempted to address it in EPlusTV version 4.15.2

If anyone was having Fox One issues, try updating, and if your issues reoccur, please share your EPlusTV container log.

3 Likes

Appears to be working.
I updated, did a Re-Authenticate Fox One, did a Rebuild EPG and then played three Fox One Linear channels. Fox, FS1 and FS2.
The only things showing in the log are 76 of these
Invalid Playlist : EXTINF duration, when rounded to the nearest integer, MUST be less than or equal to the target duration

Yep I finally got Fox ONE channels to work again after latest update, thanks Tony!

1 Like

OK, mostly working. FNC seems to fail every few tries. When it tunes, it is fast.. Haven't seen errors on the other linear channels. Thanks for looking!

2026-03-22 19:28:43.866 | Could not parse chunklist properly!
2026-03-22 19:28:43.900 | Could not get chunklist for channel #416.
2026-03-22 19:28:43.900 | AxiosError: Request failed with status code 400
2026-03-22 19:28:43.900 |     at settle (/app/node_modules/axios/lib/core/settle.js:19:12)
2026-03-22 19:28:43.900 |     at IncomingMessage.handleStreamEnd (/app/node_modules/axios/lib/adapters/http.js:512:11)
2026-03-22 19:28:43.900 |     at IncomingMessage.emit (node:events:520:35)
2026-03-22 19:28:43.900 |     at IncomingMessage.emit (node:domain:489:12)
2026-03-22 19:28:43.900 |     at endReadableNT (node:internal/streams/readable:1701:12)
2026-03-22 19:28:43.900 |     at processTicksAndRejections (node:internal/process/task_queues:89:21) {
2026-03-22 19:28:43.900 |   code: 'ERR_BAD_REQUEST',
2026-03-22 19:28:43.900 |   config: {
2026-03-22 19:28:43.900 |     transitional: {
2026-03-22 19:28:43.900 |       silentJSONParsing: true,
2026-03-22 19:28:43.900 |       forcedJSONParsing: true,
2026-03-22 19:28:43.900 |       clarifyTimeoutError: false
2026-03-22 19:28:43.900 |     },
2026-03-22 19:28:43.900 |     adapter: [ 'xhr', 'http' ],
2026-03-22 19:28:43.900 |     transformRequest: [ [Function: transformRequest] ],
2026-03-22 19:28:43.900 |     transformResponse: [ [Function: transformResponse] ],
2026-03-22 19:28:43.900 |     timeout: 60000,
2026-03-22 19:28:43.900 |     xsrfCookieName: 'XSRF-TOKEN',
2026-03-22 19:28:43.900 |     xsrfHeaderName: 'X-XSRF-TOKEN',
2026-03-22 19:28:43.900 |     maxContentLength: -1,
2026-03-22 19:28:43.900 |     maxBodyLength: -1,
2026-03-22 19:28:43.900 |     env: { FormData: [Function [FormData]], Blob: [class Blob] },
2026-03-22 19:28:43.900 |     validateStatus: [Function: validateStatus],
2026-03-22 19:28:43.900 |     headers: AxiosHeaders {
2026-03-22 19:28:43.900 |       Accept: 'application/json, text/plain, */*',
2026-03-22 19:28:43.900 |       'Accept-Encoding': 'gzip, deflate, br, zstd',
2026-03-22 19:28:43.900 |       'User-Agent': 'foxone-androidtv/1.3.0 (Linux; Android 12; en-us; onn. 4K Streaming Box Build/SGZ1.221127.063.A1.9885170)',
2026-03-22 19:28:43.900 |       Cookie: [Array]
2026-03-22 19:28:43.900 |     },
2026-03-22 19:28:43.900 |     method: 'get',
2026-03-22 19:28:43.900 |     url: 'https://foxdtc-video.akamaized.net/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/csm/extlive/foxdtcprd01,fnc-ue2/7.m3u8;jsessionid=1972891B760CEF6B5196783FB119E22F.csm-e-cefoxdtcprdause1live-046947c4097ff9bdc.bln1.yospace.com?yo.aas=true&yo.pk=true&yo.ap=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/&ad_env=2&ad=fw_test&ae=027b2b4baccdc848db095a7db10da595&bu=foxdtc&callsign=FNC&cdn=ak&channel=&device_id=&exp=1774220858&height=2160&is_lat=0&mcl_region=ue2&network=FNC&nielsen_app_id=&os=android&osv=12&platform=androidtv&profile=516429%3Aadrise_foxone_androidtv_live&program_id=NOTMSBB2D71MRG&site_section=foxone%2Fandroidtv%2Flive%2Ffnc&traceid=5e8c3659-ad71-427e-bb0f-e6c16745f678&us_privacy=&width=3840&yo.ai=32163&yo.av=4&yo.lpa=dur&yo.mv=6&yo.pbr=true&yo.pdt=sync&yo.pst=true&yo.up=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/&ss.exp=1774307198&ss.sig=/ektL8eaGi/8nXXYSsrhQFxRJK8=',
2026-03-22 19:28:43.900 |     data: undefined
2026-03-22 19:28:43.900 |   },
2026-03-22 19:28:43.900 |   request: <ref *1> ClientRequest {
2026-03-22 19:28:43.900 |     _events: [Object: null prototype] {
2026-03-22 19:28:43.900 |       abort: [Function (anonymous)],
2026-03-22 19:28:43.900 |       aborted: [Function (anonymous)],
2026-03-22 19:28:43.900 |       connect: [Function (anonymous)],
2026-03-22 19:28:43.900 |       error: [Function (anonymous)],
2026-03-22 19:28:43.900 |       socket: [Function (anonymous)],
2026-03-22 19:28:43.900 |       timeout: [Function (anonymous)],
2026-03-22 19:28:43.900 |       finish: [Function: requestOnFinish]
2026-03-22 19:28:43.900 |     },
2026-03-22 19:28:43.900 |     _eventsCount: 7,
2026-03-22 19:28:43.900 |     _maxListeners: undefined,
2026-03-22 19:28:43.900 |     outputData: [],
2026-03-22 19:28:43.900 |     outputSize: 0,
2026-03-22 19:28:43.900 |     writable: true,
2026-03-22 19:28:43.900 |     destroyed: true,
2026-03-22 19:28:43.900 |     _last: true,
2026-03-22 19:28:43.900 |     chunkedEncoding: false,
2026-03-22 19:28:43.900 |     shouldKeepAlive: true,
2026-03-22 19:28:43.900 |     maxRequestsOnConnectionReached: false,
2026-03-22 19:28:43.900 |     _defaultKeepAlive: true,
2026-03-22 19:28:43.900 |     useChunkedEncodingByDefault: false,
2026-03-22 19:28:43.900 |     sendDate: false,
2026-03-22 19:28:43.900 |     _removedConnection: false,
2026-03-22 19:28:43.900 |     _removedContLen: false,
2026-03-22 19:28:43.900 |     _removedTE: false,
2026-03-22 19:28:43.900 |     strictContentLength: false,
2026-03-22 19:28:43.900 |     _contentLength: 0,
2026-03-22 19:28:43.900 |     _hasBody: true,
2026-03-22 19:28:43.900 |     _trailer: '',
2026-03-22 19:28:43.900 |     finished: true,
2026-03-22 19:28:43.900 |     _headerSent: true,
2026-03-22 19:28:43.900 |     _closed: true,
2026-03-22 19:28:43.900 |     _header: 'GET /live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/csm/extlive/foxdtcprd01,fnc-ue2/7.m3u8;jsessionid=1972891B760CEF6B5196783FB119E22F.csm-e-cefoxdtcprdause1live-046947c4097ff9bdc.bln1.yospace.com?yo.aas=true&yo.pk=true&yo.ap=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/&ad_env=2&ad=fw_test&ae=027b2b4baccdc848db095a7db10da595&bu=foxdtc&callsign=FNC&cdn=ak&channel=&device_id=&exp=1774220858&height=2160&is_lat=0&mcl_region=ue2&network=FNC&nielsen_app_id=&os=android&osv=12&platform=androidtv&profile=516429%3Aadrise_foxone_androidtv_live&program_id=NOTMSBB2D71MRG&site_section=foxone%2Fandroidtv%2Flive%2Ffnc&traceid=5e8c3659-ad71-427e-bb0f-e6c16745f678&us_privacy=&width=3840&yo.ai=32163&yo.av=4&yo.lpa=dur&yo.mv=6&yo.pbr=true&yo.pdt=sync&yo.pst=true&yo.up=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/&ss.exp=1774307198&ss.sig=/ektL8eaGi/8nXXYSsrhQFxRJK8= HTTP/1.1\r\n' +
2026-03-22 19:28:43.900 |       'Accept: application/json, text/plain, */*\r\n' +
2026-03-22 19:28:43.900 |       'Accept-Encoding: gzip, deflate, br, zstd\r\n' +
2026-03-22 19:28:43.900 |       'User-Agent: foxone-androidtv/1.3.0 (Linux; Android 12; en-us; onn. 4K Streaming Box Build/SGZ1.221127.063.A1.9885170)\r\n' +
2026-03-22 19:28:43.900 |       'Cookie: hdntl=exp=1774307198~acl=%2f*~data=hdntl~hmac=6686457f6e15dfc9082acf6caa89724f378c1423c3361c9f9de5a69220046b06; Domain=foxdtc-video.akamaized.net; Path=/; Expires=Mon, 23-Mar-2026 23:06:35 GMT\r\n' +
2026-03-22 19:28:43.900 |       'Host: foxdtc-video.akamaized.net\r\n' +
2026-03-22 19:28:43.900 |       'Connection: keep-alive\r\n' +
2026-03-22 19:28:43.900 |       '\r\n',
2026-03-22 19:28:43.900 |     _keepAliveTimeout: 0,
2026-03-22 19:28:43.900 |     _onPendingData: [Function: nop],
2026-03-22 19:28:43.900 |     agent: Agent {
2026-03-22 19:28:43.900 |       _events: [Object: null prototype],
2026-03-22 19:28:43.900 |       _eventsCount: 2,
2026-03-22 19:28:43.900 |       _maxListeners: undefined,
2026-03-22 19:28:43.900 |       options: [Object: null prototype],
2026-03-22 19:28:43.900 |       defaultPort: 443,
2026-03-22 19:28:43.900 |       protocol: 'https:',
2026-03-22 19:28:43.900 |       requests: [Object: null prototype] {},
2026-03-22 19:28:43.900 |       sockets: [Object: null prototype] {},
2026-03-22 19:28:43.900 |       freeSockets: [Object: null prototype],
2026-03-22 19:28:43.900 |       keepAliveMsecs: 1000,
2026-03-22 19:28:43.900 |       keepAlive: true,
2026-03-22 19:28:43.900 |       maxSockets: Infinity,
2026-03-22 19:28:43.900 |       maxFreeSockets: 256,
2026-03-22 19:28:43.900 |       scheduling: 'lifo',
2026-03-22 19:28:43.901 |       maxTotalSockets: Infinity,
2026-03-22 19:28:43.901 |       totalSocketCount: 1,
2026-03-22 19:28:43.901 |       agentKeepAliveTimeoutBuffer: 1000,
2026-03-22 19:28:43.901 |       maxCachedSessions: 100,
2026-03-22 19:28:43.901 |       _sessionCache: [Object],
2026-03-22 19:28:43.901 |       Symbol(shapeMode): false,
2026-03-22 19:28:43.901 |       Symbol(kCapture): false
2026-03-22 19:28:43.901 |     },
2026-03-22 19:28:43.901 |     socketPath: undefined,
2026-03-22 19:28:43.901 |     method: 'GET',
2026-03-22 19:28:43.901 |     maxHeaderSize: undefined,
2026-03-22 19:28:43.901 |     insecureHTTPParser: undefined,
2026-03-22 19:28:43.901 |     joinDuplicateHeaders: undefined,
2026-03-22 19:28:43.901 |     path: '/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/csm/extlive/foxdtcprd01,fnc-ue2/7.m3u8;jsessionid=1972891B760CEF6B5196783FB119E22F.csm-e-cefoxdtcprdause1live-046947c4097ff9bdc.bln1.yospace.com?yo.aas=true&yo.pk=true&yo.ap=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/&ad_env=2&ad=fw_test&ae=027b2b4baccdc848db095a7db10da595&bu=foxdtc&callsign=FNC&cdn=ak&channel=&device_id=&exp=1774220858&height=2160&is_lat=0&mcl_region=ue2&network=FNC&nielsen_app_id=&os=android&osv=12&platform=androidtv&profile=516429%3Aadrise_foxone_androidtv_live&program_id=NOTMSBB2D71MRG&site_section=foxone%2Fandroidtv%2Flive%2Ffnc&traceid=5e8c3659-ad71-427e-bb0f-e6c16745f678&us_privacy=&width=3840&yo.ai=32163&yo.av=4&yo.lpa=dur&yo.mv=6&yo.pbr=true&yo.pdt=sync&yo.pst=true&yo.up=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/&ss.exp=1774307198&ss.sig=/ektL8eaGi/8nXXYSsrhQFxRJK8=',
2026-03-22 19:28:43.901 |     _ended: true,
2026-03-22 19:28:43.901 |     res: IncomingMessage {
2026-03-22 19:28:43.901 |       _events: [Object],
2026-03-22 19:28:43.901 |       _readableState: [ReadableState],
2026-03-22 19:28:43.901 |       _maxListeners: undefined,
2026-03-22 19:28:43.901 |       socket: null,
2026-03-22 19:28:43.901 |       httpVersionMajor: 1,
2026-03-22 19:28:43.901 |       httpVersionMinor: 1,
2026-03-22 19:28:43.901 |       httpVersion: '1.1',
2026-03-22 19:28:43.901 |       complete: true,
2026-03-22 19:28:43.901 |       rawHeaders: [Array],
2026-03-22 19:28:43.901 |       rawTrailers: [],
2026-03-22 19:28:43.901 |       joinDuplicateHeaders: undefined,
2026-03-22 19:28:43.901 |       aborted: false,
2026-03-22 19:28:43.901 |       upgrade: false,
2026-03-22 19:28:43.901 |       url: '',
2026-03-22 19:28:43.901 |       method: null,
2026-03-22 19:28:43.901 |       statusCode: 400,
2026-03-22 19:28:43.901 |       statusMessage: 'Bad Request',
2026-03-22 19:28:43.901 |       client: [TLSSocket],
2026-03-22 19:28:43.901 |       _consuming: false,
2026-03-22 19:28:43.901 |       _dumped: false,
2026-03-22 19:28:43.901 |       req: [Circular *1],
2026-03-22 19:28:43.901 |       _eventsCount: 4,
2026-03-22 19:28:43.901 |       responseUrl: 'https://foxdtc-video.akamaized.net/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/csm/extlive/foxdtcprd01,fnc-ue2/7.m3u8;jsessionid=1972891B760CEF6B5196783FB119E22F.csm-e-cefoxdtcprdause1live-046947c4097ff9bdc.bln1.yospace.com?yo.aas=true&yo.pk=true&yo.ap=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/&ad_env=2&ad=fw_test&ae=027b2b4baccdc848db095a7db10da595&bu=foxdtc&callsign=FNC&cdn=ak&channel=&device_id=&exp=1774220858&height=2160&is_lat=0&mcl_region=ue2&network=FNC&nielsen_app_id=&os=android&osv=12&platform=androidtv&profile=516429%3Aadrise_foxone_androidtv_live&program_id=NOTMSBB2D71MRG&site_section=foxone%2Fandroidtv%2Flive%2Ffnc&traceid=5e8c3659-ad71-427e-bb0f-e6c16745f678&us_privacy=&width=3840&yo.ai=32163&yo.av=4&yo.lpa=dur&yo.mv=6&yo.pbr=true&yo.pdt=sync&yo.pst=true&yo.up=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/&ss.exp=1774307198&ss.sig=/ektL8eaGi/8nXXYSsrhQFxRJK8=',
2026-03-22 19:28:43.901 |       redirects: [],
2026-03-22 19:28:43.901 |       Symbol(shapeMode): true,
2026-03-22 19:28:43.901 |       Symbol(kCapture): false,
2026-03-22 19:28:43.901 |       Symbol(kHeaders): [Object],
2026-03-22 19:28:43.901 |       Symbol(kHeadersCount): 34,
2026-03-22 19:28:43.901 |       Symbol(kTrailers): null,
2026-03-22 19:28:43.901 |       Symbol(kTrailersCount): 0
2026-03-22 19:28:43.901 |     },
2026-03-22 19:28:43.901 |     aborted: false,
2026-03-22 19:28:43.901 |     timeoutCb: null,
2026-03-22 19:28:43.901 |     upgradeOrConnect: false,
2026-03-22 19:28:43.901 |     parser: null,
2026-03-22 19:28:43.901 |     maxHeadersCount: null,
2026-03-22 19:28:43.901 |     reusedSocket: false,
2026-03-22 19:28:43.901 |     host: 'foxdtc-video.akamaized.net',
2026-03-22 19:28:43.901 |     protocol: 'https:',
2026-03-22 19:28:43.901 |     _redirectable: Writable {
2026-03-22 19:28:43.901 |       _events: [Object],
2026-03-22 19:28:43.901 |       _writableState: [WritableState],
2026-03-22 19:28:43.901 |       _maxListeners: undefined,
2026-03-22 19:28:43.901 |       _options: [Object],
2026-03-22 19:28:43.901 |       _ended: true,
2026-03-22 19:28:43.901 |       _ending: true,
2026-03-22 19:28:43.901 |       _redirectCount: 0,
2026-03-22 19:28:43.901 |       _redirects: [],
2026-03-22 19:28:43.901 |       _requestBodyLength: 0,
2026-03-22 19:28:43.901 |       _requestBodyBuffers: [],
2026-03-22 19:28:43.901 |       _eventsCount: 3,
2026-03-22 19:28:43.901 |       _onNativeResponse: [Function (anonymous)],
2026-03-22 19:28:43.901 |       _currentRequest: [Circular *1],
2026-03-22 19:28:43.901 |       _currentUrl: 'https://foxdtc-video.akamaized.net/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/csm/extlive/foxdtcprd01,fnc-ue2/7.m3u8;jsessionid=1972891B760CEF6B5196783FB119E22F.csm-e-cefoxdtcprdause1live-046947c4097ff9bdc.bln1.yospace.com?yo.aas=true&yo.pk=true&yo.ap=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/&ad_env=2&ad=fw_test&ae=027b2b4baccdc848db095a7db10da595&bu=foxdtc&callsign=FNC&cdn=ak&channel=&device_id=&exp=1774220858&height=2160&is_lat=0&mcl_region=ue2&network=FNC&nielsen_app_id=&os=android&osv=12&platform=androidtv&profile=516429%3Aadrise_foxone_androidtv_live&program_id=NOTMSBB2D71MRG&site_section=foxone%2Fandroidtv%2Flive%2Ffnc&traceid=5e8c3659-ad71-427e-bb0f-e6c16745f678&us_privacy=&width=3840&yo.ai=32163&yo.av=4&yo.lpa=dur&yo.mv=6&yo.pbr=true&yo.pdt=sync&yo.pst=true&yo.up=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/&ss.exp=1774307198&ss.sig=/ektL8eaGi/8nXXYSsrhQFxRJK8=',
2026-03-22 19:28:43.901 |       _timeout: null,
2026-03-22 19:28:43.901 |       Symbol(shapeMode): true,
2026-03-22 19:28:43.901 |       Symbol(kCapture): false
2026-03-22 19:28:43.901 |     },
2026-03-22 19:28:43.901 |     Symbol(shapeMode): false,
2026-03-22 19:28:43.901 |     Symbol(kCapture): false,
2026-03-22 19:28:43.901 |     Symbol(kBytesWritten): 0,
2026-03-22 19:28:43.901 |     Symbol(kNeedDrain): false,
2026-03-22 19:28:43.901 |     Symbol(corked): 0,
2026-03-22 19:28:43.901 |     Symbol(kChunkedBuffer): [],
2026-03-22 19:28:43.901 |     Symbol(kChunkedLength): 0,
2026-03-22 19:28:43.901 |     Symbol(kSocket): TLSSocket {
2026-03-22 19:28:43.901 |       _tlsOptions: [Object],
2026-03-22 19:28:43.901 |       _secureEstablished: true,
2026-03-22 19:28:43.901 |       _securePending: false,
2026-03-22 19:28:43.901 |       _newSessionPending: false,
2026-03-22 19:28:43.901 |       _controlReleased: true,
2026-03-22 19:28:43.901 |       secureConnecting: false,
2026-03-22 19:28:43.901 |       _SNICallback: null,
2026-03-22 19:28:43.901 |       servername: 'foxdtc-video.akamaized.net',
2026-03-22 19:28:43.901 |       alpnProtocol: false,
2026-03-22 19:28:43.901 |       authorized: true,
2026-03-22 19:28:43.901 |       authorizationError: null,
2026-03-22 19:28:43.901 |       encrypted: true,
2026-03-22 19:28:43.901 |       _events: [Object: null prototype],
2026-03-22 19:28:43.901 |       _eventsCount: 9,
2026-03-22 19:28:43.901 |       connecting: false,
2026-03-22 19:28:43.901 |       _hadError: false,
2026-03-22 19:28:43.901 |       _parent: null,
2026-03-22 19:28:43.901 |       _host: 'foxdtc-video.akamaized.net',
2026-03-22 19:28:43.901 |       _closeAfterHandlingError: false,
2026-03-22 19:28:43.901 |       _readableState: [ReadableState],
2026-03-22 19:28:43.901 |       _writableState: [WritableState],
2026-03-22 19:28:43.901 |       allowHalfOpen: false,
2026-03-22 19:28:43.901 |       _maxListeners: undefined,
2026-03-22 19:28:43.901 |       _sockname: null,
2026-03-22 19:28:43.901 |       _pendingData: null,
2026-03-22 19:28:43.901 |       _pendingEncoding: '',
2026-03-22 19:28:43.901 |       server: undefined,
2026-03-22 19:28:43.901 |       _server: null,
2026-03-22 19:28:43.901 |       ssl: [TLSWrap],
2026-03-22 19:28:43.901 |       _requestCert: true,
2026-03-22 19:28:43.901 |       _rejectUnauthorized: true,
2026-03-22 19:28:43.901 |       timeout: 5000,
2026-03-22 19:28:43.901 |       parser: null,
2026-03-22 19:28:43.901 |       _httpMessage: null,
2026-03-22 19:28:43.901 |       autoSelectFamilyAttemptedAddresses: [Array],
2026-03-22 19:28:43.901 |       Symbol(alpncallback): null,
2026-03-22 19:28:43.901 |       Symbol(res): [TLSWrap],
2026-03-22 19:28:43.901 |       Symbol(verified): true,
2026-03-22 19:28:43.901 |       Symbol(pendingSession): null,
2026-03-22 19:28:43.901 |       Symbol(async_id_symbol): -1,
2026-03-22 19:28:43.901 |       Symbol(kHandle): [TLSWrap],
2026-03-22 19:28:43.901 |       Symbol(lastWriteQueueSize): 0,
2026-03-22 19:28:43.901 |       Symbol(timeout): Timeout {
2026-03-22 19:28:43.901 |         _idleTimeout: 5000,
2026-03-22 19:28:43.901 |         _idlePrev: [TimersList],
2026-03-22 19:28:43.901 |         _idleNext: [TimersList],
2026-03-22 19:28:43.901 |         _idleStart: 8901224,
2026-03-22 19:28:43.901 |         _onTimeout: [Function: bound ],
2026-03-22 19:28:43.901 |         _timerArgs: undefined,
2026-03-22 19:28:43.901 |         _repeat: null,
2026-03-22 19:28:43.901 |         _destroyed: false,
2026-03-22 19:28:43.901 |         Symbol(refed): false,
2026-03-22 19:28:43.901 |         Symbol(kHasPrimitive): false,
2026-03-22 19:28:43.901 |         Symbol(asyncId): 197830,
2026-03-22 19:28:43.901 |         Symbol(triggerId): 197828,
2026-03-22 19:28:43.901 |         Symbol(kAsyncContextFrame): undefined
2026-03-22 19:28:43.901 |       },
2026-03-22 19:28:43.901 |       Symbol(kBuffer): null,
2026-03-22 19:28:43.901 |       Symbol(kBufferCb): null,
2026-03-22 19:28:43.901 |       Symbol(kBufferGen): null,
2026-03-22 19:28:43.901 |       Symbol(shapeMode): true,
2026-03-22 19:28:43.901 |       Symbol(kCapture): false,
2026-03-22 19:28:43.901 |       Symbol(kSetNoDelay): false,
2026-03-22 19:28:43.901 |       Symbol(kSetKeepAlive): true,
2026-03-22 19:28:43.901 |       Symbol(kSetKeepAliveInitialDelay): 1,
2026-03-22 19:28:43.901 |       Symbol(kBytesRead): 0,
2026-03-22 19:28:43.901 |       Symbol(kBytesWritten): 0,
2026-03-22 19:28:43.901 |       Symbol(connect-options): [Object]
2026-03-22 19:28:43.901 |     },
2026-03-22 19:28:43.901 |     Symbol(kOutHeaders): [Object: null prototype] {
2026-03-22 19:28:43.901 |       accept: [Array],
2026-03-22 19:28:43.901 |       'accept-encoding': [Array],
2026-03-22 19:28:43.901 |       'user-agent': [Array],
2026-03-22 19:28:43.901 |       cookie: [Array],
2026-03-22 19:28:43.901 |       host: [Array]
2026-03-22 19:28:43.901 |     },
2026-03-22 19:28:43.901 |     Symbol(errored): null,
2026-03-22 19:28:43.901 |     Symbol(kHighWaterMark): 65536,
2026-03-22 19:28:43.901 |     Symbol(kRejectNonStandardBodyWrites): false,
2026-03-22 19:28:43.901 |     Symbol(kUniqueHeaders): null
2026-03-22 19:28:43.901 |   },
2026-03-22 19:28:43.901 |   response: {
2026-03-22 19:28:43.901 |     status: 400,
2026-03-22 19:28:43.901 |     statusText: 'Bad Request',
2026-03-22 19:28:43.901 |     headers: AxiosHeaders {
2026-03-22 19:28:43.901 |       server: 'nginx',
2026-03-22 19:28:43.901 |       'content-length': '59',
2026-03-22 19:28:43.901 |       'x-yospace-hostname': 'csm-e-cefoxdtcprdause1live-046947c4097ff9bdc.bln1.yospace.com',
2026-03-22 19:28:43.901 |       'cache-control': 'max-age=1',
2026-03-22 19:28:43.901 |       expires: 'Sun, 22 Mar 2026 23:28:45 GMT',
2026-03-22 19:28:43.901 |       date: 'Sun, 22 Mar 2026 23:28:44 GMT',
2026-03-22 19:28:43.901 |       connection: 'keep-alive',
2026-03-22 19:28:43.901 |       'akamai-request-bc': '[a=104.94.101.161,b=230495349,c=g,n=US_FL_MIAMI,o=20940],[a=160,c=o]',
2026-03-22 19:28:43.901 |       'akamai-mon-iucid-del': '1941636',
2026-03-22 19:28:43.901 |       'akamai-grn': '0.a1655e68.1774222123.dbd1475',
2026-03-22 19:28:43.901 |       'x-cdn': 'akamai',
2026-03-22 19:28:43.901 |       'access-control-max-age': '86400',
2026-03-22 19:28:43.901 |       'access-control-allow-credentials': 'true',
2026-03-22 19:28:43.901 |       'access-control-expose-headers': 'Server,range,hdntl,hdnts,Akamai-Mon-Iucid-Ing,Akamai-Mon-Iucid-Del,Akamai-Request-BC',
2026-03-22 19:28:43.901 |       'access-control-allow-headers': 'origin,range,hdntl,hdnts,CMCD-Request,CMCD-Object,CMCD-Status,CMCD-Session',
2026-03-22 19:28:43.901 |       'access-control-allow-methods': 'GET,POST,OPTIONS',
2026-03-22 19:28:43.901 |       'access-control-allow-origin': '*'
2026-03-22 19:28:43.901 |     },
2026-03-22 19:28:43.901 |     config: {
2026-03-22 19:28:43.901 |       transitional: [Object],
2026-03-22 19:28:43.901 |       adapter: [Array],
2026-03-22 19:28:43.901 |       transformRequest: [Array],
2026-03-22 19:28:43.901 |       transformResponse: [Array],
2026-03-22 19:28:43.901 |       timeout: 60000,
2026-03-22 19:28:43.901 |       xsrfCookieName: 'XSRF-TOKEN',
2026-03-22 19:28:43.901 |       xsrfHeaderName: 'X-XSRF-TOKEN',
2026-03-22 19:28:43.901 |       maxContentLength: -1,
2026-03-22 19:28:43.901 |       maxBodyLength: -1,
2026-03-22 19:28:43.901 |       env: [Object],
2026-03-22 19:28:43.901 |       validateStatus: [Function: validateStatus],
2026-03-22 19:28:43.901 |       headers: [AxiosHeaders],
2026-03-22 19:28:43.901 |       method: 'get',
2026-03-22 19:28:43.901 |       url: 'https://foxdtc-video.akamaized.net/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/csm/extlive/foxdtcprd01,fnc-ue2/7.m3u8;jsessionid=1972891B760CEF6B5196783FB119E22F.csm-e-cefoxdtcprdause1live-046947c4097ff9bdc.bln1.yospace.com?yo.aas=true&yo.pk=true&yo.ap=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/&ad_env=2&ad=fw_test&ae=027b2b4baccdc848db095a7db10da595&bu=foxdtc&callsign=FNC&cdn=ak&channel=&device_id=&exp=1774220858&height=2160&is_lat=0&mcl_region=ue2&network=FNC&nielsen_app_id=&os=android&osv=12&platform=androidtv&profile=516429%3Aadrise_foxone_androidtv_live&program_id=NOTMSBB2D71MRG&site_section=foxone%2Fandroidtv%2Flive%2Ffnc&traceid=5e8c3659-ad71-427e-bb0f-e6c16745f678&us_privacy=&width=3840&yo.ai=32163&yo.av=4&yo.lpa=dur&yo.mv=6&yo.pbr=true&yo.pdt=sync&yo.pst=true&yo.up=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/&ss.exp=1774307198&ss.sig=/ektL8eaGi/8nXXYSsrhQFxRJK8=',
2026-03-22 19:28:43.901 |       data: undefined
2026-03-22 19:28:43.901 |     },
2026-03-22 19:28:43.901 |     request: <ref *1> ClientRequest {
2026-03-22 19:28:43.901 |       _events: [Object: null prototype],
2026-03-22 19:28:43.901 |       _eventsCount: 7,
2026-03-22 19:28:43.901 |       _maxListeners: undefined,
2026-03-22 19:28:43.901 |       outputData: [],
2026-03-22 19:28:43.901 |       outputSize: 0,
2026-03-22 19:28:43.901 |       writable: true,
2026-03-22 19:28:43.901 |       destroyed: true,
2026-03-22 19:28:43.901 |       _last: true,
2026-03-22 19:28:43.901 |       chunkedEncoding: false,
2026-03-22 19:28:43.901 |       shouldKeepAlive: true,
2026-03-22 19:28:43.901 |       maxRequestsOnConnectionReached: false,
2026-03-22 19:28:43.901 |       _defaultKeepAlive: true,
2026-03-22 19:28:43.901 |       useChunkedEncodingByDefault: false,
2026-03-22 19:28:43.901 |       sendDate: false,
2026-03-22 19:28:43.901 |       _removedConnection: false,
2026-03-22 19:28:43.901 |       _removedContLen: false,
2026-03-22 19:28:43.901 |       _removedTE: false,
2026-03-22 19:28:43.901 |       strictContentLength: false,
2026-03-22 19:28:43.901 |       _contentLength: 0,
2026-03-22 19:28:43.901 |       _hasBody: true,
2026-03-22 19:28:43.901 |       _trailer: '',
2026-03-22 19:28:43.901 |       finished: true,
2026-03-22 19:28:43.901 |       _headerSent: true,
2026-03-22 19:28:43.901 |       _closed: true,
2026-03-22 19:28:43.901 |       _header: 'GET /live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/csm/extlive/foxdtcprd01,fnc-ue2/7.m3u8;jsessionid=1972891B760CEF6B5196783FB119E22F.csm-e-cefoxdtcprdause1live-046947c4097ff9bdc.bln1.yospace.com?yo.aas=true&yo.pk=true&yo.ap=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/&ad_env=2&ad=fw_test&ae=027b2b4baccdc848db095a7db10da595&bu=foxdtc&callsign=FNC&cdn=ak&channel=&device_id=&exp=1774220858&height=2160&is_lat=0&mcl_region=ue2&network=FNC&nielsen_app_id=&os=android&osv=12&platform=androidtv&profile=516429%3Aadrise_foxone_androidtv_live&program_id=NOTMSBB2D71MRG&site_section=foxone%2Fandroidtv%2Flive%2Ffnc&traceid=5e8c3659-ad71-427e-bb0f-e6c16745f678&us_privacy=&width=3840&yo.ai=32163&yo.av=4&yo.lpa=dur&yo.mv=6&yo.pbr=true&yo.pdt=sync&yo.pst=true&yo.up=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/&ss.exp=1774307198&ss.sig=/ektL8eaGi/8nXXYSsrhQFxRJK8= HTTP/1.1\r\n' +
2026-03-22 19:28:43.901 |         'Accept: application/json, text/plain, */*\r\n' +
2026-03-22 19:28:43.901 |         'Accept-Encoding: gzip, deflate, br, zstd\r\n' +
2026-03-22 19:28:43.901 |         'User-Agent: foxone-androidtv/1.3.0 (Linux; Android 12; en-us; onn. 4K Streaming Box Build/SGZ1.221127.063.A1.9885170)\r\n' +
2026-03-22 19:28:43.901 |         'Cookie: hdntl=exp=1774307198~acl=%2f*~data=hdntl~hmac=6686457f6e15dfc9082acf6caa89724f378c1423c3361c9f9de5a69220046b06; Domain=foxdtc-video.akamaized.net; Path=/; Expires=Mon, 23-Mar-2026 23:06:35 GMT\r\n' +
2026-03-22 19:28:43.901 |         'Host: foxdtc-video.akamaized.net\r\n' +
2026-03-22 19:28:43.901 |         'Connection: keep-alive\r\n' +
2026-03-22 19:28:43.901 |         '\r\n',
2026-03-22 19:28:43.901 |       _keepAliveTimeout: 0,
2026-03-22 19:28:43.901 |       _onPendingData: [Function: nop],
2026-03-22 19:28:43.901 |       agent: [Agent],
2026-03-22 19:28:43.901 |       socketPath: undefined,
2026-03-22 19:28:43.901 |       method: 'GET',
2026-03-22 19:28:43.901 |       maxHeaderSize: undefined,
2026-03-22 19:28:43.901 |       insecureHTTPParser: undefined,
2026-03-22 19:28:43.901 |       joinDuplicateHeaders: undefined,
2026-03-22 19:28:43.901 |       path: '/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/csm/extlive/foxdtcprd01,fnc-ue2/7.m3u8;jsessionid=1972891B760CEF6B5196783FB119E22F.csm-e-cefoxdtcprdause1live-046947c4097ff9bdc.bln1.yospace.com?yo.aas=true&yo.pk=true&yo.ap=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/&ad_env=2&ad=fw_test&ae=027b2b4baccdc848db095a7db10da595&bu=foxdtc&callsign=FNC&cdn=ak&channel=&device_id=&exp=1774220858&height=2160&is_lat=0&mcl_region=ue2&network=FNC&nielsen_app_id=&os=android&osv=12&platform=androidtv&profile=516429%3Aadrise_foxone_androidtv_live&program_id=NOTMSBB2D71MRG&site_section=foxone%2Fandroidtv%2Flive%2Ffnc&traceid=5e8c3659-ad71-427e-bb0f-e6c16745f678&us_privacy=&width=3840&yo.ai=32163&yo.av=4&yo.lpa=dur&yo.mv=6&yo.pbr=true&yo.pdt=sync&yo.pst=true&yo.up=/live/exp=1774307198~acl=%2f*~hmac=1775ac83b061a3cf29e44684d8a62d7b44fecad954d856ca580d59ea34ecf61e/fnc-ue2/&ss.exp=1774307198&ss.sig=/ektL8eaGi/8nXXYSsrhQFxRJK8=',
2026-03-22 19:28:43.901 |       _ended: true,
2026-03-22 19:28:43.901 |       res: [IncomingMessage],
2026-03-22 19:28:43.901 |       aborted: false,
2026-03-22 19:28:43.901 |       timeoutCb: null,
2026-03-22 19:28:43.901 |       upgradeOrConnect: false,
2026-03-22 19:28:43.901 |       parser: null,
2026-03-22 19:28:43.901 |       maxHeadersCount: null,
2026-03-22 19:28:43.901 |       reusedSocket: false,
2026-03-22 19:28:43.901 |       host: 'foxdtc-video.akamaized.net',
2026-03-22 19:28:43.901 |       protocol: 'https:',
2026-03-22 19:28:43.901 |       _redirectable: [Writable],
2026-03-22 19:28:43.901 |       Symbol(shapeMode): false,
2026-03-22 19:28:43.901 |       Symbol(kCapture): false,
2026-03-22 19:28:43.901 |       Symbol(kBytesWritten): 0,
2026-03-22 19:28:43.901 |       Symbol(kNeedDrain): false,
2026-03-22 19:28:43.901 |       Symbol(corked): 0,
2026-03-22 19:28:43.901 |       Symbol(kChunkedBuffer): [],
2026-03-22 19:28:43.901 |       Symbol(kChunkedLength): 0,
2026-03-22 19:28:43.901 |       Symbol(kSocket): [TLSSocket],
2026-03-22 19:28:43.901 |       Symbol(kOutHeaders): [Object: null prototype],
2026-03-22 19:28:43.901 |       Symbol(errored): null,
2026-03-22 19:28:43.901 |       Symbol(kHighWaterMark): 65536,
2026-03-22 19:28:43.901 |       Symbol(kRejectNonStandardBodyWrites): false,
2026-03-22 19:28:43.901 |       Symbol(kUniqueHeaders): null
2026-03-22 19:28:43.901 |     },
2026-03-22 19:28:43.901 |     data: 'Media playlist or segment requested but no current session\n'
2026-03-22 19:28:43.901 |   }
2026-03-22 19:28:43.901 | }
1 Like

If you want to loan Gotham credentials by private message, I could take a look at this.

I noticed this too. Works sometimes. Thanks for working on this!!!

Ran errors thru AI this AM:

Stream failed using EplusTV in Docker and Channels DVR on Windows 11. Here is the Docker log:

Every one of these log entries shows Axios requests to Fox Digital’s video platform failing with the same response:

HTTP 403 Forbidden
statusMessage: 'No token'
data: 'NOT OK'
That combination tells you the request reached the CDN (Fastly + Varnish layer) and was rejected at the authorization stage. In other words, the server understood the request but refused to serve the .m3u8 manifest because it was missing a valid access token. The clues are in the URL parameters — notice the jsessionid and ae=027b2b4baccdc848db095a7db10da595 segments. Those are part of a session‑scoped, signed streaming URL, and when any piece of that expires or doesn’t match the current session, the edge returns “No token.”

What’s happening step‑by‑step:

The app starts a stream for channel #416.
It immediately tries to fetch the HLS playlist (7.m3u8).
The CDN replies 403 Forbidden — “No token.”
The code logs “Could not parse chunklist…” and retries every few seconds with a newly generated jsessionid, but still without a valid playback token.
More than a dozen identical failures follow until later in the log you see

Updating FOX One prelim token
Refreshing TV Provider token (FOX One)
— which suggests the app then re‑authenticates.
So the root cause is token expiration or missing authentication headers rather than a network or Axios problem. Axios is just reporting the HTTP 403 response — a typical “access denied” signal

. According to getstream.io, 403 corresponds to a Not Allowed Error when the request lacks valid credentials.

If you’re debugging this in the Docker + Channels DVR + EplusTV setup:

Make sure your code retrieves a fresh playback token from Fox’s API before requesting the chunklist. Those URLs usually expire within a few minutes.
Check whether your Authorization header or cookie is being dropped by Axios or by the container network bridge.
Confirm that the token refresh (shown at 07:29:28) runs regularly and that the downloader waits for a new token before reconnecting.
If running in Docker, ensure the container’s clock matches the host — an incorrect system time can also invalidate signed URLs.
A dumped playlist “No token” error never indicates SSL or CORS trouble; the issue sits squarely at the permission layer of the streaming API.
Many media CDNs gate access with short‑lived session tokens embedded in .m3u8 URLs. When you see repeating 403s like this, think of it less as a networking failure and more as the digital equivalent of a movie ticket that expired before you reached the door.

Thanks for sharing the log message.

I just pushed EPlusTV version 4.15.3 which should address this Fox One streaming issue (and hopefully didn't break anything else!).

1 Like

Running it now. Seems solid. Will update you if I see a failure.

Thanks!