Oh it doesn't have to be docker, just running your script with node exposes an endpoint right?
Can it not talk to the cached file from the running cc4c server? Could you have it login like the Eplustv does?
Has anyone else had any success?
The peacock screenshot was from your screenshot, not mine, peacock doesnt work for me either, I assume something isnt authenticating.
Hello... just ran this but I'm running into a bunch of errors after getting it setup in Docker... here's what I"m seeing, if you can lend some insight into what I might be doing wrong?
> cc-epg@0.1.0 start
> ts-node index.tsx
=== ccEPG v0.1.0 starting ===
=== Getting events ===
Looking for Peacock events...
Error getting Peacock channels
AxiosError: Request failed with status code 400
at settle (/app/node_modules/axios/lib/core/settle.js:19:12)
at IncomingMessage.handleStreamEnd (/app/node_modules/axios/lib/adapters/http.js:512:11)
at IncomingMessage.emit (node:events:529:35)
at IncomingMessage.emit (node:domain:489:12)
at endReadableNT (node:internal/streams/readable:1400:12)
at processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: 'ERR_BAD_REQUEST',
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
adapter: [ 'xhr', 'http' ],
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function], Blob: [class Blob] },
validateStatus: [Function: validateStatus],
headers: AxiosHeaders {
Accept: 'application/json, text/plain, */*',
'X-SkyOTT-Device': 'COMPUTER',
'X-SkyOTT-Platform': 'PC',
'X-SkyOTT-Proposition': 'NBCUOTT',
'X-SkyOTT-Territory': 'US',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0',
'Accept-Encoding': 'gzip, compress, deflate, br'
},
method: 'get',
url: 'https://bff-ext.clients.peacocktv.com/bff/channel_guide?startTime=2024-10-16T18:50+00:00&assetsPerChannelCapLimit=1000&contentSegments=D2C,Free',
data: undefined
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype] {
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
socket: [Function (anonymous)],
timeout: [Function (anonymous)],
finish: [Function: requestOnFinish]
},
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: 0,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: false,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: 'bff-ext.clients.peacocktv.com',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 10,
connecting: false,
_hadError: false,
_parent: null,
_host: 'bff-ext.clients.peacocktv.com',
_closeAfterHandlingError: false,
_readableState: [ReadableState],
_maxListeners: undefined,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular *1],
[Symbol(alpncallback)]: null,
[Symbol(res)]: [TLSWrap],
[Symbol(verified)]: true,
[Symbol(pendingSession)]: null,
[Symbol(async_id_symbol)]: 946,
[Symbol(kHandle)]: [TLSWrap],
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kSetNoDelay)]: false,
[Symbol(kSetKeepAlive)]: true,
[Symbol(kSetKeepAliveInitialDelay)]: 60,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0,
[Symbol(connect-options)]: [Object]
},
_header: 'GET /bff/channel_guide?startTime=2024-10-16T18:50+00:00&assetsPerChannelCapLimit=1000&contentSegments=D2C,Free HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'X-SkyOTT-Device: COMPUTER\r\n' +
'X-SkyOTT-Platform: PC\r\n' +
'X-SkyOTT-Proposition: NBCUOTT\r\n' +
'X-SkyOTT-Territory: US\r\n' +
'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0\r\n' +
'Accept-Encoding: gzip, compress, deflate, br\r\n' +
'Host: bff-ext.clients.peacocktv.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: [Object: null prototype],
requests: [Object: null prototype] {},
sockets: [Object: null prototype],
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
maxTotalSockets: Infinity,
totalSocketCount: 1,
maxCachedSessions: 100,
_sessionCache: [Object],
Could not parse Peacock events
[Symbol(kCapture)]: false
},
socketPath: undefined,
method: 'GET',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/bff/channel_guide?startTime=2024-10-16T18:50+00:00&assetsPerChannelCapLimit=1000&contentSegments=D2C,Free',
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 4,
_maxListeners: undefined,
socket: [TLSSocket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
rawHeaders: [Array],
rawTrailers: [],
joinDuplicateHeaders: undefined,
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 400,
statusMessage: 'Bad Request',
client: [TLSSocket],
_consuming: true,
_dumped: false,
req: [Circular *1],
responseUrl: 'https://bff-ext.clients.peacocktv.com/bff/channel_guide?startTime=2024-10-16T18:50+00:00&assetsPerChannelCapLimit=1000&contentSegments=D2C,Free',
redirects: [],
[Symbol(kCapture)]: false,
[Symbol(kHeaders)]: [Object],
[Symbol(kHeadersCount)]: 40,
[Symbol(kTrailers)]: null,
[Symbol(kTrailersCount)]: 0
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'bff-ext.clients.peacocktv.com',
protocol: 'https:',
_redirectable: Writable {
_writableState: [WritableState],
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: undefined,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 0,
_requestBodyBuffers: [],
_onNativeResponse: [Function (anonymous)],
_currentRequest: [Circular *1],
_currentUrl: 'https://bff-ext.clients.peacocktv.com/bff/channel_guide?startTime=2024-10-16T18:50+00:00&assetsPerChannelCapLimit=1000&contentSegments=D2C,Free',
[Symbol(kCapture)]: false
},
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
'x-skyott-device': [Array],
'x-skyott-platform': [Array],
'x-skyott-proposition': [Array],
'x-skyott-territory': [Array],
'user-agent': [Array],
'accept-encoding': [Array],
host: [Array]
},
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
response: {
status: 400,
statusText: 'Bad Request',
headers: AxiosHeaders {
connection: 'close',
'content-length': '92',
'strict-transport-security': 'max-age=63072000',
'accept-ranges': 'bytes',
'cache-control': 'max-age=300',
'x-skyint-requestid': '21438610-f79a-433a-949c-0ed6ac9502f9',
'content-type': 'application/json; charset=utf-8',
etag: 'W/"5c-fXqGKWHUKZafsr4aDskFZHx3lbk"',
date: 'Wed, 16 Oct 2024 18:48:59 GMT',
'x-served-by': 'cache-chi-kigq8000062-CHI, cache-chi-kigq8000031-CHI, cache-mia-kmia1760026-MIA',
'x-cache': 'MISS, MISS, MISS',
'x-cache-hits': '0, 0, 0',
'x-timer': 'S1729104539.419874,VS0,VE65',
'access-control-allow-methods': 'HEAD, GET, OPTIONS, PUT, POST, DELETE',
'access-control-allow-credentials': 'true',
'access-control-max-age': '86400',
'timing-allow-origin': '*',
'access-control-expose-headers': 'via, x-skyott-suggestemptyresultsreason, date',
via: 'fastly',
'x-original-host': 'bff-ext.clients.peacocktv.com'
},
config: {
transitional: [Object],
adapter: [Array],
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: [Object],
validateStatus: [Function: validateStatus],
headers: [AxiosHeaders],
method: 'get',
url: 'https://bff-ext.clients.peacocktv.com/bff/channel_guide?startTime=2024-10-16T18:50+00:00&assetsPerChannelCapLimit=1000&contentSegments=D2C,Free',
data: undefined
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: 0,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: false,
socket: [TLSSocket],
_header: 'GET /bff/channel_guide?startTime=2024-10-16T18:50+00:00&assetsPerChannelCapLimit=1000&contentSegments=D2C,Free HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'X-SkyOTT-Device: COMPUTER\r\n' +
'X-SkyOTT-Platform: PC\r\n' +
'X-SkyOTT-Proposition: NBCUOTT\r\n' +
'X-SkyOTT-Territory: US\r\n' +
'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0\r\n' +
'Accept-Encoding: gzip, compress, deflate, br\r\n' +
'Host: bff-ext.clients.peacocktv.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: [Agent],
socketPath: undefined,
method: 'GET',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/bff/channel_guide?startTime=2024-10-16T18:50+00:00&assetsPerChannelCapLimit=1000&contentSegments=D2C,Free',
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'bff-ext.clients.peacocktv.com',
protocol: 'https:',
_redirectable: [Writable],
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype],
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
data: {
errorCode: 400,
developerMessage: 'Invalid startTime param. Not a valid ISO8601 datetime'
}
}
}
TypeError: Cannot read properties of undefined (reading 'channels')
at PeacockHandler.<anonymous> (/app/services/peacock-handler.ts:143:34)
at Generator.next (<anonymous>)
at fulfilled (/app/services/peacock-handler.ts:5:58)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
Looking for ABC events...
Error getting ABC channels
AxiosError: Request failed with status code 404
at settle (/app/node_modules/axios/lib/core/settle.js:19:12)
at IncomingMessage.handleStreamEnd (/app/node_modules/axios/lib/adapters/http.js:512:11)
at IncomingMessage.emit (node:events:529:35)
at IncomingMessage.emit (node:domain:489:12)
at endReadableNT (node:internal/streams/readable:1400:12)
at processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: 'ERR_BAD_REQUEST',
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
adapter: [ 'xhr', 'http' ],
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function], Blob: [class Blob] },
validateStatus: [Function: validateStatus],
headers: AxiosHeaders {
Accept: 'application/json, text/plain, */*',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0',
'Accept-Encoding': 'gzip, compress, deflate, br'
},
method: 'get',
url: 'https://prod.gatekeeper.us-abc.symphony.edgedatg.com/api/ws/pluto/v1/module/categoryguide/4204541?brand=001&device=001&authlevel=0&layout=3897245&starttime=20241016-1810&endtime=20241018&offset=+0000&affiliate=WFTV&urlObfuscation=true',
data: undefined
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype] {
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
socket: [Function (anonymous)],
timeout: [Function (anonymous)],
finish: [Function: requestOnFinish]
},
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: 0,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: false,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: 'prod.gatekeeper.us-abc.symphony.edgedatg.com',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 10,
connecting: false,
_hadError: false,
_parent: null,
_host: 'prod.gatekeeper.us-abc.symphony.edgedatg.com',
_closeAfterHandlingError: false,
_readableState: [ReadableState],
_maxListeners: undefined,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular *1],
[Symbol(alpncallback)]: null,
[Symbol(res)]: [TLSWrap],
[Symbol(verified)]: true,
[Symbol(pendingSession)]: null,
[Symbol(async_id_symbol)]: 992,
[Symbol(kHandle)]: [TLSWrap],
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kSetNoDelay)]: false,
[Symbol(kSetKeepAlive)]: true,
[Symbol(kSetKeepAliveInitialDelay)]: 60,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0,
[Symbol(connect-options)]: [Object]
},
_header: 'GET /api/ws/pluto/v1/module/categoryguide/4204541?brand=001&device=001&authlevel=0&layout=3897245&starttime=20241016-1810&endtime=20241018&offset=+0000&affiliate=WFTV&urlObfuscation=true HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0\r\n' +
'Accept-Encoding: gzip, compress, deflate, br\r\n' +
'Host: prod.gatekeeper.us-abc.symphony.edgedatg.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: [Object: null prototype],
requests: [Object: null prototype] {},
sockets: [Object: null prototype],
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
maxTotalSockets: Infinity,
totalSocketCount: 1,
maxCachedSessions: 100,
_sessionCache: [Object],
[Symbol(kCapture)]: false
},
socketPath: undefined,
method: 'GET',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/api/ws/pluto/v1/module/categoryguide/4204541?brand=001&device=001&authlevel=0&layout=3897245&starttime=20241016-1810&endtime=20241018&offset=+0000&affiliate=WFTV&urlObfuscation=true',
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 4,
_maxListeners: undefined,
socket: [TLSSocket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
rawHeaders: [Array],
rawTrailers: [],
joinDuplicateHeaders: undefined,
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 404,
statusMessage: 'Not Found',
client: [TLSSocket],
_consuming: true,
_dumped: false,
req: [Circular *1],
responseUrl: 'https://prod.gatekeeper.us-abc.symphony.edgedatg.com/api/ws/pluto/v1/module/categoryguide/4204541?brand=001&device=001&authlevel=0&layout=3897245&starttime=20241016-1810&endtime=20241018&offset=+0000&affiliate=WFTV&urlObfuscation=true',
redirects: [],
[Symbol(kCapture)]: false,
[Symbol(kHeaders)]: [Object],
[Symbol(kHeadersCount)]: 24,
[Symbol(kTrailers)]: null,
[Symbol(kTrailersCount)]: 0
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'prod.gatekeeper.us-abc.symphony.edgedatg.com',
protocol: 'https:',
_redirectable: Writable {
_writableState: [WritableState],
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: undefined,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 0,
_requestBodyBuffers: [],
_onNativeResponse: [Function (anonymous)],
_currentRequest: [Circular *1],
_currentUrl: 'https://prod.gatekeeper.us-abc.symphony.edgedatg.com/api/ws/pluto/v1/module/categoryguide/4204541?brand=001&device=001&authlevel=0&layout=3897245&starttime=20241016-1810&endtime=20241018&offset=+0000&affiliate=WFTV&urlObfuscation=true',
[Symbol(kCapture)]: false
},
Could not parse ABC events
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
'user-agent': [Array],
'accept-encoding': [Array],
host: [Array]
},
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
response: {
status: 404,
statusText: 'Not Found',
=== Done getting events ===
headers: AxiosHeaders {
'content-type': 'application/vnd.disney.error.v1.0+json;charset=UTF-8',
'transfer-encoding': 'chunked',
connection: 'close',
date: 'Wed, 16 Oct 2024 18:48:59 GMT',
'cache-control': 'private, no-cache, no-store, no-transform, must-revalidate, proxy-revalidate, max-age=0, s-maxage=0',
'access-control-expose-headers': 'Content-Length, X-DATG-Trace-Id',
'x-datg-trace-id': 'qVYt5zvid_9_wcxjYRXXoJEwfL7S3w4IMZ9ijQSsr_hJXPKrQQbNgw==',
vary: 'appversion,DATG-MVPD,Origin',
'x-cache': 'Error from cloudfront',
via: '1.1 e759cef9ef04dc6632a71818dfac3a76.cloudfront.net (CloudFront)',
'x-amz-cf-pop': 'MIA3-P3',
'x-amz-cf-id': 'qVYt5zvid_9_wcxjYRXXoJEwfL7S3w4IMZ9ijQSsr_hJXPKrQQbNgw=='
},
config: {
transitional: [Object],
adapter: [Array],
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: [Object],
validateStatus: [Function: validateStatus],
headers: [AxiosHeaders],
method: 'get',
url: 'https://prod.gatekeeper.us-abc.symphony.edgedatg.com/api/ws/pluto/v1/module/categoryguide/4204541?brand=001&device=001&authlevel=0&layout=3897245&starttime=20241016-1810&endtime=20241018&offset=+0000&affiliate=WFTV&urlObfuscation=true',
data: undefined
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: 0,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: false,
socket: [TLSSocket],
_header: 'GET /api/ws/pluto/v1/module/categoryguide/4204541?brand=001&device=001&authlevel=0&layout=3897245&starttime=20241016-1810&endtime=20241018&offset=+0000&affiliate=WFTV&urlObfuscation=true HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0\r\n' +
'Accept-Encoding: gzip, compress, deflate, br\r\n' +
'Host: prod.gatekeeper.us-abc.symphony.edgedatg.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: [Agent],
socketPath: undefined,
method: 'GET',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/api/ws/pluto/v1/module/categoryguide/4204541?brand=001&device=001&authlevel=0&layout=3897245&starttime=20241016-1810&endtime=20241018&offset=+0000&affiliate=WFTV&urlObfuscation=true',
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'prod.gatekeeper.us-abc.symphony.edgedatg.com',
protocol: 'https:',
_redirectable: [Writable],
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype],
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
data: { error: [Object] }
}
}
TypeError: Cannot read properties of undefined (reading 'categories')
at ABCHandler.<anonymous> (/app/services/abc-handler.ts:173:35)
at Generator.next (<anonymous>)
at fulfilled (/app/services/abc-handler.ts:5:58)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
=== Building the schedule ===
=== Done building the schedule ===
=== Starting Server ===
Server started on port 8787
Same story with me, hopefully we can resolve it. He is a busy guy, but here's to hoping.
Maybe we are missing some dependencies or something.
I'm wondering that too - I'm running it on my NAS, but it almost seems that it's looking for Chrome or some sort of way to log into ABC.com or Peacock.com?
I think if it used a similar structure EPlusTV for live events and login tokens it would be set. One thing at a time I think , or maybe there is another way.
Honestly, that's what I was expecting to see! But I'm thinking this docker assumes it's running on the same machine that's running cc4c already (which I'm not running via docker since I have it on a dedicated M1 mac mini).
That may be it then. I haven't tried running both in docker since one I have a custom main.js file. Maybe we can get others to try.
I'd try it in Docker if I knew where I could put the main.js file... haha
For what it's worth, I did get CC4C up and running on my NAS since it has an i5 built in... and it works for some, but not all the channels. Anything Peacock throws and error and so does Paramount+ because the version of Chrome included in the CC4C docker is so old it those services don't support it... so now I'm extra perplexed why @m0ngr31's docker doesn't pull in Peacock or ABC channels ... was hoping it somehow scraped their feeds too without going through this ancient Chrome install (113). Is there a way to update Chrome in docker?
I can load peacock/cbs/paramount channels fine, but cant get the guide data that the docker provides.
There are new versions of puppeteer but the distro has mostly been abandoned after being coded by tmm1 (hence why I have updated the main.js file)
Do the abc channels load?
ESPN the ocho, freeform etc?
In docker, I can't get anything from Peacock or Paramount+ to load. They both load the websites properly, but give me errors when trying to playback saying it's basically not supported. I don't run into this error on my M1 installation. NBC plays well and allowed me to login just fine. I think it has to do with the Chrome version baked into the docker image (I assume it's baked in as it installed when I installed CC4C on my NAS in Docker).
That is inconvenient you had to run the cc4c to docker, but I will have to try it. try to run my js file from other thread. its called ncc062 I think.
The question is, will epg data continue to pull if you dont use the docker version of cc4c.
OK it didnt scapre anything? Peacock works in my main.js file that was modified
The error you're seeing (AxiosError: Request failed with status code 400
) means that the request is being rejected by the server, likely due to an issue with the request parameters or headers. A 400 error typically indicates a "Bad Request," meaning the server couldn't understand the request due to invalid syntax or missing information.
Here are some possible causes and steps to troubleshoot:
- Incorrect URL or Parameters:
- Double-check that the URL being called (
https://bff-ext.clients.peacocktv.com/bff/channel_guide?startTime=2024-10-16T23:00+00:00&assetsPerChannelCapLimit=1000&contentSegments=D2C,Free
) is valid and properly formatted. Ensure the query parameters likestartTime
,assetsPerChannelCapLimit
, andcontentSegments
are acceptable for the API. - Ensure that
startTime
uses the correct format and that there are no extra characters or invalid values in the parameters.
- Missing or Incorrect Headers:
- The headers in the request seem fine, but you might want to verify with the API documentation whether the
X-SkyOTT-*
headers anduser-agent
are required or correct. It's possible the API needs more headers or different ones. - Ensure that
Authorization
headers or any other required headers for authentication (if applicable) are included if needed by the API.
- Check API Documentation:
- The error could be due to missing or invalid parameters or headers that the server expects. Double-check the API documentation to ensure you're sending the correct request.
- Validate the API Request:
- Sometimes, the request's body might be malformed or the expected request method might not be
GET
. Ensure that the method (GET
) is appropriate for the endpoint.
- Test the Request:
- Try testing the API call in an API client like Postman or curl to see if the request is working. This can help isolate whether the issue is in the request itself or in your code.
- Debugging Axios Call:
- Add a catch block and print out the
response.data
orerror.response.data
to see if the server is sending more details about why the request failed.
according to ai answer lol if that helps.
Okay, this is my bad because I never tested running it in the actual container New container is up now and should work
I'll look at getting this updated
That would be incredible!! Thank you! I just updated the container and the log shows a successful run (and that it gathered channels), but when I look at the 8787 page... it's not listing any channels:
What do your logs say? Maybe try doing a hard refresh on that page?