ESPN+ & FOX Sports with Custom Channels via EPlusTV

@Sparky Also, search this thread for advice on a couple of little things you need to do differently with Windows. Also, search this forum for advice on things you should do to set up Docker Desktop so it does not eat all your memory.

Does anybody know how to schedule recordings for events that aren't live if using FOXSPORTS_ALLOW_REPLAYS = TRUE?

Hi there,
Dod you get Fox sports as a regular channel?
I think you would have to allow replays so that a channel is assigned for the recording.

same. any solution?

I can confirm there is an issue with NBC Sports not getting event data. Not sure what's going on. I'll add it to things I'm investigating...

Could it be related to this?

Yeah, it appears that NBC changed the way they are handling streaming. Might have to rip out the current implementation until I figure something out

Despite losing NBC Sports, I do have some exciting things coming down... I have the work done, but waiting until tomorrow to do some more tests :yum:

1 Like

Hi there,
Thanks so much for all the hard work.
Keep us posted on developments. The docker container has been working great.

Okay, a decently sized update just dropped:

  • NBC Sports has been ripped out. They changed their whole platform and everything is DRM'd now, so I'm not sure I can work around this
  • MLB.tv has been added
  • I think the most requested one is having dedicated channels for linear content

There were a few bugs that I fixed in there as well, but they were more edge cases than anything else.

2 Likes

I found a bug, but fixed that. So if you saw it, just pull the new version :sweat_smile:

Hi there,
Thanks for the good work.
The MLB part did work dn streams are doing nicely.

@m0ngr31 What is the "Proxy keyed *.ts files" variable used for?

If it's set, it will download encrypted segments from the manifest and cache them locally. Useful if you're not using Channels and want more than one stream per event without hitting your max

@m0ngr31 great job adding MLB.tv, I've tried it out and so far it seems to be performing better than the other method in a few ways (quicker to tune and more reliable with a VPN).

A few questions...

  1. Is it necessary to reserve a set number of channels if I am only using EPlusTV for MLB and other linear channels, or will it auto populate the active variables?

  2. Now that Gracenote has guide data for MLB.tv can you integrate the tvg-id into the m3u so that Channels can automatically pull the full guide listings?

What a great docker, thanks so much @m0ngr31!

I installed it last night -- just not for ESPN+ content, as I don't subscribe -- but for integration of the other channels' content. Is EPlusTV designed to work that way? I did enter my regular ESPN.com login as well as DirecTV login credentials, as instructed.

I had to remove a "START_CHANNEL=7000" variable for the Automatic Channel Collection feature to work. With "prefer channel-number from M3U" selected in Custom Channels setting, the channels from EPlusTV start at 1 and go to 150. But with "ignore channel-number from M3U" selected, the channels start at 21919 instead, which I think I prefer.

And since I didn't want ESPN+ content to appear, I made sure to include this flag:

ESPNPLUS=FALSE

Here is my full run command:

docker run --restart unless-stopped --name EPlusTV -p 8000:8000 -v config_dir:/app/config -e ESPN=TRUE -e ESPN2=TRUE -e ESPN3=TRUE -e ESPNU=TRUE -e SEC=TRUE  -e SECPLUS=TRUE -e ESPNPLUS=FALSE -e FOXSPORTS=TRUE -e FOXSPORTS_MAX_RESOLUTION=UHD/HDR m0ngr31/eplustv:latest

Anyway, everything seems to be working great. However ESPN+ content is still appearing in the guide. And any attempt to play that content gets a "404 Not Found" error, as expected. Content from other channels of course plays fine.

My question is, is it possible to just exclude ESPN+ content entirely from my guide since I'm not able to watch it anyway? I did try a "delete and recreate the database" command, to no avail. Should I not have logged into ESPN.com at all, and if not, how to manage that now? Will I still be able to watch ESPN2, ESPN3 and ESPNU content once logged out?

Thanks for any feedback, and thanks again for a really great docker.

Can you post your full log? That variable should prevent ESPN+ events from being pulled down, but maybe there is a bug there

I haven’t played much with the latest but yes. ESPN+ is the only variable on by default. You would need to enter ESPN=True and ESPNPLUS=False to get just content playing on ESPN.

