ESPN+ & FOX Sports with Custom Channels via EPlusTV

I've got NFL Network (and Channel) up and running with TVE login.

I'm going to record the international game tomorrow, so we'll see how it goes, but I have to think it will go well!

For those doing this, here's what I recommend:

  • Create an NFL Account if you don't have one

  • Under the box for your account, click Edit Profile

image

  • Then click back to My Account

image

  • Under this, go to 3rd Party Accounts

image

  • Now connect your streaming provider(s):

  • That should be good to get things going. I also recommend being on the same browser as what you just did this in when you do the authentication during the Docker initialization.

  • When setting up in Docker, somewhat counterintuitively, you still will want the NFLPLUS variable set to true, even though you don't have NFL+. If you don't, you won't get prompted to authenticate.

2 Likes

Just to clarify, you don't need to connect in the browser. Let the container prompt that. Otherwise the tokens might not work since they are tied to a device.

2 Likes

I have NFL+ enabled (authenticated fine with the container) and my provider is linked on my NFL account but I don't see the morning game in the guide. I also don't see my local games for the afternoon. I do not have linear enabled. Logs show that no NFL events were added, but they were looked for.

I'm running 3.2.6 and don't have an NFL+ sub, just trying to get my local games plus the NFL Network game.

1 Like

unfortunately getting the foolowing error

Channel #4330 has an active event (New York Jets vs. Minnesota Vikings). Going to start the stream.
Could not parse M3U8 properly!
AxiosError: Request failed with status code 404

--- truncated output ---

Could not get a playlist for channel #4330. Please make sure there is an event scheduled and you have access to it.

Apparently I was too optimistic; the job failed:

2024/10/06 09:25:00.005021 [DVR] Starting job 1728221100-66 NFL Football on ch=[90830]
2024/10/06 09:25:00.007231 [DVR] Waiting 3h29m59.9927686s until next job 1728233700-23 NFL Football
2024/10/06 09:25:00.007231 [DBG] Scheduling wake timer for scheduled recording in 3h28m29.9927686s
2024/10/06 09:25:04.282617 [ERR] Failed to start stream on channel 90830 via M3U-EPlusTVLinear: M3U: Could not fetch playlist from localhost:7989: GET: http://localhost:7989/channels/90830.m3u8: 404 Not Found
2024/10/06 09:25:04.283152 [DVR] Error running job 1728221100-66 NFL Football: could not start stream on channels=[90830]: M3U: Could not fetch playlist from localhost:7989: GET: http://localhost:7989/channels/90830.m3u8: 404 Not Found

I tested some other streams at the same time, both Linear and Scheduled, and they all worked as expected. Here's what I saw in the EPlusTV Docker log:

