ESPN+ & FOX Sports with Custom Channels via EPlusTV

Despite this being the defacto support thread for my container, lots of my users (and me) don't use Channels, so this is a feature for them

4 Likes

I will also add TVE is fickle at times, especially with some providers, and having another source for the same content could be useful.

2 Likes

I just pushed an update that adds in support for FOX Sports. I'm going to investigate NBC Sports next.

3 Likes

This is really a great addition, thanks @m0ngr31! The ESPN+ content is great but it desperately needed an improved UI which Channels provides. I am hung up on one critical thing....getting this successfully fed thru a vpn container. Anyone have luck with that? I have successfully setup azincen/nordvpn and bubuntux/nordvpn containers and told the eplustv container to use the vpn container for it's networking but i get this error shown below in logs. Any thoughts? Thanks

2022-12-12T22:47:35.138492255Z 
2022-12-12T22:47:35.138534764Z > [email protected] start
2022-12-12T22:47:35.138538218Z > ts-node index.ts
2022-12-12T22:47:35.138540767Z 
2022-12-12T22:47:38.536680294Z Refreshing device token
2022-12-12T22:47:39.667857043Z Refreshing device refresh token
2022-12-12T22:47:43.740874043Z Refreshing BAM access token
2022-12-12T22:47:47.646414811Z [AxiosError: Request failed with status code 400] {
2022-12-12T22:47:47.646449227Z   code: 'ERR_BAD_REQUEST',
2022-12-12T22:47:47.646453824Z   config: {
2022-12-12T22:47:47.646456322Z     transitional: {
2022-12-12T22:47:47.646458762Z       silentJSONParsing: true,
2022-12-12T22:47:47.646461281Z       forcedJSONParsing: true,
2022-12-12T22:47:47.646473351Z       clarifyTimeoutError: false
2022-12-12T22:47:47.646476051Z     },
2022-12-12T22:47:47.646478517Z     adapter: [Function: httpAdapter],
2022-12-12T22:47:47.646481059Z     transformRequest: [ [Function: transformRequest] ],
2022-12-12T22:47:47.646483537Z     transformResponse: [ [Function: transformResponse] ],
2022-12-12T22:47:47.646486016Z     timeout: 0,
2022-12-12T22:47:47.646488489Z     xsrfCookieName: 'XSRF-TOKEN',
2022-12-12T22:47:47.646490927Z     xsrfHeaderName: 'X-XSRF-TOKEN',
2022-12-12T22:47:47.646493372Z     maxContentLength: -1,
2022-12-12T22:47:47.646495784Z     maxBodyLength: -1,
2022-12-12T22:47:47.646498493Z     env: { FormData: [Function] },
2022-12-12T22:47:47.646500968Z     validateStatus: [Function: validateStatus],
2022-12-12T22:47:47.646503420Z     headers: {
2022-12-12T22:47:47.646505820Z       Accept: 'application/json',
2022-12-12T22:47:47.646508224Z       'Content-Type': 'application/x-www-form-urlencoded',
2022-12-12T22:47:47.646512409Z       Authorization: 'Bearer ZXNwbiZicm93c2VyJjEuMC4w.ptUt7QxsteaRruuPmGZFaJByOoqKvDP2a5YkInHrc7c',
2022-12-12T22:47:47.646514998Z       'User-Agent': 'axios/0.27.2',
2022-12-12T22:47:47.646517500Z       'Content-Length': 751
2022-12-12T22:47:47.646520047Z     },
2022-12-12T22:47:47.646522395Z     method: 'post',
2022-12-12T22:47:47.646524833Z     url: 'https://us.edge.bamgrid.com/token',
2022-12-12T22:47:47.646527925Z     data: 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&latitude=0&longitude=0&platform=browser&setCookie=false&subject_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJmMWM2Zjc5Ni1kZjYxLTRjNjQtYmFkMS0zYzMxYWM1YzdkMDYiLCJhdWQiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOnRva2VuIiwibmJmIjoxNjcwODg1MjY2LCJpZHAiOiJodHRwczpcL1wvYXV0aG9yaXphdGlvbi5nby5jb20iLCJpc3MiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOmFjY291bnQiLCJwaWQiOiIxZWY3MTEyYS04M2I5LTRiMGMtYTAzNS0wNGFlZWMyZDRkNWMiLCJleHAiOjE2NzA4ODU1NjYsImlhdCI6MTY3MDg4NTI2NiwiYWlkIjoiezgxQTAzMDY1LTVDN0QtNEQ5RC1CMUJELTM2QTA2MzRFRUZFMn0iLCJkaWQiOiI0ODI0NTIzOS1kZDFjLTQwY2UtYjJiZi01ZjcxMTc0ZDkyN2QifQ.9C6NZJsMAYwZGNZStRkCE799QAzidzSbZZTtA5yQDHU&subject_token_type=urn%3Abamtech%3Aparams%3Aoauth%3Atoken-type%3Aaccount'
2022-12-12T22:47:47.646532144Z   },
2022-12-12T22:47:47.646534503Z   request: <ref *1> ClientRequest {
2022-12-12T22:47:47.646538651Z     _events: [Object: null prototype] {
2022-12-12T22:47:47.646541033Z       abort: [Function (anonymous)],
2022-12-12T22:47:47.646546572Z       aborted: [Function (anonymous)],
2022-12-12T22:47:47.646549222Z       connect: [Function (anonymous)],
2022-12-12T22:47:47.646551610Z       error: [Function (anonymous)],
2022-12-12T22:47:47.646554004Z       socket: [Function (anonymous)],
2022-12-12T22:47:47.646556404Z       timeout: [Function (anonymous)],
2022-12-12T22:47:47.646558789Z       prefinish: [Function: requestOnPrefinish]
2022-12-12T22:47:47.646561291Z     },
2022-12-12T22:47:47.646563641Z     _eventsCount: 7,
2022-12-12T22:47:47.646567023Z     _maxListeners: undefined,
2022-12-12T22:47:47.646571157Z     outputData: [],
2022-12-12T22:47:47.646576391Z     outputSize: 0,
2022-12-12T22:47:47.646578927Z     writable: true,
2022-12-12T22:47:47.646581349Z     destroyed: false,
2022-12-12T22:47:47.646583790Z     _last: true,
2022-12-12T22:47:47.646586258Z     chunkedEncoding: false,
2022-12-12T22:47:47.646588681Z     shouldKeepAlive: false,
2022-12-12T22:47:47.646591104Z     maxRequestsOnConnectionReached: false,
2022-12-12T22:47:47.646593946Z     _defaultKeepAlive: true,
2022-12-12T22:47:47.646596447Z     useChunkedEncodingByDefault: true,
2022-12-12T22:47:47.646598848Z     sendDate: false,
2022-12-12T22:47:47.646601217Z     _removedConnection: false,
2022-12-12T22:47:47.646603595Z     _removedContLen: false,
2022-12-12T22:47:47.646606011Z     _removedTE: false,
2022-12-12T22:47:47.646611218Z     _contentLength: null,
2022-12-12T22:47:47.646613710Z     _hasBody: true,
2022-12-12T22:47:47.646616174Z     _trailer: '',
2022-12-12T22:47:47.646618545Z     finished: true,
2022-12-12T22:47:47.646620913Z     _headerSent: true,
2022-12-12T22:47:47.646623315Z     _closed: false,
2022-12-12T22:47:47.646625809Z     socket: TLSSocket {
2022-12-12T22:47:47.646628392Z       _tlsOptions: [Object],
2022-12-12T22:47:47.646630789Z       _secureEstablished: true,
2022-12-12T22:47:47.646633212Z       _securePending: false,
2022-12-12T22:47:47.646635600Z       _newSessionPending: false,
2022-12-12T22:47:47.646638137Z       _controlReleased: true,
2022-12-12T22:47:47.646643066Z       secureConnecting: false,
2022-12-12T22:47:47.646645535Z       _SNICallback: null,
2022-12-12T22:47:47.646647913Z       servername: 'us.edge.bamgrid.com',
2022-12-12T22:47:47.646650345Z       alpnProtocol: false,
2022-12-12T22:47:47.646652744Z       authorized: true,
2022-12-12T22:47:47.646655131Z       authorizationError: null,
2022-12-12T22:47:47.646657528Z       encrypted: true,
2022-12-12T22:47:47.646659910Z       _events: [Object: null prototype],
2022-12-12T22:47:47.646662614Z       _eventsCount: 10,
2022-12-12T22:47:47.646664980Z       connecting: false,
2022-12-12T22:47:47.646667362Z       _hadError: false,
2022-12-12T22:47:47.646669744Z       _parent: null,
2022-12-12T22:47:47.646672154Z       _host: 'us.edge.bamgrid.com',
2022-12-12T22:47:47.646674583Z       _readableState: [ReadableState],
2022-12-12T22:47:47.646677031Z       _maxListeners: undefined,
2022-12-12T22:47:47.646679457Z       _writableState: [WritableState],
2022-12-12T22:47:47.646682230Z       allowHalfOpen: false,
2022-12-12T22:47:47.646684672Z       _sockname: null,
2022-12-12T22:47:47.646687079Z       _pendingData: null,
2022-12-12T22:47:47.646689478Z       _pendingEncoding: '',
2022-12-12T22:47:47.646691865Z       server: undefined,
2022-12-12T22:47:47.646694280Z       _server: null,
2022-12-12T22:47:47.646696735Z       ssl: [TLSWrap],
2022-12-12T22:47:47.646699210Z       _requestCert: true,
2022-12-12T22:47:47.646701603Z       _rejectUnauthorized: true,
2022-12-12T22:47:47.646704086Z       parser: null,
2022-12-12T22:47:47.646706584Z       _httpMessage: [Circular *1],
2022-12-12T22:47:47.646709000Z       [Symbol(res)]: [TLSWrap],
2022-12-12T22:47:47.646711596Z       [Symbol(verified)]: true,
2022-12-12T22:47:47.646714130Z       [Symbol(pendingSession)]: null,
2022-12-12T22:47:47.646716749Z       [Symbol(async_id_symbol)]: 762,
2022-12-12T22:47:47.646719421Z       [Symbol(kHandle)]: [TLSWrap],
2022-12-12T22:47:47.646721872Z       [Symbol(lastWriteQueueSize)]: 0,
2022-12-12T22:47:47.646726626Z       [Symbol(timeout)]: null,
2022-12-12T22:47:47.646729261Z       [Symbol(kBuffer)]: null,
2022-12-12T22:47:47.646731692Z       [Symbol(kBufferCb)]: null,
2022-12-12T22:47:47.646734133Z       [Symbol(kBufferGen)]: null,
2022-12-12T22:47:47.646736595Z       [Symbol(kCapture)]: false,
2022-12-12T22:47:47.646739169Z       [Symbol(kSetNoDelay)]: false,
2022-12-12T22:47:47.646741689Z       [Symbol(kSetKeepAlive)]: true,
2022-12-12T22:47:47.646744320Z       [Symbol(kSetKeepAliveInitialDelay)]: 60,
2022-12-12T22:47:47.646746867Z       [Symbol(kBytesRead)]: 0,
2022-12-12T22:47:47.646749328Z       [Symbol(kBytesWritten)]: 0,
2022-12-12T22:47:47.646751804Z       [Symbol(connect-options)]: [Object],
2022-12-12T22:47:47.646754262Z       [Symbol(RequestTimeout)]: undefined
2022-12-12T22:47:47.646756790Z     },
2022-12-12T22:47:47.646759170Z     _header: 'POST /token HTTP/1.1\r\n' +
2022-12-12T22:47:47.646761723Z       'Accept: application/json\r\n' +
2022-12-12T22:47:47.646764316Z       'Content-Type: application/x-www-form-urlencoded\r\n' +
2022-12-12T22:47:47.646766942Z       'Authorization: Bearer ZXNwbiZicm93c2VyJjEuMC4w.ptUt7QxsteaRruuPmGZFaJByOoqKvDP2a5YkInHrc7c\r\n' +
2022-12-12T22:47:47.646769610Z       'User-Agent: axios/0.27.2\r\n' +
2022-12-12T22:47:47.646772263Z       'Content-Length: 751\r\n' +
2022-12-12T22:47:47.646774703Z       'Host: us.edge.bamgrid.com\r\n' +
2022-12-12T22:47:47.646777150Z       'Connection: close\r\n' +
2022-12-12T22:47:47.646779680Z       '\r\n',
2022-12-12T22:47:47.646782136Z     _keepAliveTimeout: 0,
2022-12-12T22:47:47.646784619Z     _onPendingData: [Function: nop],
2022-12-12T22:47:47.646787093Z     agent: Agent {
2022-12-12T22:47:47.646789975Z       _events: [Object: null prototype],
2022-12-12T22:47:47.646792595Z       _eventsCount: 2,
2022-12-12T22:47:47.646794994Z       _maxListeners: undefined,
2022-12-12T22:47:47.646797453Z       defaultPort: 443,
2022-12-12T22:47:47.646799959Z       protocol: 'https:',
2022-12-12T22:47:47.646804982Z       options: [Object: null prototype],
2022-12-12T22:47:47.646807448Z       requests: [Object: null prototype] {},
2022-12-12T22:47:47.646809862Z       sockets: [Object: null prototype],
2022-12-12T22:47:47.646813741Z       freeSockets: [Object: null prototype] {},
2022-12-12T22:47:47.646817612Z       keepAliveMsecs: 1000,
2022-12-12T22:47:47.646821892Z       keepAlive: false,
2022-12-12T22:47:47.646824402Z       maxSockets: Infinity,
2022-12-12T22:47:47.646826813Z       maxFreeSockets: 256,
2022-12-12T22:47:47.646829186Z       scheduling: 'lifo',
2022-12-12T22:47:47.646831581Z       maxTotalSockets: Infinity,
2022-12-12T22:47:47.646834096Z       totalSocketCount: 1,
2022-12-12T22:47:47.646836565Z       maxCachedSessions: 100,
2022-12-12T22:47:47.646838996Z       _sessionCache: [Object],
2022-12-12T22:47:47.646841401Z       [Symbol(kCapture)]: false
2022-12-12T22:47:47.646843967Z     },
2022-12-12T22:47:47.646846292Z     socketPath: undefined,
2022-12-12T22:47:47.646848677Z     method: 'POST',
2022-12-12T22:47:47.646851088Z     maxHeaderSize: undefined,
2022-12-12T22:47:47.646853561Z     insecureHTTPParser: undefined,
2022-12-12T22:47:47.646855963Z     path: '/token',
2022-12-12T22:47:47.646858347Z     _ended: true,
2022-12-12T22:47:47.646860832Z     res: IncomingMessage {
2022-12-12T22:47:47.646863380Z       _readableState: [ReadableState],
2022-12-12T22:47:47.646866072Z       _events: [Object: null prototype],
2022-12-12T22:47:47.646868579Z       _eventsCount: 4,
2022-12-12T22:47:47.646870983Z       _maxListeners: undefined,
2022-12-12T22:47:47.646873395Z       socket: [TLSSocket],
2022-12-12T22:47:47.646875801Z       httpVersionMajor: 1,
2022-12-12T22:47:47.646878194Z       httpVersionMinor: 1,
2022-12-12T22:47:47.646880566Z       httpVersion: '1.1',
2022-12-12T22:47:47.646882975Z       complete: true,
2022-12-12T22:47:47.646885427Z       rawHeaders: [Array],
2022-12-12T22:47:47.646887814Z       rawTrailers: [],
2022-12-12T22:47:47.646890193Z       aborted: false,
2022-12-12T22:47:47.646892587Z       upgrade: false,
2022-12-12T22:47:47.646897668Z       url: '',
2022-12-12T22:47:47.646900121Z       method: null,
2022-12-12T22:47:47.646902501Z       statusCode: 400,
2022-12-12T22:47:47.646904915Z       statusMessage: 'Bad Request',
2022-12-12T22:47:47.646907364Z       client: [TLSSocket],
2022-12-12T22:47:47.646909799Z       _consuming: false,
2022-12-12T22:47:47.646912190Z       _dumped: false,
2022-12-12T22:47:47.646914569Z       req: [Circular *1],
2022-12-12T22:47:47.646916954Z       responseUrl: 'https://us.edge.bamgrid.com/token',
2022-12-12T22:47:47.646919403Z       redirects: [],
2022-12-12T22:47:47.646921763Z       [Symbol(kCapture)]: false,
2022-12-12T22:47:47.646924214Z       [Symbol(kHeaders)]: [Object],
2022-12-12T22:47:47.646926995Z       [Symbol(kHeadersCount)]: 22,
2022-12-12T22:47:47.646929506Z       [Symbol(kTrailers)]: null,
2022-12-12T22:47:47.646932087Z       [Symbol(kTrailersCount)]: 0,
2022-12-12T22:47:47.646934548Z       [Symbol(RequestTimeout)]: undefined
2022-12-12T22:47:47.646937064Z     },
2022-12-12T22:47:47.646939544Z     aborted: false,
2022-12-12T22:47:47.646941927Z     timeoutCb: null,
2022-12-12T22:47:47.646944413Z     upgradeOrConnect: false,
2022-12-12T22:47:47.646946993Z     parser: null,
2022-12-12T22:47:47.646949352Z     maxHeadersCount: null,
2022-12-12T22:47:47.646951737Z     reusedSocket: false,
2022-12-12T22:47:47.646954115Z     host: 'us.edge.bamgrid.com',
2022-12-12T22:47:47.646956517Z     protocol: 'https:',
2022-12-12T22:47:47.646958887Z     _redirectable: Writable {
2022-12-12T22:47:47.646961322Z       _writableState: [WritableState],
2022-12-12T22:47:47.646963898Z       _events: [Object: null prototype],
2022-12-12T22:47:47.646966743Z       _eventsCount: 3,
2022-12-12T22:47:47.646969153Z       _maxListeners: undefined,
2022-12-12T22:47:47.646971554Z       _options: [Object],
2022-12-12T22:47:47.646973960Z       _ended: true,
2022-12-12T22:47:47.646976386Z       _ending: true,
2022-12-12T22:47:47.646978758Z       _redirectCount: 0,
2022-12-12T22:47:47.646983414Z       _redirects: [],
2022-12-12T22:47:47.646985909Z       _requestBodyLength: 751,
2022-12-12T22:47:47.646988300Z       _requestBodyBuffers: [],
2022-12-12T22:47:47.646990700Z       _onNativeResponse: [Function (anonymous)],
2022-12-12T22:47:47.646993223Z       _currentRequest: [Circular *1],
2022-12-12T22:47:47.646995724Z       _currentUrl: 'https://us.edge.bamgrid.com/token',
2022-12-12T22:47:47.646998157Z       [Symbol(kCapture)]: false
2022-12-12T22:47:47.647000615Z     },
2022-12-12T22:47:47.647002931Z     [Symbol(kCapture)]: false,
2022-12-12T22:47:47.647005480Z     [Symbol(kNeedDrain)]: false,
2022-12-12T22:47:47.647007983Z     [Symbol(corked)]: 0,
2022-12-12T22:47:47.647010441Z     [Symbol(kOutHeaders)]: [Object: null prototype] {
2022-12-12T22:47:47.647012913Z       accept: [Array],
2022-12-12T22:47:47.647015300Z       'content-type': [Array],
2022-12-12T22:47:47.647017783Z       authorization: [Array],
2022-12-12T22:47:47.647020200Z       'user-agent': [Array],
2022-12-12T22:47:47.647022677Z       'content-length': [Array],
2022-12-12T22:47:47.647025236Z       host: [Array]
2022-12-12T22:47:47.647027627Z     },
2022-12-12T22:47:47.647030002Z     [Symbol(kUniqueHeaders)]: null
2022-12-12T22:47:47.647032500Z   },
2022-12-12T22:47:47.647035217Z   response: {
2022-12-12T22:47:47.647037572Z     status: 400,
2022-12-12T22:47:47.647039929Z     statusText: 'Bad Request',
2022-12-12T22:47:47.647042349Z     headers: {
2022-12-12T22:47:47.647044967Z       'content-type': 'application/json',
2022-12-12T22:47:47.647047521Z       'content-length': '72',
2022-12-12T22:47:47.647049989Z       connection: 'close',
2022-12-12T22:47:47.647052583Z       date: 'Mon, 12 Dec 2022 22:47:47 GMT',
2022-12-12T22:47:47.647055361Z       'x-request-id': '675b226d9edb2e3496b5c06d644db20f',
2022-12-12T22:47:47.647058032Z       'x-bamtech-region': 'us-east-1',
2022-12-12T22:47:47.647060573Z       'cache-control': 'no-store',
2022-12-12T22:47:47.647067814Z       'x-cache': 'Error from cloudfront',
2022-12-12T22:47:47.647070471Z       via: '1.1 2b873f743281511e290d4958008561c2.cloudfront.net (CloudFront)',
2022-12-12T22:47:47.647073135Z       'x-amz-cf-pop': 'EWR53-C3',
2022-12-12T22:47:47.647075675Z       'x-amz-cf-id': 'fGoiWM2V8vBSrmndUQPQpdfi6Z53TaBBxReiezRquHMGiQPkeSxQhA=='
2022-12-12T22:47:47.647078214Z     },
2022-12-12T22:47:47.647080518Z     config: {
2022-12-12T22:47:47.647082875Z       transitional: [Object],
2022-12-12T22:47:47.647085269Z       adapter: [Function: httpAdapter],
2022-12-12T22:47:47.647087677Z       transformRequest: [Array],
2022-12-12T22:47:47.647090075Z       transformResponse: [Array],
2022-12-12T22:47:47.647092481Z       timeout: 0,
2022-12-12T22:47:47.647094866Z       xsrfCookieName: 'XSRF-TOKEN',
2022-12-12T22:47:47.647097272Z       xsrfHeaderName: 'X-XSRF-TOKEN',
2022-12-12T22:47:47.647099669Z       maxContentLength: -1,
2022-12-12T22:47:47.647102062Z       maxBodyLength: -1,
2022-12-12T22:47:47.647104433Z       env: [Object],
2022-12-12T22:47:47.647106805Z       validateStatus: [Function: validateStatus],
2022-12-12T22:47:47.647109234Z       headers: [Object],
2022-12-12T22:47:47.647111623Z       method: 'post',
2022-12-12T22:47:47.647113996Z       url: 'https://us.edge.bamgrid.com/token',
2022-12-12T22:47:47.647116517Z       data: 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&latitude=0&longitude=0&platform=browser&setCookie=false&subject_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJmMWM2Zjc5Ni1kZjYxLTRjNjQtYmFkMS0zYzMxYWM1YzdkMDYiLCJhdWQiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOnRva2VuIiwibmJmIjoxNjcwODg1MjY2LCJpZHAiOiJodHRwczpcL1wvYXV0aG9yaXphdGlvbi5nby5jb20iLCJpc3MiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOmFjY291bnQiLCJwaWQiOiIxZWY3MTEyYS04M2I5LTRiMGMtYTAzNS0wNGFlZWMyZDRkNWMiLCJleHAiOjE2NzA4ODU1NjYsImlhdCI6MTY3MDg4NTI2NiwiYWlkIjoiezgxQTAzMDY1LTVDN0QtNEQ5RC1CMUJELTM2QTA2MzRFRUZFMn0iLCJkaWQiOiI0ODI0NTIzOS1kZDFjLTQwY2UtYjJiZi01ZjcxMTc0ZDkyN2QifQ.9C6NZJsMAYwZGNZStRkCE799QAzidzSbZZTtA5yQDHU&subject_token_type=urn%3Abamtech%3Aparams%3Aoauth%3Atoken-type%3Aaccount'
2022-12-12T22:47:47.647120238Z     },
2022-12-12T22:47:47.647122565Z     request: <ref *1> ClientRequest {
2022-12-12T22:47:47.647125228Z       _events: [Object: null prototype],
2022-12-12T22:47:47.647127632Z       _eventsCount: 7,
2022-12-12T22:47:47.647130285Z       _maxListeners: undefined,
2022-12-12T22:47:47.647132815Z       outputData: [],
2022-12-12T22:47:47.647137251Z       outputSize: 0,
2022-12-12T22:47:47.647139706Z       writable: true,
2022-12-12T22:47:47.647142081Z       destroyed: false,
2022-12-12T22:47:47.647144477Z       _last: true,
2022-12-12T22:47:47.647146849Z       chunkedEncoding: false,
2022-12-12T22:47:47.647149277Z       shouldKeepAlive: false,
2022-12-12T22:47:47.647151677Z       maxRequestsOnConnectionReached: false,
2022-12-12T22:47:47.647154121Z       _defaultKeepAlive: true,
2022-12-12T22:47:47.647156523Z       useChunkedEncodingByDefault: true,
2022-12-12T22:47:47.647158945Z       sendDate: false,
2022-12-12T22:47:47.647161366Z       _removedConnection: false,
2022-12-12T22:47:47.647164262Z       _removedContLen: false,
2022-12-12T22:47:47.647166700Z       _removedTE: false,
2022-12-12T22:47:47.647169119Z       _contentLength: null,
2022-12-12T22:47:47.647171530Z       _hasBody: true,
2022-12-12T22:47:47.647173922Z       _trailer: '',
2022-12-12T22:47:47.647176293Z       finished: true,
2022-12-12T22:47:47.647178666Z       _headerSent: true,
2022-12-12T22:47:47.647181064Z       _closed: false,
2022-12-12T22:47:47.647183447Z       socket: [TLSSocket],
2022-12-12T22:47:47.647185834Z       _header: 'POST /token HTTP/1.1\r\n' +
2022-12-12T22:47:47.647188334Z         'Accept: application/json\r\n' +
2022-12-12T22:47:47.647190837Z         'Content-Type: application/x-www-form-urlencoded\r\n' +
2022-12-12T22:47:47.647193371Z         'Authorization: Bearer ZXNwbiZicm93c2VyJjEuMC4w.ptUt7QxsteaRruuPmGZFaJByOoqKvDP2a5YkInHrc7c\r\n' +
2022-12-12T22:47:47.647195957Z         'User-Agent: axios/0.27.2\r\n' +
2022-12-12T22:47:47.647198517Z         'Content-Length: 751\r\n' +
2022-12-12T22:47:47.647200993Z         'Host: us.edge.bamgrid.com\r\n' +
2022-12-12T22:47:47.647203499Z         'Connection: close\r\n' +
2022-12-12T22:47:47.647205912Z         '\r\n',
2022-12-12T22:47:47.647208317Z       _keepAliveTimeout: 0,
2022-12-12T22:47:47.647210750Z       _onPendingData: [Function: nop],
2022-12-12T22:47:47.647213189Z       agent: [Agent],
2022-12-12T22:47:47.647215569Z       socketPath: undefined,
2022-12-12T22:47:47.647220093Z       method: 'POST',
2022-12-12T22:47:47.647222568Z       maxHeaderSize: undefined,
2022-12-12T22:47:47.647224958Z       insecureHTTPParser: undefined,
2022-12-12T22:47:47.647227361Z       path: '/token',
2022-12-12T22:47:47.647229750Z       _ended: true,
2022-12-12T22:47:47.647232182Z       res: [IncomingMessage],
2022-12-12T22:47:47.647234650Z       aborted: false,
2022-12-12T22:47:47.647237033Z       timeoutCb: null,
2022-12-12T22:47:47.647239426Z       upgradeOrConnect: false,
2022-12-12T22:47:47.647241807Z       parser: null,
2022-12-12T22:47:47.647244163Z       maxHeadersCount: null,
2022-12-12T22:47:47.647246535Z       reusedSocket: false,
2022-12-12T22:47:47.647248896Z       host: 'us.edge.bamgrid.com',
2022-12-12T22:47:47.647251293Z       protocol: 'https:',
2022-12-12T22:47:47.647253910Z       _redirectable: [Writable],
2022-12-12T22:47:47.647256346Z       [Symbol(kCapture)]: false,
2022-12-12T22:47:47.647258817Z       [Symbol(kNeedDrain)]: false,
2022-12-12T22:47:47.647261268Z       [Symbol(corked)]: 0,
2022-12-12T22:47:47.647263703Z       [Symbol(kOutHeaders)]: [Object: null prototype],
2022-12-12T22:47:47.647266217Z       [Symbol(kUniqueHeaders)]: null
2022-12-12T22:47:47.647268664Z     },
2022-12-12T22:47:47.647270983Z     data: {
2022-12-12T22:47:47.647273311Z       error: 'unauthorized_client',
2022-12-12T22:47:47.647275697Z       error_description: 'forbidden-location'
2022-12-12T22:47:47.647278138Z     }
2022-12-12T22:47:47.647280453Z   }
2022-12-12T22:47:47.647282794Z }
2022-12-12T22:47:47.647285138Z Could not get BAM access token
2022-12-12T22:47:47.647287559Z === Getting events ===
2022-12-12T22:47:47.647564307Z Looking for live events...
2022-12-12T22:47:49.178334705Z Looking for upcoming events...
2022-12-12T22:47:57.512783528Z Cleaning up old events
2022-12-12T22:47:57.514732818Z === Done getting events ===
2022-12-12T22:47:57.514760194Z === Building the schedule ===
2022-12-12T22:47:57.516702450Z === Done building the schedule ===
2022-12-12T22:47:57.516726977Z === Starting Server ===
2022-12-12T22:47:57.518465296Z Server started on port 8000

