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
I will also add TVE is fickle at times, especially with some providers, and having another source for the same content could be useful.
I just pushed an update that adds in support for FOX Sports. I'm going to investigate NBC Sports next.
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!
did you add...
-e FOXSPORTS=TRUE
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!
If you are really ambitious I know I’d love to have Bally Sports for next MLB season.
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 
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.
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 
4K? WOW. This would be fantastic!
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?
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.
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?)
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.
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! 
I caught the last couple of minutes of the World Cup postgame show. Worked like a charm in 4K.