2024-10-06 09:25:00 Channel #90830 has an active event (NFL GameDay Kickoff). Going to start the stream.
2024-10-06 09:25:02 Channel #90830 was setup improperly... Removing.
2024-10-06 09:25:04 AxiosError: Request failed with status code 404
2024-10-06 09:25:04     at settle (/app/node_modules/axios/lib/core/settle.js:19:12)
2024-10-06 09:25:04     at IncomingMessage.handleStreamEnd (/app/node_modules/axios/lib/adapters/http.js:512:11)
2024-10-06 09:25:04     at IncomingMessage.emit (node:events:529:35)
2024-10-06 09:25:04     at IncomingMessage.emit (node:domain:489:12)
2024-10-06 09:25:04     at endReadableNT (node:internal/streams/readable:1400:12)
2024-10-06 09:25:04     at processTicksAndRejections (node:internal/process/task_queues:82:21) {
2024-10-06 09:25:04   code: 'ERR_BAD_REQUEST',
2024-10-06 09:25:04   config: {
2024-10-06 09:25:04     transitional: {
2024-10-06 09:25:04       silentJSONParsing: true,
2024-10-06 09:25:04       forcedJSONParsing: true,
2024-10-06 09:25:04       clarifyTimeoutError: false
2024-10-06 09:25:04     },
2024-10-06 09:25:04     adapter: [ 'xhr', 'http' ],
2024-10-06 09:25:04     transformRequest: [ [Function: transformRequest] ],
2024-10-06 09:25:04     transformResponse: [ [Function: transformResponse] ],
2024-10-06 09:25:04     timeout: 0,
2024-10-06 09:25:04     xsrfCookieName: 'XSRF-TOKEN',
2024-10-06 09:25:04     xsrfHeaderName: 'X-XSRF-TOKEN',
2024-10-06 09:25:04     maxContentLength: -1,
2024-10-06 09:25:04     maxBodyLength: -1,
2024-10-06 09:25:04     env: { FormData: [Function], Blob: [class Blob] },
2024-10-06 09:25:04     validateStatus: [Function: validateStatus],
2024-10-06 09:25:04     headers: AxiosHeaders {
2024-10-06 09:25:04       Accept: 'application/json, text/plain, */*',
2024-10-06 09:25:04       'Content-Type': 'application/json',
2024-10-06 09:25:04       'User-Agent': 'okhttp/4.11.0',
2024-10-06 09:25:04       authorization: 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6IjM2NTY3MmQwLTgzYjgtNDZlYy04ZWUwLTZlMTU0M2JjM2RlOSIsImNsaWVudEtleSI6IkEzYjc0d09pU0RNcmhKS2VYQUVJcWdSSUNCaUJObzdvIiwiaXNzIjoiTkZMIiwiZGV2aWNlSWQiOiJlZDliODk2NC0wMDhjLTQ4MDEtOGRmMi0xN2MxMGZhMzg0ZmUiLCJwbGFucyI6W3sicGxhbiI6ImZyZWUiLCJleHBpcmF0aW9uRGF0ZSI6IjIwMjUtMTAtMDYiLCJzb3VyY2UiOiJORkwiLCJzdGFydERhdGUiOiIyMDI0LTEwLTA2Iiwic3RhdHVzIjoiQUNUSVZFIiwidHJpYWwiOmZhbHNlfV0sIkRpc3BsYXlOYW1lIjoiQ1RWX0FORFJPSURfQ1RWIiwiTm90ZXMiOiIiLCJmb3JtRmFjdG9yIjoiQ1RWIiwibHVyYUFwcEtleSI6IlNaczU3ZEJHUnhiTDcyOGxWcDdEWVEiLCJwbGF0Zm9ybSI6IkFORFJPSUQiLCJwcm9kdWN0TmFtZSI6IkNUViIsInJvbGVzIjpbImNvbnRlbnQiLCJleHBlcmllbmNlIiwiZm9vdGJhbGwiLCJ1dGlsaXRpZXMiLCJ0ZWFtcyIsInBsYXkiLCJsaXZlIiwiaWRlbnRpdHkiLCJuZ3Nfc3RhdHMiLCJwYXltZW50c19hcGkiLCJuZ3NfdHJhY2tpbmciLCJuZ3NfcGxhdGZvcm0iLCJuZ3NfY29udGVudCIsIm5nc19jb21iaW5lIiwibmdzX2FkdmFuY2VkX3N0YXRzIiwibmZsX3BybyIsImVjb21tIiwibmZsX2lkX2FwaSIsInV0aWxpdGllc19sb2NhdGlvbiIsImZyZWUiXSwiY2l0eSI6InByb3ZpZGVuY2UiLCJjb3VudHJ5Q29kZSI6IlVTIiwiZG1hQ29kZSI6IjUyMSIsImhtYVRlYW1zIjpbIjEwNDAzMjAwLTY5YWItOWVhNi01YWY1LWUyNDBmYmMwOGJlYSJdLCJyZWdpb24iOiJSSSIsInppcENvZGUiOiIwMjkwMyIsImJyb3dzZXIiOiJPdGhlciIsImNlbGx1bGFyIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJwcm9kdWN0aW9uIiwidWlkIjoiNDJhNTEzOWZlNzg3NDU2MWJiZjhmMDJhMzE0OGY4ODUiLCJuZXR3b3JrcyI6eyJBQkMiOiJBQkMiLCJGT1hERVBPUlRFUyI6IkZPWERFUE9SVEVTIiwiVEVMRU1VTkRPIjoiVEVMRU1VTkRPIiwiRVNQTkRFUE9SVEVTIjoiRVNQTkRFUE9SVEVTIiwiRVNQTiI6IkVTUE4iLCJGT1giOiJGT1giLCJOQkMiOiJOQkMiLCJDQlMiOiJDQlMiLCJORkxOIjoiTkZMTiJ9LCJleHAiOjE3MjgyMjQ3MDJ9.UpPr8ljK6RELgb9x5m_qD-O5zYTSebwIWS1_ToQPkto',
2024-10-06 09:25:04       'Content-Length': '133',
2024-10-06 09:25:04       'Accept-Encoding': 'gzip, compress, deflate, br'
2024-10-06 09:25:04     },
2024-10-06 09:25:04     method: 'post',
2024-10-06 09:25:04     url: 'https://api.nfl.com/play/v1/asset/OBDRMY6Gh73zuUmf--j4Pw',
2024-10-06 09:25:04     data: '{"idp":"cox","mvpdUUID":"43a76ac0-4cf3-11e9-b7ab-005056a73b9c","mvpdUserId":"910fbc20-aacb-11e7-ba06-14feb5d9357d","networks":"NFLN"}'
2024-10-06 09:25:04   },
2024-10-06 09:25:04   request: <ref *1> ClientRequest {
2024-10-06 09:25:04     _events: [Object: null prototype] {
2024-10-06 09:25:04       abort: [Function (anonymous)],
2024-10-06 09:25:04       aborted: [Function (anonymous)],
2024-10-06 09:25:04       connect: [Function (anonymous)],
2024-10-06 09:25:04       error: [Function (anonymous)],
2024-10-06 09:25:04       socket: [Function (anonymous)],
2024-10-06 09:25:04       timeout: [Function (anonymous)],
2024-10-06 09:25:04       finish: [Function: requestOnFinish]
2024-10-06 09:25:04     },
2024-10-06 09:25:04     _eventsCount: 7,
2024-10-06 09:25:04     _maxListeners: undefined,
2024-10-06 09:25:04     outputData: [],
2024-10-06 09:25:04     outputSize: 0,
2024-10-06 09:25:04     writable: true,
2024-10-06 09:25:04     destroyed: false,
2024-10-06 09:25:04     _last: true,
2024-10-06 09:25:04     chunkedEncoding: false,
2024-10-06 09:25:04     shouldKeepAlive: false,
2024-10-06 09:25:04     maxRequestsOnConnectionReached: false,
2024-10-06 09:25:04     _defaultKeepAlive: true,
2024-10-06 09:25:04     useChunkedEncodingByDefault: true,
2024-10-06 09:25:04     sendDate: false,
2024-10-06 09:25:04     _removedConnection: false,
2024-10-06 09:25:04     _removedContLen: false,
2024-10-06 09:25:04     _removedTE: false,
2024-10-06 09:25:04     strictContentLength: false,
2024-10-06 09:25:04     _contentLength: '133',
2024-10-06 09:25:04     _hasBody: true,
2024-10-06 09:25:04     _trailer: '',
2024-10-06 09:25:04     finished: true,
2024-10-06 09:25:04     _headerSent: true,
2024-10-06 09:25:04     _closed: false,
2024-10-06 09:25:04     socket: TLSSocket {
2024-10-06 09:25:04       _tlsOptions: [Object],
2024-10-06 09:25:04       _secureEstablished: true,
2024-10-06 09:25:04       _securePending: false,
2024-10-06 09:25:04       _newSessionPending: false,
2024-10-06 09:25:04       _controlReleased: true,
2024-10-06 09:25:04       secureConnecting: false,
2024-10-06 09:25:04       _SNICallback: null,
2024-10-06 09:25:04       servername: 'api.nfl.com',
2024-10-06 09:25:04       alpnProtocol: false,
2024-10-06 09:25:04       authorized: true,
2024-10-06 09:25:04       authorizationError: null,
2024-10-06 09:25:04       encrypted: true,
2024-10-06 09:25:04       _events: [Object: null prototype],
2024-10-06 09:25:04       _eventsCount: 10,
2024-10-06 09:25:04       connecting: false,
2024-10-06 09:25:04       _hadError: false,
2024-10-06 09:25:04       _parent: null,
2024-10-06 09:25:04       _host: 'api.nfl.com',
2024-10-06 09:25:04       _closeAfterHandlingError: false,
2024-10-06 09:25:04       _readableState: [ReadableState],
2024-10-06 09:25:04       _maxListeners: undefined,
2024-10-06 09:25:04       _writableState: [WritableState],
2024-10-06 09:25:04       allowHalfOpen: false,
2024-10-06 09:25:04       _sockname: null,
2024-10-06 09:25:04       _pendingData: null,
2024-10-06 09:25:04       _pendingEncoding: '',
2024-10-06 09:25:04       server: undefined,
2024-10-06 09:25:04       _server: null,
2024-10-06 09:25:04       ssl: [TLSWrap],
2024-10-06 09:25:04       _requestCert: true,
2024-10-06 09:25:04       _rejectUnauthorized: true,
2024-10-06 09:25:04       parser: null,
2024-10-06 09:25:04       _httpMessage: [Circular *1],
2024-10-06 09:25:04       [Symbol(alpncallback)]: null,
2024-10-06 09:25:04       [Symbol(res)]: [TLSWrap],
2024-10-06 09:25:04       [Symbol(verified)]: true,
2024-10-06 09:25:04       [Symbol(pendingSession)]: null,
2024-10-06 09:25:04       [Symbol(async_id_symbol)]: 18441,
2024-10-06 09:25:04       [Symbol(kHandle)]: [TLSWrap],
2024-10-06 09:25:04       [Symbol(lastWriteQueueSize)]: 0,
2024-10-06 09:25:04       [Symbol(timeout)]: null,
2024-10-06 09:25:04       [Symbol(kBuffer)]: null,
2024-10-06 09:25:04       [Symbol(kBufferCb)]: null,
2024-10-06 09:25:04       [Symbol(kBufferGen)]: null,
2024-10-06 09:25:04       [Symbol(kCapture)]: false,
2024-10-06 09:25:04       [Symbol(kSetNoDelay)]: false,
2024-10-06 09:25:04       [Symbol(kSetKeepAlive)]: true,
2024-10-06 09:25:04       [Symbol(kSetKeepAliveInitialDelay)]: 60,
2024-10-06 09:25:04       [Symbol(kBytesRead)]: 0,
2024-10-06 09:25:04       [Symbol(kBytesWritten)]: 0,
2024-10-06 09:25:04       [Symbol(connect-options)]: [Object]
2024-10-06 09:25:04     },
2024-10-06 09:25:04     _header: 'POST /play/v1/asset/OBDRMY6Gh73zuUmf--j4Pw HTTP/1.1\r\n' +
2024-10-06 09:25:04       'Accept: application/json, text/plain, */*\r\n' +
2024-10-06 09:25:04       'Content-Type: application/json\r\n' +
2024-10-06 09:25:04       'User-Agent: okhttp/4.11.0\r\n' +
2024-10-06 09:25:04       'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6IjM2NTY3MmQwLTgzYjgtNDZlYy04ZWUwLTZlMTU0M2JjM2RlOSIsImNsaWVudEtleSI6IkEzYjc0d09pU0RNcmhKS2VYQUVJcWdSSUNCaUJObzdvIiwiaXNzIjoiTkZMIiwiZGV2aWNlSWQiOiJlZDliODk2NC0wMDhjLTQ4MDEtOGRmMi0xN2MxMGZhMzg0ZmUiLCJwbGFucyI6W3sicGxhbiI6ImZyZWUiLCJleHBpcmF0aW9uRGF0ZSI6IjIwMjUtMTAtMDYiLCJzb3VyY2UiOiJORkwiLCJzdGFydERhdGUiOiIyMDI0LTEwLTA2Iiwic3RhdHVzIjoiQUNUSVZFIiwidHJpYWwiOmZhbHNlfV0sIkRpc3BsYXlOYW1lIjoiQ1RWX0FORFJPSURfQ1RWIiwiTm90ZXMiOiIiLCJmb3JtRmFjdG9yIjoiQ1RWIiwibHVyYUFwcEtleSI6IlNaczU3ZEJHUnhiTDcyOGxWcDdEWVEiLCJwbGF0Zm9ybSI6IkFORFJPSUQiLCJwcm9kdWN0TmFtZSI6IkNUViIsInJvbGVzIjpbImNvbnRlbnQiLCJleHBlcmllbmNlIiwiZm9vdGJhbGwiLCJ1dGlsaXRpZXMiLCJ0ZWFtcyIsInBsYXkiLCJsaXZlIiwiaWRlbnRpdHkiLCJuZ3Nfc3RhdHMiLCJwYXltZW50c19hcGkiLCJuZ3NfdHJhY2tpbmciLCJuZ3NfcGxhdGZvcm0iLCJuZ3NfY29udGVudCIsIm5nc19jb21iaW5lIiwibmdzX2FkdmFuY2VkX3N0YXRzIiwibmZsX3BybyIsImVjb21tIiwibmZsX2lkX2FwaSIsInV0aWxpdGllc19sb2NhdGlvbiIsImZyZWUiXSwiY2l0eSI6InByb3ZpZGVuY2UiLCJjb3VudHJ5Q29kZSI6IlVTIiwiZG1hQ29kZSI6IjUyMSIsImhtYVRlYW1zIjpbIjEwNDAzMjAwLTY5YWItOWVhNi01YWY1LWUyNDBmYmMwOGJlYSJdLCJyZWdpb24iOiJSSSIsInppcENvZGUiOiIwMjkwMyIsImJyb3dzZXIiOiJPdGhlciIsImNlbGx1bGFyIjpmYWxzZSwiZW52aXJvbm1lbnQiOiJwcm9kdWN0aW9uIiwidWlkIjoiNDJhNTEzOWZlNzg3NDU2MWJiZjhmMDJhMzE0OGY4ODUiLCJuZXR3b3JrcyI6eyJBQkMiOiJBQkMiLCJGT1hERVBPUlRFUyI6IkZPWERFUE9SVEVTIiwiVEVMRU1VTkRPIjoiVEVMRU1VTkRPIiwiRVNQTkRFUE9SVEVTIjoiRVNQTkRFUE9SVEVTIiwiRVNQTiI6IkVTUE4iLCJGT1giOiJGT1giLCJOQkMiOiJOQkMiLCJDQlMiOiJDQlMiLCJORkxOIjoiTkZMTiJ9LCJleHAiOjE3MjgyMjQ3MDJ9.UpPr8ljK6RELgb9x5m_qD-O5zYTSebwIWS1_ToQPkto\r\n' +
2024-10-06 09:25:04       'Content-Length: 133\r\n' +
2024-10-06 09:25:04       'Accept-Encoding: gzip, compress, deflate, br\r\n' +
2024-10-06 09:25:04       'Host: api.nfl.com\r\n' +
2024-10-06 09:25:04       'Connection: close\r\n' +
2024-10-06 09:25:04       '\r\n',
2024-10-06 09:25:04     _keepAliveTimeout: 0,
2024-10-06 09:25:04     _onPendingData: [Function: nop],
2024-10-06 09:25:04     agent: Agent {
2024-10-06 09:25:04       _events: [Object: null prototype],
2024-10-06 09:25:04       _eventsCount: 2,
2024-10-06 09:25:04       _maxListeners: undefined,
2024-10-06 09:25:04       defaultPort: 443,
2024-10-06 09:25:04       protocol: 'https:',
2024-10-06 09:25:04       options: [Object: null prototype],
2024-10-06 09:25:04       requests: [Object: null prototype] {},
2024-10-06 09:25:04       sockets: [Object: null prototype],
2024-10-06 09:25:04       freeSockets: [Object: null prototype] {},
2024-10-06 09:25:04       keepAliveMsecs: 1000,
2024-10-06 09:25:04       keepAlive: false,
2024-10-06 09:25:04       maxSockets: Infinity,
2024-10-06 09:25:04       maxFreeSockets: 256,
2024-10-06 09:25:04       scheduling: 'lifo',
2024-10-06 09:25:04       maxTotalSockets: Infinity,
2024-10-06 09:25:04       totalSocketCount: 1,
2024-10-06 09:25:04       maxCachedSessions: 100,
2024-10-06 09:25:04       _sessionCache: [Object],
2024-10-06 09:25:04       [Symbol(kCapture)]: false
2024-10-06 09:25:04     },
2024-10-06 09:25:04     socketPath: undefined,
2024-10-06 09:25:04     method: 'POST',
2024-10-06 09:25:04     maxHeaderSize: undefined,
2024-10-06 09:25:04     insecureHTTPParser: undefined,
2024-10-06 09:25:04     joinDuplicateHeaders: undefined,
2024-10-06 09:25:04     path: '/play/v1/asset/OBDRMY6Gh73zuUmf--j4Pw',
2024-10-06 09:25:04     _ended: true,
2024-10-06 09:25:04     res: IncomingMessage {
2024-10-06 09:25:04       _readableState: [ReadableState],
2024-10-06 09:25:04       _events: [Object: null prototype],
2024-10-06 09:25:04       _eventsCount: 4,
2024-10-06 09:25:04       _maxListeners: undefined,
2024-10-06 09:25:04       socket: [TLSSocket],
2024-10-06 09:25:04       httpVersionMajor: 1,
2024-10-06 09:25:04       httpVersionMinor: 1,
2024-10-06 09:25:04       httpVersion: '1.1',
2024-10-06 09:25:04       complete: true,
2024-10-06 09:25:04       rawHeaders: [Array],
2024-10-06 09:25:04       rawTrailers: [],
2024-10-06 09:25:04       joinDuplicateHeaders: undefined,
2024-10-06 09:25:04       aborted: false,
2024-10-06 09:25:04       upgrade: false,
2024-10-06 09:25:04       url: '',
2024-10-06 09:25:04       method: null,
2024-10-06 09:25:04       statusCode: 404,
2024-10-06 09:25:04       statusMessage: 'Not Found',
2024-10-06 09:25:04       client: [TLSSocket],
2024-10-06 09:25:04       _consuming: true,
2024-10-06 09:25:04       _dumped: false,
2024-10-06 09:25:04       req: [Circular *1],
2024-10-06 09:25:04       responseUrl: 'https://api.nfl.com/play/v1/asset/OBDRMY6Gh73zuUmf--j4Pw',
2024-10-06 09:25:04       redirects: [],
2024-10-06 09:25:04       [Symbol(kCapture)]: false,
2024-10-06 09:25:04       [Symbol(kHeaders)]: [Object],
2024-10-06 09:25:04       [Symbol(kHeadersCount)]: 32,
2024-10-06 09:25:04       [Symbol(kTrailers)]: null,
2024-10-06 09:25:04       [Symbol(kTrailersCount)]: 0
2024-10-06 09:25:04     },
2024-10-06 09:25:04     aborted: false,
2024-10-06 09:25:04     timeoutCb: null,
2024-10-06 09:25:04     upgradeOrConnect: false,
2024-10-06 09:25:04     parser: null,
2024-10-06 09:25:04     maxHeadersCount: null,
2024-10-06 09:25:04     reusedSocket: false,
2024-10-06 09:25:04     host: 'api.nfl.com',
2024-10-06 09:25:04     protocol: 'https:',
2024-10-06 09:25:04     _redirectable: Writable {
2024-10-06 09:25:04       _writableState: [WritableState],
2024-10-06 09:25:04       _events: [Object: null prototype],
2024-10-06 09:25:04       _eventsCount: 3,
2024-10-06 09:25:04       _maxListeners: undefined,
2024-10-06 09:25:04       _options: [Object],
2024-10-06 09:25:04       _ended: true,
2024-10-06 09:25:04       _ending: true,
2024-10-06 09:25:04       _redirectCount: 0,
2024-10-06 09:25:04       _redirects: [],
2024-10-06 09:25:04       _requestBodyLength: 133,
2024-10-06 09:25:04       _requestBodyBuffers: [],
2024-10-06 09:25:04       _onNativeResponse: [Function (anonymous)],
2024-10-06 09:25:04       _currentRequest: [Circular *1],
2024-10-06 09:25:04       _currentUrl: 'https://api.nfl.com/play/v1/asset/OBDRMY6Gh73zuUmf--j4Pw',
2024-10-06 09:25:04       [Symbol(kCapture)]: false
2024-10-06 09:25:04     },
2024-10-06 09:25:04     [Symbol(kCapture)]: false,
2024-10-06 09:25:04     [Symbol(kBytesWritten)]: 0,
2024-10-06 09:25:04     [Symbol(kNeedDrain)]: false,
2024-10-06 09:25:04     [Symbol(corked)]: 0,
2024-10-06 09:25:04     [Symbol(kOutHeaders)]: [Object: null prototype] {
2024-10-06 09:25:04       accept: [Array],
2024-10-06 09:25:04       'content-type': [Array],
2024-10-06 09:25:04       'user-agent': [Array],
2024-10-06 09:25:04       authorization: [Array],
2024-10-06 09:25:04       'content-length': [Array],
2024-10-06 09:25:04       'accept-encoding': [Array],
2024-10-06 09:25:04       host: [Array]
2024-10-06 09:25:04     },
2024-10-06 09:25:04     [Symbol(errored)]: null,
2024-10-06 09:25:04     [Symbol(kHighWaterMark)]: 16384,
2024-10-06 09:25:04     [Symbol(kRejectNonStandardBodyWrites)]: false,
2024-10-06 09:25:04     [Symbol(kUniqueHeaders)]: null
2024-10-06 09:25:04   },
2024-10-06 09:25:04   response: {
2024-10-06 09:25:04     status: 404,
2024-10-06 09:25:04     statusText: 'Not Found',
2024-10-06 09:25:04     headers: AxiosHeaders {
2024-10-06 09:25:04       connection: 'close',
2024-10-06 09:25:04       'content-length': '122',
2024-10-06 09:25:04       'content-type': 'application/json',
2024-10-06 09:25:04       'cache-control': 'private',
2024-10-06 09:25:04       server: 'be-play-token',
2024-10-06 09:25:04       via: '1.1 varnish, 1.1 varnish, 1.1 varnish',
2024-10-06 09:25:04       'accept-ranges': 'bytes',
2024-10-06 09:25:04       date: 'Sun, 06 Oct 2024 13:25:04 GMT',
2024-10-06 09:25:04       'x-served-by': 'cache-bur-kbur8200144-BUR, cache-bur-kbur8200128-BUR, cache-lga21960-LGA',
2024-10-06 09:25:04       'x-cache': 'MISS, MISS, MISS',
2024-10-06 09:25:04       'x-cache-hits': '0, 0, 0',
2024-10-06 09:25:04       'x-timer': 'S1728221104.886308,VS0,VE232',
2024-10-06 09:25:04       vary: 'Accept-Encoding',
2024-10-06 09:25:04       'access-control-allow-origin': '*',
2024-10-06 09:25:04       'access-control-allow-methods': 'PUT,POST,OPTIONS,GET,PATCH,DELETE',
2024-10-06 09:25:04       'access-control-allow-headers': 'Authorization,Content-Type,Cache-Control,nfl_session'
2024-10-06 09:25:04     },

Ditto. Linked both my Amazon Prime and my FuboTV accounts under NFL Account:

Also not getting NFL Channels in the Linear option. Just getting FS1, FS2, BiG10 and Soccer Plus in linear (I don't enable the ESPN channels as they are picked up via TVE currently).

Here's my install script:

docker run --restart unless-stopped --name EPlusTV -p 8000:8000 -v config_dir:/app/config -e START_CHANNEL='7000' -e LINEAR_CHANNELS=TRUE -e NUM_OF_CHANNELS=50 -e ESPN=FALSE -e ESPN2=FALSE -e ESPN3=TRUE -e ESPNU=FALSE -e SEC=FALSE -e SECPLUS=FALSE -e ESPNPLUS=FALSE -e FOXSPORTS=TRUE -e NFLPLUS=TRUE -e NFLNETORK=TRUE -e NFLCHANNNEL=TRUE -e FOXSPORTS_MAX_RESOLUTION=UHD/HDR m0ngr31/eplustv

Like I mentioned earlier - you have to link them in the container with NFL_TVE, NFL_PRIME, NFL_PEACOCK, not just relying on what you did in your browser

Do it with env variables instead

You're spelling NFLNETWORK and NFLCHANNEL wrong. You don't need to add in the env vars where you're setting to FALSE, that's the default state.

I think I found the issue. New version should be up any minute now. You'll probably have to clear your entries.db and schedule.db files though

Thanks, I missed the _TVE and _PRIME envs (they were missing in your README but I see you updated it), added them and getting games now. Watching the NFL Network game now, it's working. Quality is not great since it's intended for mobile, I'm getting 720p/30 at something like 3kbps lol.

I think (not sure) that Prime games won't work though, at least nfl.com says you can't watch them there after linking Prime as a provider. Guess we'll see Thursday.

1 Like

Oh I guess that will be a good test

NFL Network, RedZone and NFL Channel look good now with TVE creds
Having issue with authenticating with Peacock (get error 288 but I think its an NFL issue since get the same error in browser authenticating peacock)

Now on to Sunday Ticket when ready for that :slight_smile:

1 Like

I'm glad to hear that Red Zone works without NFL+. The code I wrote for that was a total guess :slight_smile:

well spoke too soon.
work the first time around viewing channel but then going back after changing stations got 403 error

Channel #4300 has been idle for more than 5 minutes. Removing playlist info.
Could not parse chunklist properly!
Could not get chunklist for channel #4330.
AxiosError: Request failed with status code 403
    at settle (/app/node_modules/axios/lib/core/settle.js:19:12)
    at Unzip.handleStreamEnd (/app/node_modules/axios/lib/adapters/http.js:512:11)

--- truncated outut----

Saw something weird in the guide data, the national afternoon CBS game Packers vs. Rams is scheduled to start at 5:00 p.m. Eastern, but it really starts at 4:25. I'm guessing this is an NFL.com bug.

Thanks, appears to be up and running at the moment.! I'll check in tomorrow and see how it's doing...

Also, heads up, it's still scheduling NFL+ games even for those of us without:

Thanks to @joagomez I added NFL Sunday Ticket on 3.2.8

It'll show as NFL+ because that's the integration they are from.

Yeah, I just go off of what is in the API

Sorry, I forgot to clear out and reload my guide after the rebuilt. Those do play, actually. I was just confused because they say NFL+ even though I don't have that. Weirdly, though, the one showing the local station...

image

... fails to play.

Channel #90002 was setup improperly... Removing.

Yes I don't have a great distinction about it coming from NFL+ even if it's coming from your TV provider.

I'm guessing that other game is coming from FOX?

So if I picked up the NFL Sunday Ticket at the halfway mark or the season, this would allow all games to be accessed in Channels without having to do CC or HDMI Capture? If so, that's great.....

yup i'm watching games via eplustv right now
Thanks @m0ngr31 for the integration!!!

3 Likes