The streaming services have blocked nordvpn and most other vpns

It works on my firetv via vpn, although somewhat sporadic at times.

Forgive my naiveté, but I don't see a prompt for a Fox prompt for the token. Is there something I need to do here?

Also, thank you very much for the updates! This app has made huge progress and is a welcome addition!

2 Likes

did you add...
-e FOXSPORTS=TRUE

1 Like

At some point do you think it will be possible to add the Longhorn Network (LHN)? That's one of the options I have when I look at live events on espn.com. Thanks for all you're doing with this!

1 Like

If you are really ambitious I know I’d love to have Bally Sports for next MLB season.

3 Likes

I'll need someone's credentials so that I can develop for it, but at this point I'm all about adding as much as I can :man_shrugging:

5 Likes

I just made a new release that has support for the Longhorn Network: -e LONGHORN=true... I tried playback but it didn't work for me, but I'm not sure if my provider has access to it or not? Give it a shot and see.

1 Like

I pushed out a new update that fixes some FOX playback issues that were lingering from yesterday, with a nice bonus of being able to watch 4K HDR streams for events that support it :grinning:

4K? WOW. This would be fantastic!

1 Like

I tried the Longhorn Network and it didn't work. I went to try it on espn.com and got a message that the program isn't included in my subscription, so I'm an idiot. Maybe someone else can test it. Thanks for adding it though. Sorry about that!

The 4K FOX stream worked great. I'm assuming that's the only one offered in 4K?

1 Like

Fox Sports only does select events in 4K so far. They've had all of the World Cup matches this year and I think they do some college football too.

2 Likes

So, I would assume that the "network" feed for FOX of tomorrow's world cup match, for example, should "pick" the 4K feed? Any way to confirm this ahead of time? (or better yet, put it on a different guide line item?)

1 Like

Unlike the ESPN feeds, I can't force the Fox streams to pick a certain bitrate. However it has always picked the best quality stream for me so far (based on the environment variable), so I'd say chances are likely that you will get a 4K stream.

1 Like

This really is a fantastic development - the ability to get a 4K stream onto the DVR has been a wish of mine, basically since i got a 4K TV. Fantastic stuff - I'll even watch (cough) knee-grabbing sissy soccer, to try it out! :slight_smile:

1 Like

I caught the last couple of minutes of the World Cup postgame show. Worked like a charm in 4K.

1 Like