I subscribe to ESPN+ and MLBTV. The docker was able to pull up the stream when the other docker couldn't play the stream.
I love the APP.

Sure thing, here ya go, I removed the EPlusTV docker and added it back fresh, refreshed guide data, and then tried to play a game in the grid from ESPN+ to show what happens.

Here's the log, I did edit the authorization keys just in case...

2023-04-09 09:54:02 
2023-04-09 09:54:02 > [email protected] start
2023-04-09 09:54:02 > ts-node index.ts
2023-04-09 09:54:02 
2023-04-09 09:54:05 === E+TV v2.0.10 starting ===
2023-04-09 09:54:06 === Getting events ===
2023-04-09 09:54:06 Looking for ESPN events
2023-04-09 09:54:10 Looking for FOX Sports events...
2023-04-09 09:54:11 Adding event:  SPEAK
2023-04-09 09:54:11 Adding event:  The B1G Show
2023-04-09 09:54:11 === Done getting events ===
2023-04-09 09:54:11 === Building the schedule ===
2023-04-09 09:54:11 === Done building the schedule ===
2023-04-09 09:54:11 === Starting Server ===
2023-04-09 09:54:11 Server started on port 8000
2023-04-09 10:02:12 Channel #36 has an active event (Drake vs. Bradley). Going to start the stream.
2023-04-09 10:02:13 Could not get stream data. Event might be upcoming, ended, or in blackout...
2023-04-09 10:02:13 Failed to parse the stream
2023-04-09 10:02:13 AxiosError: Request failed with status code 401
2023-04-09 10:02:13     at settle (/app/node_modules/axios/lib/core/settle.js:19:12)
2023-04-09 10:02:13     at IncomingMessage.handleStreamEnd (/app/node_modules/axios/lib/adapters/http.js:512:11)
2023-04-09 10:02:13     at IncomingMessage.emit (node:events:525:35)
2023-04-09 10:02:13     at IncomingMessage.emit (node:domain:489:12)
2023-04-09 10:02:13     at endReadableNT (node:internal/streams/readable:1358:12)
2023-04-09 10:02:13     at processTicksAndRejections (node:internal/process/task_queues:83:21) {
2023-04-09 10:02:13   code: 'ERR_BAD_REQUEST',
2023-04-09 10:02:13   config: {
2023-04-09 10:02:13     transitional: {
2023-04-09 10:02:13       silentJSONParsing: true,
2023-04-09 10:02:13       forcedJSONParsing: true,
2023-04-09 10:02:13       clarifyTimeoutError: false
2023-04-09 10:02:13     },
2023-04-09 10:02:13     adapter: [ 'xhr', 'http' ],
2023-04-09 10:02:13     transformRequest: [ [Function: transformRequest] ],
2023-04-09 10:02:13     transformResponse: [ [Function: transformResponse] ],
2023-04-09 10:02:13     timeout: 0,
2023-04-09 10:02:13     xsrfCookieName: 'XSRF-TOKEN',
2023-04-09 10:02:13     xsrfHeaderName: 'X-XSRF-TOKEN',
2023-04-09 10:02:13     maxContentLength: -1,
2023-04-09 10:02:13     maxBodyLength: -1,
2023-04-09 10:02:13     env: { FormData: [Function], Blob: null },
2023-04-09 10:02:13     validateStatus: [Function: validateStatus],
2023-04-09 10:02:13     headers: AxiosHeaders {
2023-04-09 10:02:13       Accept: 'application/vnd.media-service+json; version=2',
2023-04-09 10:02:13       Authorization: 'eyJ6aXAiOiJ.......',
2023-04-09 10:02:13       Origin: 'https://plus.espn.com',
2023-04-09 10:02:13       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0',
2023-04-09 10:02:13       'Accept-Encoding': 'gzip, compress, deflate, br'
2023-04-09 10:02:13     },
2023-04-09 10:02:13     method: 'get',
2023-04-09 10:02:13     url: 'https://playback.svcs.plus.espn.com/events/bd015ff7-f369-4e45-a521-ae93162fb73c/media/0045b812-3c4e-45ad-be89-d6a4c0b23275/scenarios/browser~ssai',
2023-04-09 10:02:13     data: undefined
2023-04-09 10:02:13   },
2023-04-09 10:02:13   request: <ref *1> ClientRequest {
2023-04-09 10:02:13     _events: [Object: null prototype] {
2023-04-09 10:02:13       abort: [Function (anonymous)],
2023-04-09 10:02:13       aborted: [Function (anonymous)],
2023-04-09 10:02:13       connect: [Function (anonymous)],
2023-04-09 10:02:13       error: [Function (anonymous)],
2023-04-09 10:02:13       socket: [Function (anonymous)],
2023-04-09 10:02:13       timeout: [Function (anonymous)],
2023-04-09 10:02:13       finish: [Function: requestOnFinish]
2023-04-09 10:02:13     },
2023-04-09 10:02:13     _eventsCount: 7,
2023-04-09 10:02:13     _maxListeners: undefined,
2023-04-09 10:02:13     outputData: [],
2023-04-09 10:02:13     outputSize: 0,
2023-04-09 10:02:13     writable: true,
2023-04-09 10:02:13     destroyed: false,
2023-04-09 10:02:13     _last: true,
2023-04-09 10:02:13     chunkedEncoding: false,
2023-04-09 10:02:13     shouldKeepAlive: false,
2023-04-09 10:02:13     maxRequestsOnConnectionReached: false,
2023-04-09 10:02:13     _defaultKeepAlive: true,
2023-04-09 10:02:13     useChunkedEncodingByDefault: false,
2023-04-09 10:02:13     sendDate: false,
2023-04-09 10:02:13     _removedConnection: false,
2023-04-09 10:02:13     _removedContLen: false,
2023-04-09 10:02:13     _removedTE: false,
2023-04-09 10:02:13     strictContentLength: false,
2023-04-09 10:02:13     _contentLength: 0,
2023-04-09 10:02:13     _hasBody: true,
2023-04-09 10:02:13     _trailer: '',
2023-04-09 10:02:13     finished: true,
2023-04-09 10:02:13     _headerSent: true,
2023-04-09 10:02:13     _closed: false,
2023-04-09 10:02:13     socket: TLSSocket {
2023-04-09 10:02:13       _tlsOptions: [Object],
2023-04-09 10:02:13       _secureEstablished: true,
2023-04-09 10:02:13       _securePending: false,
2023-04-09 10:02:13       _newSessionPending: false,
2023-04-09 10:02:13       _controlReleased: true,
2023-04-09 10:02:13       secureConnecting: false,
2023-04-09 10:02:13       _SNICallback: null,
2023-04-09 10:02:13       servername: 'playback.svcs.plus.espn.com',
2023-04-09 10:02:13       alpnProtocol: false,
2023-04-09 10:02:13       authorized: true,
2023-04-09 10:02:13       authorizationError: null,
2023-04-09 10:02:13       encrypted: true,
2023-04-09 10:02:13       _events: [Object: null prototype],
2023-04-09 10:02:13       _eventsCount: 10,
2023-04-09 10:02:13       connecting: false,
2023-04-09 10:02:13       _hadError: false,
2023-04-09 10:02:13       _parent: null,
2023-04-09 10:02:13       _host: 'playback.svcs.plus.espn.com',
2023-04-09 10:02:13       _closeAfterHandlingError: false,
2023-04-09 10:02:13       _readableState: [ReadableState],
2023-04-09 10:02:13       _maxListeners: undefined,
2023-04-09 10:02:13       _writableState: [WritableState],
2023-04-09 10:02:13       allowHalfOpen: false,
2023-04-09 10:02:13       _sockname: null,
2023-04-09 10:02:13       _pendingData: null,
2023-04-09 10:02:13       _pendingEncoding: '',
2023-04-09 10:02:13       server: undefined,
2023-04-09 10:02:13       _server: null,
2023-04-09 10:02:13       ssl: [TLSWrap],
2023-04-09 10:02:13       _requestCert: true,
2023-04-09 10:02:13       _rejectUnauthorized: true,
2023-04-09 10:02:13       parser: null,
2023-04-09 10:02:13       _httpMessage: [Circular *1],
2023-04-09 10:02:13       [Symbol(res)]: [TLSWrap],
2023-04-09 10:02:13       [Symbol(verified)]: true,
2023-04-09 10:02:13       [Symbol(pendingSession)]: null,
2023-04-09 10:02:13       [Symbol(async_id_symbol)]: 2999,
2023-04-09 10:02:13       [Symbol(kHandle)]: [TLSWrap],
2023-04-09 10:02:13       [Symbol(lastWriteQueueSize)]: 0,
2023-04-09 10:02:13       [Symbol(timeout)]: null,
2023-04-09 10:02:13       [Symbol(kBuffer)]: null,
2023-04-09 10:02:13       [Symbol(kBufferCb)]: null,
2023-04-09 10:02:13       [Symbol(kBufferGen)]: null,
2023-04-09 10:02:13       [Symbol(kCapture)]: false,
2023-04-09 10:02:13       [Symbol(kSetNoDelay)]: false,
2023-04-09 10:02:13       [Symbol(kSetKeepAlive)]: true,
2023-04-09 10:02:13       [Symbol(kSetKeepAliveInitialDelay)]: 60,
2023-04-09 10:02:13       [Symbol(kBytesRead)]: 0,
2023-04-09 10:02:13       [Symbol(kBytesWritten)]: 0,
2023-04-09 10:02:13       [Symbol(connect-options)]: [Object],
2023-04-09 10:02:13       [Symbol(RequestTimeout)]: undefined
2023-04-09 10:02:13     },
2023-04-09 10:02:13     _header: 'GET /events/bd015ff7-f369-4e45-a521-ae93162fb73c/media/0045b812-3c4e-45ad-be89-d6a4c0b23275/scenarios/browser~ssai HTTP/1.1\r\n' +
2023-04-09 10:02:13       'Accept: application/vnd.media-service+json; version=2\r\n' +
2023-04-09 10:02:13       'Authorization: eyJ6aXAiOiJERU.....\r\n' +
2023-04-09 10:02:13       'Origin: https://plus.espn.com\r\n' +
2023-04-09 10:02:13       'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0\r\n' +
2023-04-09 10:02:13       'Accept-Encoding: gzip, compress, deflate, br\r\n' +
2023-04-09 10:02:13       'Host: playback.svcs.plus.espn.com\r\n' +
2023-04-09 10:02:13       'Connection: close\r\n' +
2023-04-09 10:02:13       '\r\n',
2023-04-09 10:02:13     _keepAliveTimeout: 0,
2023-04-09 10:02:13     _onPendingData: [Function: nop],
2023-04-09 10:02:13     agent: Agent {
2023-04-09 10:02:13       _events: [Object: null prototype],
2023-04-09 10:02:13       _eventsCount: 2,
2023-04-09 10:02:13       _maxListeners: undefined,
2023-04-09 10:02:13       defaultPort: 443,
2023-04-09 10:02:13       protocol: 'https:',
2023-04-09 10:02:13       options: [Object: null prototype],
2023-04-09 10:02:13       requests: [Object: null prototype] {},
2023-04-09 10:02:13       sockets: [Object: null prototype],
2023-04-09 10:02:13       freeSockets: [Object: null prototype] {},
2023-04-09 10:02:13       keepAliveMsecs: 1000,
2023-04-09 10:02:13       keepAlive: false,
2023-04-09 10:02:13       maxSockets: Infinity,
2023-04-09 10:02:13       maxFreeSockets: 256,
2023-04-09 10:02:13       scheduling: 'lifo',
2023-04-09 10:02:13       maxTotalSockets: Infinity,
2023-04-09 10:02:13       totalSocketCount: 1,
2023-04-09 10:02:13       maxCachedSessions: 100,
2023-04-09 10:02:13       _sessionCache: [Object],
2023-04-09 10:02:13       [Symbol(kCapture)]: false
2023-04-09 10:02:13     },
2023-04-09 10:02:13     socketPath: undefined,
2023-04-09 10:02:13     method: 'GET',
2023-04-09 10:02:13     maxHeaderSize: undefined,
2023-04-09 10:02:13     insecureHTTPParser: undefined,
2023-04-09 10:02:13     path: '/events/bd015ff7-f369-4e45-a521-ae93162fb73c/media/0045b812-3c4e-45ad-be89-d6a4c0b23275/scenarios/browser~ssai',
2023-04-09 10:02:13     _ended: true,
2023-04-09 10:02:13     res: IncomingMessage {
2023-04-09 10:02:13       _readableState: [ReadableState],
2023-04-09 10:02:13       _events: [Object: null prototype],
2023-04-09 10:02:13       _eventsCount: 4,
2023-04-09 10:02:13       _maxListeners: undefined,
2023-04-09 10:02:13       socket: [TLSSocket],
2023-04-09 10:02:13       httpVersionMajor: 1,
2023-04-09 10:02:13       httpVersionMinor: 1,
2023-04-09 10:02:13       httpVersion: '1.1',
2023-04-09 10:02:13       complete: true,
2023-04-09 10:02:13       rawHeaders: [Array],
2023-04-09 10:02:13       rawTrailers: [],
2023-04-09 10:02:13       aborted: false,
2023-04-09 10:02:13       upgrade: false,
2023-04-09 10:02:13       url: '',
2023-04-09 10:02:13       method: null,
2023-04-09 10:02:13       statusCode: 401,
2023-04-09 10:02:13       statusMessage: 'Unauthorized',
2023-04-09 10:02:13       client: [TLSSocket],
2023-04-09 10:02:13       _consuming: true,
2023-04-09 10:02:13       _dumped: false,
2023-04-09 10:02:13       req: [Circular *1],
2023-04-09 10:02:13       responseUrl: 'https://playback.svcs.plus.espn.com/events/bd015ff7-f369-4e45-a521-ae93162fb73c/media/0045b812-3c4e-45ad-be89-d6a4c0b23275/scenarios/browser~ssai',
2023-04-09 10:02:13       redirects: [],
2023-04-09 10:02:13       [Symbol(kCapture)]: false,
2023-04-09 10:02:13       [Symbol(kHeaders)]: [Object],
2023-04-09 10:02:13       [Symbol(kHeadersCount)]: 38,
2023-04-09 10:02:13       [Symbol(kTrailers)]: null,
2023-04-09 10:02:13       [Symbol(kTrailersCount)]: 0,
2023-04-09 10:02:13       [Symbol(RequestTimeout)]: undefined
2023-04-09 10:02:13     },
2023-04-09 10:02:13     aborted: false,
2023-04-09 10:02:13     timeoutCb: null,
2023-04-09 10:02:13     upgradeOrConnect: false,
2023-04-09 10:02:13     parser: null,
2023-04-09 10:02:13     maxHeadersCount: null,
2023-04-09 10:02:13     reusedSocket: false,
2023-04-09 10:02:13     host: 'playback.svcs.plus.espn.com',
2023-04-09 10:02:13     protocol: 'https:',
2023-04-09 10:02:13     _redirectable: Writable {
2023-04-09 10:02:13       _writableState: [WritableState],
2023-04-09 10:02:13       _events: [Object: null prototype],
2023-04-09 10:02:13       _eventsCount: 3,
2023-04-09 10:02:13       _maxListeners: undefined,
2023-04-09 10:02:13       _options: [Object],
2023-04-09 10:02:13       _ended: true,
2023-04-09 10:02:13       _ending: true,
2023-04-09 10:02:13       _redirectCount: 0,
2023-04-09 10:02:13       _redirects: [],
2023-04-09 10:02:13       _requestBodyLength: 0,
2023-04-09 10:02:13       _requestBodyBuffers: [],
2023-04-09 10:02:13       _onNativeResponse: [Function (anonymous)],
2023-04-09 10:02:13       _currentRequest: [Circular *1],
2023-04-09 10:02:13       _currentUrl: 'https://playback.svcs.plus.espn.com/events/bd015ff7-f369-4e45-a521-ae93162fb73c/media/0045b812-3c4e-45ad-be89-d6a4c0b23275/scenarios/browser~ssai',
2023-04-09 10:02:13       [Symbol(kCapture)]: false
2023-04-09 10:02:13     },
2023-04-09 10:02:13     [Symbol(kCapture)]: false,
2023-04-09 10:02:13     [Symbol(kBytesWritten)]: 0,
2023-04-09 10:02:13     [Symbol(kEndCalled)]: true,
2023-04-09 10:02:13     [Symbol(kNeedDrain)]: false,
2023-04-09 10:02:13     [Symbol(corked)]: 0,
2023-04-09 10:02:13     [Symbol(kOutHeaders)]: [Object: null prototype] {
2023-04-09 10:02:13       accept: [Array],
2023-04-09 10:02:13       authorization: [Array],
2023-04-09 10:02:13       origin: [Array],
2023-04-09 10:02:13       'user-agent': [Array],
2023-04-09 10:02:13       'accept-encoding': [Array],
2023-04-09 10:02:13       host: [Array]
2023-04-09 10:02:13     },
2023-04-09 10:02:13     [Symbol(kUniqueHeaders)]: null
2023-04-09 10:02:13   },
2023-04-09 10:02:13   response: {
2023-04-09 10:02:13     status: 401,
2023-04-09 10:02:13     statusText: 'Unauthorized',
2023-04-09 10:02:13     headers: AxiosHeaders {
2023-04-09 10:02:13       'content-type': 'application/json; charset=utf-8',
2023-04-09 10:02:13       'transfer-encoding': 'chunked',
2023-04-09 10:02:13       connection: 'close',
2023-04-09 10:02:13       date: 'Sun, 09 Apr 2023 17:02:13 GMT',
2023-04-09 10:02:13       'x-dss-edge': 'auth.expired',
2023-04-09 10:02:13       'www-authenticate': 'Bearer code="access-token.invalid", description="auth.expired"',
2023-04-09 10:02:13       'access-control-allow-origin': 'https://plus.espn.com',
2023-04-09 10:02:13       'access-control-allow-methods': 'GET, POST, PUT, PATCH, DELETE, OPTIONS',
2023-04-09 10:02:13       'access-control-allow-credentials': 'true',
2023-04-09 10:02:13       'access-control-expose-headers': 'x-request-id, x-bamtech-region',
2023-04-09 10:02:13       'access-control-max-age': '600',
2023-04-09 10:02:13       'x-request-id': 'f51eed2a09eecc8970294f5810975569',
2023-04-09 10:02:13       'x-bamtech-region': 'us-west-2',
2023-04-09 10:02:13       'cache-control': 'no-store',
2023-04-09 10:02:13       vary: 'origin,access-control-request-headers',
2023-04-09 10:02:13       'x-cache': 'Error from cloudfront',
2023-04-09 10:02:13       via: '1.1 e235a9ff25582ed62ef48771e429fb16.cloudfront.net (CloudFront)',
2023-04-09 10:02:13       'x-amz-cf-pop': 'LAX50-P4',
2023-04-09 10:02:13       'x-amz-cf-id': 'H5hHa0YiE9uTWHizs_J3rktJ540md-gesFvEVk-CVPkhf-uTY8fAGQ=='
2023-04-09 10:02:13     },
2023-04-09 10:02:13     config: {
2023-04-09 10:02:13       transitional: [Object],
2023-04-09 10:02:13       adapter: [Array],
2023-04-09 10:02:13       transformRequest: [Array],
2023-04-09 10:02:13       transformResponse: [Array],
2023-04-09 10:02:13       timeout: 0,
2023-04-09 10:02:13       xsrfCookieName: 'XSRF-TOKEN',
2023-04-09 10:02:13       xsrfHeaderName: 'X-XSRF-TOKEN',
2023-04-09 10:02:13       maxContentLength: -1,
2023-04-09 10:02:13       maxBodyLength: -1,
2023-04-09 10:02:13       env: [Object],
2023-04-09 10:02:13       validateStatus: [Function: validateStatus],
2023-04-09 10:02:13       headers: [AxiosHeaders],
2023-04-09 10:02:13       method: 'get',
2023-04-09 10:02:13       url: 'https://playback.svcs.plus.espn.com/events/bd015ff7-f369-4e45-a521-ae93162fb73c/media/0045b812-3c4e-45ad-be89-d6a4c0b23275/scenarios/browser~ssai',
2023-04-09 10:02:13       data: undefined
2023-04-09 10:02:13     },
2023-04-09 10:02:13     request: <ref *1> ClientRequest {
2023-04-09 10:02:13       _events: [Object: null prototype],
2023-04-09 10:02:13       _eventsCount: 7,
2023-04-09 10:02:13       _maxListeners: undefined,
2023-04-09 10:02:13       outputData: [],
2023-04-09 10:02:13       outputSize: 0,
2023-04-09 10:02:13       writable: true,
2023-04-09 10:02:13       destroyed: false,
2023-04-09 10:02:13       _last: true,
2023-04-09 10:02:13       chunkedEncoding: false,
2023-04-09 10:02:13       shouldKeepAlive: false,
2023-04-09 10:02:13       maxRequestsOnConnectionReached: false,
2023-04-09 10:02:13       _defaultKeepAlive: true,
2023-04-09 10:02:13       useChunkedEncodingByDefault: false,
2023-04-09 10:02:13       sendDate: false,
2023-04-09 10:02:13       _removedConnection: false,
2023-04-09 10:02:13       _removedContLen: false,
2023-04-09 10:02:13       _removedTE: false,
2023-04-09 10:02:13       strictContentLength: false,
2023-04-09 10:02:13       _contentLength: 0,
2023-04-09 10:02:13       _hasBody: true,
2023-04-09 10:02:13       _trailer: '',
2023-04-09 10:02:13       finished: true,
2023-04-09 10:02:13       _headerSent: true,
2023-04-09 10:02:13       _closed: false,
2023-04-09 10:02:13       socket: [TLSSocket],
2023-04-09 10:02:13       _header: 'GET /events/bd015ff7-f369-4e45-a521-ae93162fb73c/media/0045b812-3c4e-45ad-be89-d6a4c0b23275/scenarios/browser~ssai HTTP/1.1\r\n' +
2023-04-09 10:02:13         'Accept: application/vnd.media-service+json; version=2\r\n' +
2023-04-09 10:02:13         'Authorization: eyJ6aXShw....\r\n' +
2023-04-09 10:02:13         'Origin: https://plus.espn.com\r\n' +
2023-04-09 10:02:13         'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0\r\n' +
2023-04-09 10:02:13         'Accept-Encoding: gzip, compress, deflate, br\r\n' +
2023-04-09 10:02:13         'Host: playback.svcs.plus.espn.com\r\n' +
2023-04-09 10:02:13         'Connection: close\r\n' +
2023-04-09 10:02:13         '\r\n',
2023-04-09 10:02:13       _keepAliveTimeout: 0,
2023-04-09 10:02:13       _onPendingData: [Function: nop],
2023-04-09 10:02:13       agent: [Agent],
2023-04-09 10:02:13       socketPath: undefined,
2023-04-09 10:02:13       method: 'GET',
2023-04-09 10:02:13       maxHeaderSize: undefined,
2023-04-09 10:02:13       insecureHTTPParser: undefined,
2023-04-09 10:02:13       path: '/events/bd015ff7-f369-4e45-a521-ae93162fb73c/media/0045b812-3c4e-45ad-be89-d6a4c0b23275/scenarios/browser~ssai',
2023-04-09 10:02:13       _ended: true,
2023-04-09 10:02:13       res: [IncomingMessage],
2023-04-09 10:02:13       aborted: false,
2023-04-09 10:02:13       timeoutCb: null,
2023-04-09 10:02:13       upgradeOrConnect: false,
2023-04-09 10:02:13       parser: null,
2023-04-09 10:02:13       maxHeadersCount: null,
2023-04-09 10:02:13       reusedSocket: false,
2023-04-09 10:02:13       host: 'playback.svcs.plus.espn.com',
2023-04-09 10:02:13       protocol: 'https:',
2023-04-09 10:02:13       _redirectable: [Writable],
2023-04-09 10:02:13       [Symbol(kCapture)]: false,
2023-04-09 10:02:13       [Symbol(kBytesWritten)]: 0,
2023-04-09 10:02:13       [Symbol(kEndCalled)]: true,
2023-04-09 10:02:13       [Symbol(kNeedDrain)]: false,
2023-04-09 10:02:13       [Symbol(corked)]: 0,
2023-04-09 10:02:13       [Symbol(kOutHeaders)]: [Object: null prototype],
2023-04-09 10:02:13       [Symbol(kUniqueHeaders)]: null
2023-04-09 10:02:13     },
2023-04-09 10:02:13     data: { errors: [Array] }
2023-04-09 10:02:13   }
2023-04-09 10:02:13 }
2023-04-09 10:02:13 Could not get a playlist for channel #36. Please make sure there is an event scheduled and you have access to it.

Thanks, yes, I've had have those environment variables set, and yet am still seeing all the ESPN+ games in my grid.