Giter Club home page Giter Club logo

eplustv's People

Contributors

beeg3r avatar element1404 avatar m0ngr31 avatar maddox avatar reeseovine avatar tmm1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eplustv's Issues

error: ERROR The requested URL could not be retrieved

Fresh install Ubuntu 20.04
Install Docker, install; Docker Hub.
Login to site with authorization code and says Authentication was successful.
Then says opening server on http://ip/: :8000 port;
I go to the port that it mentions on my webbrowsers and on phone even to test.

I enter url: https://ip:8000/channels.m3u

ERROR
The requested URL could not be retrieved
The following error was encountered while trying to retrieve the URL: "http://ip:8000/channels.m3u"
Access Denied.
Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.
Your cache administrator is webmaster.

Newbie

Newbie Unraid user here. What URL should I input for other devices to connect at? I used unraids ip, and port 8000, to no avail. TIA

Can't start docker container

(node:18) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open '/app/config/state.json',
    at Object.openSync (fs.js:497:3),
    at Object.writeFileSync (fs.js:1528:35),
    at initDirectories (/app/services/init-directories.ts:22:8),
    at /app/index.ts:178:18,
    at Generator.next (<anonymous>),
    at /app/index.ts:8:71,
    at new Promise (<anonymous>),
    at __awaiter (/app/index.ts:4:12),
    at /app/index.ts:177:13,
    at Object.<anonymous> (/app/index.ts:184:3),
(Use `node --trace-warnings ...` to show where the warning was created),
(node:18) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1),
(node:18) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

[Enhancement Requests] - stream origin, filter by sport, Fox Sports integration

Hello -

Thank you for this software! I have three requests:

  1. Can we have an option to see the source of the stream in the title (ESPN+/ESPN3, other future ESPN streams). I notice that the ESPN3 streams don't always work and I'd like to easily identify which streams come from where.

  2. Can we have a way to filter by sport? For example, I'm typically interested in college football, college basketball and college hockey.

  3. Any chance to add Fox Sports digital streams to this?

I'm using this software through tvheadend and it's really neat!

is it still working

hello sir i test it yesterday and founf that is not working.
it was working before but now it does not
waiting for answer thanks in advance

not working on USA location VPS forbidden error

i tried on USA location VPS but it not work here is error log

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: true, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, _contentLength: null, _hasBody: true, _trailer: '', finished: true, _headerSent: true, _closed: false, socket: [TLSSocket], _header: 'POST /token HTTP/1.1\r\n' + 'Accept: application/json\r\n' + 'Content-Type: application/x-www-form-urlencoded\r\n' + 'Authorization: Bearer ZXNwbiZicm93c2VyJjEuMC4w.ptUt7QxsteaRruuPmGZFaJByOoqKvDP2a5YkInHrc7c\r\n' + 'User-Agent: axios/1.2.2\r\n' + 'Content-Length: 617\r\n' + 'Accept-Encoding: gzip, compress, deflate, br\r\n' + 'Host: us.edge.bamgrid.com\r\n' + 'Connection: close\r\n' + '\r\n', _keepAliveTimeout: 0, _onPendingData: [Function: nop], agent: [Agent], socketPath: undefined, method: 'POST', maxHeaderSize: undefined, insecureHTTPParser: undefined, path: '/token', _ended: true, res: [IncomingMessage], aborted: false, timeoutCb: null, upgradeOrConnect: false, parser: null, maxHeadersCount: null, reusedSocket: false, host: 'us.edge.bamgrid.com', protocol: 'https:', _redirectable: [Writable], [Symbol(kCapture)]: false, [Symbol(kNeedDrain)]: false, [Symbol(corked)]: 0, [Symbol(kOutHeaders)]: [Object: null prototype], [Symbol(kUniqueHeaders)]: null }, data: { error: 'unauthorized_client', error_description: 'forbidden-location' } } } Could not get device token exchange Could not get device token exchange Could not get account grant TypeError: Cannot read properties of undefined (reading 'refresh_token') at EspnHandler.<anonymous> (/app/services/espn-handler.ts:961:53) at Generator.next (<anonymous>) at fulfilled (/app/services/espn-handler.ts:5:58) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) TypeError: Cannot read properties of undefined (reading 'access_token') at EspnHandler.<anonymous> (/app/services/espn-handler.ts:917:37) at Generator.next (<anonymous>) at fulfilled (/app/services/espn-handler.ts:5:58) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) TypeError: Cannot read properties of undefined (reading 'assertion') at EspnHandler.<anonymous> (/app/services/espn-handler.ts:984:46) at Generator.next (<anonymous>) at fulfilled (/app/services/espn-handler.ts:5:58) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) Could not get BAM access token Could not get stream data. Event might be upcoming, ended, or in blackout... TypeError: Cannot read properties of undefined (reading 'access_token') at EspnHandler.<anonymous> (/app/services/espn-handler.ts:482:47) at Generator.next (<anonymous>) at fulfilled (/app/services/espn-handler.ts:5:58) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) Failed to parse the stream Could not get a playlist for channel #5. Please make sure there is an event scheduled and you have access to it. Could not get a playlist for channel #6. Please make sure there is an event scheduled and you have access to it. Could not get a playlist for channel #6. Please make sure there is an event scheduled and you have access to it.

any solution ?

Streams not working

i have eventhing installed and logged in with my account but when i got to play a stream i get the eplustv loading and nothing else

when i check my logs i see the following

'x-amz-cf-id': 'oY7G920a6ypCneh-90JDzd0JO1slDRubzjks56rbTHn0rDL7hoOYuA==' }, config: { transitional: [Object], adapter: [Function: httpAdapter], transformRequest: [Array], transformResponse: [Array], timeout: 0, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, env: [Object], validateStatus: [Function: validateStatus], headers: [Object], method: 'post', url: 'https://us.edge.bamgrid.com/token', data: 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&latitude=0&longitude=0&platform=browser&setCookie=false&subject_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIyZWZkYWJiYS0zMWMxLTRmNWYtODE3Yi1kNjAwYzdiM2NhYjYiLCJhdWQiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOnRva2VuIiwibmJmIjoxNjcwMTA4MjQzLCJpc3MiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOmRldmljZSIsImV4cCI6MjUzNDEwODI0MywiaWF0IjoxNjcwMTA4MjQzLCJqdGkiOiJiOTJmZGUzZi02ZjU2LTRlZjYtOGVjNC02N2Y2Y2NlNzUyMzYifQ.NEd81x-2wYLqJBRpCJj_PFSdMrt_SRvpPDOjd5jbbUwcQ4-f6XushmsHk9AtRviv25SvarPwk2RfhidD44Ej2A&subject_token_type=urn%3Abamtech%3Aparams%3Aoauth%3Atoken-type%3Adevice' }, 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: true, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, _contentLength: null, _hasBody: true, _trailer: '', finished: true, _headerSent: true, _closed: false, socket: [TLSSocket], Could not get BAM access token _header: 'POST /token HTTP/1.1\r\n' + 'Accept: application/json\r\n' + 'Content-Type: application/x-www-form-urlencoded\r\n' + 'Authorization: Bearer ZXNwbiZicm93c2VyJjEuMC4w.ptUt7QxsteaRruuPmGZFaJByOoqKvDP2a5YkInHrc7c\r\n' + 'User-Agent: axios/0.27.2\r\n' + 'Content-Length: 617\r\n' + 'Host: us.edge.bamgrid.com\r\n' + 'Connection: close\r\n' + '\r\n', _keepAliveTimeout: 0, _onPendingData: [Function: nop], agent: [Agent], socketPath: undefined, method: 'POST', maxHeaderSize: undefined, insecureHTTPParser: undefined, path: '/token', _ended: true, res: [IncomingMessage], aborted: false, timeoutCb: null, upgradeOrConnect: false, parser: null, maxHeadersCount: null, reusedSocket: false, host: 'us.edge.bamgrid.com', protocol: 'https:', _redirectable: [Writable], [Symbol(kCapture)]: false, [Symbol(kNeedDrain)]: false, [Symbol(corked)]: 0, [Symbol(kOutHeaders)]: [Object: null prototype], [Symbol(kUniqueHeaders)]: null }, data: { errors: [Array] } } } TypeError: Cannot read properties of undefined (reading 'refresh_token') at EspnHandler.<anonymous> (/app/services/espn-handler.ts:807:53) at Generator.next (<anonymous>) at fulfilled (/app/services/espn-handler.ts:5:58) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) TypeError: Cannot read properties of undefined (reading 'access_token') at EspnHandler.<anonymous> (/app/services/espn-handler.ts:763:38) at Generator.next (<anonymous>) at fulfilled (/app/services/espn-handler.ts:5:58) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) TypeError: Cannot read properties of undefined (reading 'assertion') at EspnHandler.<anonymous> (/app/services/espn-handler.ts:829:46) at Generator.next (<anonymous>) at fulfilled (/app/services/espn-handler.ts:5:58) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5)

Streams freezing a jittery

streams are working but seems very jittery and freeze often anyway to improve this

i have it on an 19 with nvidea 2060 super and 32 gb ram with a 1gbps fiber line i tested the website and it plays fine

URL that other sites can access this container at.

Im trying to use the docker with Unraid. Can you elaborate why I would need to use "URL that other sites can access this container at." Im opened the link up in VLC player to test and it has to ip addresses. Why cant I just use my Unraid ip with correct port?

Request: Apple TV (MLS)

Thank you for all your work. If possible - adding Apple TV MLS channels would be great!

Thanks!

Disabling ESPNPLUS With Any Other Channel Enabled Crashes Container

Whenever you disable ESPNPLUS but enable other channels such as ESPN on first run, it allows you to authenticate with a TV Provider but then crashes. Nothing is in the log when it crashes. When you re-enable ESPNPLUS, it has you authenticate for ESPN+ and then it works.

> [email protected] start
> ts-node index.ts

:: TV Provider Auth ::
Please open a browser window and go to: https://www.espn.com/watch/activate
Enter code:  xxxxxx
App will start when login has completed...

> [email protected] start
> ts-node index.ts

EDIT: I will also note, when you re-enable ESPNPLUS, you cannot watch your ESPN stream.

Failed to parse Stream on Active Event

` Server started on port 8000

There is an active event. Going to start the stream.

Getting stream for event: 9a046ce9-abe4-4319-a596-9a66e0a8d8f8

Failed to parse the stream

Failed to parse the stream

There is an active event. Going to start the stream.

Getting stream for event: 9a046ce9-abe4-4319-a596-9a66e0a8d8f8`

Screen Shot 2022-05-02 at 10 45 13 AM

ESPN+ events creep into the linear TV slots on the guide

Start command:
sudo docker run -e ESPN3=true -e SECPLUS=true -e FOXSPORTS=true -e ESPN=true -e ESPN2=true -ESPNU=true -e SEC=true -e ACCN=true -e ACCNX=true -e MLBTV=true -e MLBTV_USER='[email protected]' -e MLBTV_PASS='password' -e MLBTV_ONLY_FREE=true -e USE_LINEAR=true -e NUM_OF_CHANNELS=300 -p 8000:8000 -v /home/steve/eplustv/:/app/config m0ngr31/eplustv

See attached for pic and xmltv.xml file.

As title says, ESPN+ events make their way into the first ten or so channels that overlap with linear TV.
xmltv.zip
Capture

ESPN = 24fps Streams

I keep getting 24FPS streams with ESPN. This was an issue before that seems to have come back

buffering/skipping

getting a lot of buffering and skipping with the latest release. i tried running from a few different ways and all turned up the same results

Request: force MLB bitrate

Hi, I am using one instance of this container to stream MLB only. It works fine.

This is a gigabit fiber circuit where 720p60 is selected automatically every time by the official MLB apps.
Network between EPlusTV and the consumer (xteve) is at worst 10 gig.

When using EPlusTV, I have noticed that the stream is sometimes 480p and sometimes 720p30. It is not being transcoded; this is what EPlusTV is feeding up. I have env MAX_RESOLUTION = "UHD/HDR" (even though there is no UHD or HDR content on MLB)

I am not sure how the MLB bitrate gets determined by EPlusTV, but I have seen a different implementation that allows setting these values:

5600 (720p @ 60 fps)
3500 (720p)
2500 (540p)
1800 (504p)
1200 (360p)
800 (288p)
514 (216p)
192 (180p)

I would like to achieve 720p60 using EPlusTV. Maybe this can this be done by:

  • mapping the existing MAX_RESOLUTION setting to force 5600/720p60 ?
  • some new env to specify bitrate for MLB ?
  • whatever auto-mechanism that exists today tweaked ?

Thanks for your work and any help you can provide here.

First Time Setup Question w/xTeVe & Plex + unRaid

Hello!

First off thanks for the very awesome sounding piece of software. I've been running into a bit of an issue on I believe the final steps to get everything working.

My setup is currently entirely in unRaid

EPlus seems to be up and running fine "Server started on port 8000"
I then added the address http://10.0.1.98:8000/channels.m3u to xTeVe which came up showing 100 streams.
Followed the same steps for XMLTV with xTeVe entering http://10.0.1.98:8000/xmltv.xml

On Plex I then added my xTeVe tuner which properly showed my newly assigned channels.

However when I go to access the channel I receive an error statingCould not tune channel. Please check your tuner or antenna.
From xTeVe logs I see:
EPlusTV 9
[xTeVe] Client User-Agent: Lavf/LIBAVFORMAT_VERSION
[xTeVe] Streaming URL: http://10.0.1.98:8000/channels/9.m3u8
[xTeVe] Streaming Info: URL was passed to the client.
[xTeVe] Streaming Info: xTeVe is no longer involved, the client connects directly to the streaming server.

Navigating to http://10.0.1.98:8000/channels/9.m3u8 I do get a clip that can be opened within VLC but no luck connecting via Plex.

Appreciate any tips to over come this final hurdle. Let me know if there are any additional details I can provide. Thanks

MLB.tv - The credentials provided were invalid

Tried with no quotes, single, and double quotes in docker-compose file for environment variables:

      - MLBTV=TRUE
      - [email protected]
      - MLBTV_PASSWORD=mypassword

Confirmed I can login to mlb.tv without issue. Password does not contain any special characters.

Logs are without quotes surrounding the email address and password

groupmod: GID '100' already exists

> [email protected] start
> ts-node index.ts

=== E+TV v2.0.10 starting ===
Refreshing device token (ESPN+)
Refreshing device refresh token (ESPN+)
Refreshing BAM access token (ESPN+)
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:525:35)
    at IncomingMessage.emit (node:domain:489:12)
    at endReadableNT (node:internal/streams/readable:1358:12)
    at processTicksAndRejections (node:internal/process/task_queues:83: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,
Could not login to MLB.tv!
    env: { FormData: [Function], Blob: null },
    validateStatus: [Function: validateStatus],
    headers: AxiosHeaders {
      Accept: 'application/json, text/plain, */*',
      'Content-Type': 'application/x-www-form-urlencoded',
      'User-Agent': 'okhttp/3.12.1',
      'Content-Length': '138',
      'Accept-Encoding': 'gzip, compress, deflate, br'
    },
    method: 'post',
    url: 'https://ids.mlb.com/oauth2/aus1m088yK07noBfh356/v1/token',
    data: 'client_id=0oa3e1nutA1HLzAKG356&grant_type=password&password=undefined&scope=openid+offline_access&username=REDACTED%40REDACTED'
  },
  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: true,
    sendDate: false,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    strictContentLength: false,
    _contentLength: '138',
    _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: 'ids.mlb.com',
      alpnProtocol: false,
      authorized: true,
      authorizationError: null,
      encrypted: true,
      _events: [Object: null prototype],
      _eventsCount: 10,
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: 'ids.mlb.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(res)]: [TLSWrap],
      [Symbol(verified)]: true,
      [Symbol(pendingSession)]: null,
      [Symbol(async_id_symbol)]: 1152,
      [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],
      [Symbol(RequestTimeout)]: undefined
    },
    _header: 'POST /oauth2/aus1m088yK07noBfh356/v1/token HTTP/1.1\r\n' +
      'Accept: application/json, text/plain, */*\r\n' +
      'Content-Type: application/x-www-form-urlencoded\r\n' +
      'User-Agent: okhttp/3.12.1\r\n' +
      'Content-Length: 138\r\n' +
      'Accept-Encoding: gzip, compress, deflate, br\r\n' +
      'Host: ids.mlb.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: 'POST',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    path: '/oauth2/aus1m088yK07noBfh356/v1/token',
    _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: [],
      aborted: false,
      upgrade: false,
      url: '',
      method: null,
      statusCode: 400,
      statusMessage: 'Bad Request',
      client: [TLSSocket],
      _consuming: true,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'https://ids.mlb.com/oauth2/aus1m088yK07noBfh356/v1/token',
      redirects: [],
      [Symbol(kCapture)]: false,
      [Symbol(kHeaders)]: [Object],
      [Symbol(kHeadersCount)]: 60,
      [Symbol(kTrailers)]: null,
      [Symbol(kTrailersCount)]: 0,
      [Symbol(RequestTimeout)]: undefined
    },
    aborted: false,
    timeoutCb: null,
    upgradeOrConnect: false,
    parser: null,
    maxHeadersCount: null,
    reusedSocket: false,
    host: 'ids.mlb.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: 138,
      _requestBodyBuffers: [],
      _onNativeResponse: [Function (anonymous)],
      _currentRequest: [Circular *1],
      _currentUrl: 'https://ids.mlb.com/oauth2/aus1m088yK07noBfh356/v1/token',
      [Symbol(kCapture)]: false
    },
    [Symbol(kCapture)]: false,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(kEndCalled)]: true,
    [Symbol(kNeedDrain)]: false,
    [Symbol(corked)]: 0,
    [Symbol(kOutHeaders)]: [Object: null prototype] {
      accept: [Array],
      'content-type': [Array],
      'user-agent': [Array],
      'content-length': [Array],
      'accept-encoding': [Array],
      host: [Array]
    },
    [Symbol(kUniqueHeaders)]: null
  },
  response: {
    status: 400,
    statusText: 'Bad Request',
    headers: AxiosHeaders {
      connection: 'close',
      server: 'nginx',
      'content-type': 'application/json',
      'x-okta-request-id': 'ZDLNTNR9DZT75XQx_-VHEAAADic',
      'x-xss-protection': '0',
      p3p: 'CP="HONK"',
      'content-security-policy-report-only': "default-src 'self' mlbids.okta.com ids.mlb.com *.oktacdn.com; connect-src 'self' mlbids.okta.com mlbids-admin.okta.com ids.mlb.com *.oktacdn.com *.mixpanel.com *.mapbox.com app.pendo.io data.pendo.io pendo-static-5634101834153984.storage.googleapis.com pendo-static-5391521872216064.storage.googleapis.com *.mtls.okta.com mlbids.kerberos.okta.com https://oinmanager.okta.com data:; script-src 'unsafe-inline' 'unsafe-eval' 'self' mlbids.okta.com ids.mlb.com *.oktacdn.com; style-src 'unsafe-inline' 'self' mlbids.okta.com ids.mlb.com *.oktacdn.com app.pendo.io cdn.pendo.io pendo-static-5634101834153984.storage.googleapis.com pendo-static-5391521872216064.storage.googleapis.com; frame-src 'self' mlbids.okta.com mlbids-admin.okta.com ids.mlb.com login.okta.com; img-src 'self' mlbids.okta.com ids.mlb.com *.oktacdn.com *.tiles.mapbox.com *.mapbox.com app.pendo.io data.pendo.io cdn.pendo.io pendo-static-5634101834153984.storage.googleapis.com pendo-static-5391521872216064.storage.googleapis.com data: blob:; font-src 'self' mlbids.okta.com ids.mlb.com data: *.oktacdn.com fonts.gstatic.com; frame-ancestors 'self'; report-uri https://oktacsp.report-uri.com/r/t/csp/reportOnly; report-to csp",
      'x-rate-limit-limit': '50000',
      'x-rate-limit-remaining': '46365',
      'x-rate-limit-reset': '1681050981',
      'cache-control': 'no-cache, no-store',
      pragma: 'no-cache',
      expires: '0',
      'x-content-type-options': 'nosniff',
      'strict-transport-security': 'max-age=315360000; includeSubDomains',
      'set-cookie': [Array],
      'fastly-restarts': '1',
      'accept-ranges': 'bytes',
      date: 'Sun, 09 Apr 2023 14:35:56 GMT',
      via: '1.1 varnish',
      'x-served-by': 'cache-dfw-kdfw8210130-DFW',
      'x-cache': 'MISS',
      'x-cache-hits': '0',
      'x-timer': 'S1681050956.238047,VS0,VS0,VE427',
      'x-datadome': 'protected',
      'content-security-policy': 'frame-ancestors https://api.mobilecoach.org https://jrgiantsdugout.org https://*.mlb.com https://auth.turnstyle.fan https://giants.turnstyle.fan https://cloudclub.turnstyle.fan https://*.mlbpressbox.com https://privacyportal-cdn.onetrust.com https://mlbstg-chromecast.storage.googleapis.com https://mlb-chromecast.storage.googleapis.com https://*.webeng-gcp-npd.mlbinfra.net  https://rangers.pogoseat.com https://reg.events.thuzi.com https://public.events.thuzi.com https://nats.pogoseat.com',
      'transfer-encoding': 'chunked'
    },
    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: 'post',
      url: 'https://ids.mlb.com/oauth2/aus1m088yK07noBfh356/v1/token',
      data: 'client_id=0oa3e1nutA1HLzAKG356&grant_type=password&password=undefined&scope=openid+offline_access&username=REDACTED%40REDACTED'
    },
    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: true,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      strictContentLength: false,
      _contentLength: '138',
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: false,
      socket: [TLSSocket],
      _header: 'POST /oauth2/aus1m088yK07noBfh356/v1/token HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'Content-Type: application/x-www-form-urlencoded\r\n' +
        'User-Agent: okhttp/3.12.1\r\n' +
        'Content-Length: 138\r\n' +
        'Accept-Encoding: gzip, compress, deflate, br\r\n' +
        'Host: ids.mlb.com\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'POST',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/oauth2/aus1m088yK07noBfh356/v1/token',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'ids.mlb.com',
      protocol: 'https:',
      _redirectable: [Writable],
      [Symbol(kCapture)]: false,
      [Symbol(kBytesWritten)]: 0,
      [Symbol(kEndCalled)]: true,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype],
      [Symbol(kUniqueHeaders)]: null
    },
    data: {
      error: 'invalid_grant',
      error_description: 'The credentials provided were invalid.'
    }
  }
}
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:525:35)
    at IncomingMessage.emit (node:domain:489:12)
    at endReadableNT (node:internal/streams/readable:1358:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
Could not login to MLB.tv!
  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',
=== Getting events ===
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    env: { FormData: [Function], Blob: null },
    validateStatus: [Function: validateStatus],
    headers: AxiosHeaders {
      Accept: 'application/json, text/plain, */*',
      'Content-Type': 'application/x-www-form-urlencoded',
      'User-Agent': 'okhttp/3.12.1',
      'Content-Length': '138',
      'Accept-Encoding': 'gzip, compress, deflate, br'
    },
    method: 'post',
    url: 'https://ids.mlb.com/oauth2/aus1m088yK07noBfh356/v1/token',
    data: 'client_id=0oa3e1nutA1HLzAKG356&grant_type=password&password=undefined&scope=openid+offline_access&username=REDACTED%40REDACTED'
  },
  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: true,
    sendDate: false,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    strictContentLength: false,
    _contentLength: '138',
    _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: 'ids.mlb.com',
      alpnProtocol: false,
      authorized: true,
      authorizationError: null,
      encrypted: true,
      _events: [Object: null prototype],
Looking for ESPN+ events...
      _eventsCount: 10,
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: 'ids.mlb.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(res)]: [TLSWrap],
      [Symbol(verified)]: true,
      [Symbol(pendingSession)]: null,
      [Symbol(async_id_symbol)]: 1180,
      [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],
      [Symbol(RequestTimeout)]: undefined
    },
    _header: 'POST /oauth2/aus1m088yK07noBfh356/v1/token HTTP/1.1\r\n' +
      'Accept: application/json, text/plain, */*\r\n' +
      'Content-Type: application/x-www-form-urlencoded\r\n' +
      'User-Agent: okhttp/3.12.1\r\n' +
      'Content-Length: 138\r\n' +
      'Accept-Encoding: gzip, compress, deflate, br\r\n' +
      'Host: ids.mlb.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: 'POST',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    path: '/oauth2/aus1m088yK07noBfh356/v1/token',
    _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: [],
      aborted: false,
      upgrade: false,
      url: '',
      method: null,
      statusCode: 400,
      statusMessage: 'Bad Request',
      client: [TLSSocket],
      _consuming: true,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'https://ids.mlb.com/oauth2/aus1m088yK07noBfh356/v1/token',
      redirects: [],
      [Symbol(kCapture)]: false,
      [Symbol(kHeaders)]: [Object],
      [Symbol(kHeadersCount)]: 60,
      [Symbol(kTrailers)]: null,
      [Symbol(kTrailersCount)]: 0,
      [Symbol(RequestTimeout)]: undefined
    },
    aborted: false,
    timeoutCb: null,
    upgradeOrConnect: false,
    parser: null,
    maxHeadersCount: null,
    reusedSocket: false,
    host: 'ids.mlb.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: 138,
      _requestBodyBuffers: [],
      _onNativeResponse: [Function (anonymous)],
      _currentRequest: [Circular *1],
      _currentUrl: 'https://ids.mlb.com/oauth2/aus1m088yK07noBfh356/v1/token',
      [Symbol(kCapture)]: false
    },
    [Symbol(kCapture)]: false,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(kEndCalled)]: true,
    [Symbol(kNeedDrain)]: false,
    [Symbol(corked)]: 0,
    [Symbol(kOutHeaders)]: [Object: null prototype] {
      accept: [Array],
      'content-type': [Array],
      'user-agent': [Array],
      'content-length': [Array],
      'accept-encoding': [Array],
      host: [Array]
    },
    [Symbol(kUniqueHeaders)]: null
  },
  response: {
    status: 400,
    statusText: 'Bad Request',
    headers: AxiosHeaders {
      connection: 'close',
      server: 'nginx',
      'content-type': 'application/json',
      'x-okta-request-id': 'ZDLNTUhkCZ0k5ZGZ8eqs-QAACsU',
      'x-xss-protection': '0',
      p3p: 'CP="HONK"',
      'content-security-policy-report-only': "default-src 'self' mlbids.okta.com ids.mlb.com *.oktacdn.com; connect-src 'self' mlbids.okta.com mlbids-admin.okta.com ids.mlb.com *.oktacdn.com *.mixpanel.com *.mapbox.com app.pendo.io data.pendo.io pendo-static-5634101834153984.storage.googleapis.com pendo-static-5391521872216064.storage.googleapis.com *.mtls.okta.com mlbids.kerberos.okta.com https://oinmanager.okta.com data:; script-src 'unsafe-inline' 'unsafe-eval' 'self' mlbids.okta.com ids.mlb.com *.oktacdn.com; style-src 'unsafe-inline' 'self' mlbids.okta.com ids.mlb.com *.oktacdn.com app.pendo.io cdn.pendo.io pendo-static-5634101834153984.storage.googleapis.com pendo-static-5391521872216064.storage.googleapis.com; frame-src 'self' mlbids.okta.com mlbids-admin.okta.com ids.mlb.com login.okta.com; img-src 'self' mlbids.okta.com ids.mlb.com *.oktacdn.com *.tiles.mapbox.com *.mapbox.com app.pendo.io data.pendo.io cdn.pendo.io pendo-static-5634101834153984.storage.googleapis.com pendo-static-5391521872216064.storage.googleapis.com data: blob:; font-src 'self' mlbids.okta.com ids.mlb.com data: *.oktacdn.com fonts.gstatic.com; frame-ancestors 'self'",
      'x-rate-limit-limit': '50000',
      'x-rate-limit-remaining': '46311',
      'x-rate-limit-reset': '1681050981',
      'cache-control': 'no-cache, no-store',
      pragma: 'no-cache',
      expires: '0',
      'x-content-type-options': 'nosniff',
      'strict-transport-security': 'max-age=315360000; includeSubDomains',
      'set-cookie': [Array],
      'fastly-restarts': '1',
      'accept-ranges': 'bytes',
      date: 'Sun, 09 Apr 2023 14:35:57 GMT',
      via: '1.1 varnish',
      'x-served-by': 'cache-dfw-kdfw8210052-DFW',
      'x-cache': 'MISS',
      'x-cache-hits': '0',
      'x-timer': 'S1681050957.796323,VS0,VS0,VE405',
      'x-datadome': 'protected',
      'content-security-policy': 'frame-ancestors https://api.mobilecoach.org https://jrgiantsdugout.org https://*.mlb.com https://auth.turnstyle.fan https://giants.turnstyle.fan https://cloudclub.turnstyle.fan https://*.mlbpressbox.com https://privacyportal-cdn.onetrust.com https://mlbstg-chromecast.storage.googleapis.com https://mlb-chromecast.storage.googleapis.com https://*.webeng-gcp-npd.mlbinfra.net  https://rangers.pogoseat.com https://reg.events.thuzi.com https://public.events.thuzi.com https://nats.pogoseat.com',
      'transfer-encoding': 'chunked'
    },
    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: 'post',
      url: 'https://ids.mlb.com/oauth2/aus1m088yK07noBfh356/v1/token',
      data: 'client_id=0oa3e1nutA1HLzAKG356&grant_type=password&password=undefined&scope=openid+offline_access&username=REDACTED%40REDACTED'
    },
    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: true,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      strictContentLength: false,
      _contentLength: '138',
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: false,
      socket: [TLSSocket],
      _header: 'POST /oauth2/aus1m088yK07noBfh356/v1/token HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'Content-Type: application/x-www-form-urlencoded\r\n' +
        'User-Agent: okhttp/3.12.1\r\n' +
        'Content-Length: 138\r\n' +
        'Accept-Encoding: gzip, compress, deflate, br\r\n' +
        'Host: ids.mlb.com\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'POST',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/oauth2/aus1m088yK07noBfh356/v1/token',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'ids.mlb.com',
      protocol: 'https:',
      _redirectable: [Writable],
      [Symbol(kCapture)]: false,
      [Symbol(kBytesWritten)]: 0,
      [Symbol(kEndCalled)]: true,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype],
      [Symbol(kUniqueHeaders)]: null
    },
    data: {
      error: 'invalid_grant',
      error_description: 'The credentials provided were invalid.'
    }
  }
}
Could not parse ESPN events
Looking for FOX Sports events...
Adding event:  Chad Austin Does it Again
Looking for MLB.tv events...
=== Done getting events ===
=== Building the schedule ===
=== Done building the schedule ===
=== Starting Server ===
Server started on port 8000

30 or 60 fps Streams?

Is it possible to have the streams at a higher FPS? I am running this through unRAID and then to Tivimate and see the streams only stream at 24fps. I then play the same event through the ESPN app on my shield and it clearly seems to run smoother.

Any tips?

Thanks for your work!

Error During Installation

When I do the docker run process I get the following error:

_(node:21) UnhandledPromiseRejectionWarning: Error: EACCES: permission denied, open '/app/config/state.json'
at Object.openSync (fs.js:497:3)
at Object.writeFileSync (fs.js:1528:35)
at initDirectories (/app/services/init-directories.ts:26:8)
at /app/index.ts:178:18
at Generator.next ()
at /app/index.ts:8:71
at new Promise ()
at _awaiter (/app/index.ts:4:12)
at /app/index.ts:177:13
at Object. (/app/index.ts:184:3)
(Use node --trace-warnings ... to show where the warning was created)
(node:21) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:21) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I have tried to run as user and sudo. Same result occurs. A container is added but it is not fully setup and doesn't work.

How do I bypass this error?

Thanks in advance!

ESPN Plus Passcode?

I was successfully using ESPN Plus last fall and winter and just tried it now. It is no longer working for me now and am receiving the Event Will Start Soon message. The stream is good because I can get it to run on a browser and also from Hulu. (They have the ESPN Plus events available from the Hulu interface)

I saw this posted also on the Channels forum someone is receiving an email every time he channel starts from ESPN Plus with a passcode. I do not get prompted for a passcode with any of my browser session to ESPN plus on several didn't computers and even tried private browsing.

I saw something on the MLB forum about clearing login credentials. (I completed removed the docker image and brought a new one down with same results) Is this something new or has anyone seen this issue before?

EACCESS Denied error on start

Looking at the docker logs i'm getting an EACCESS denied error and googling it looks to be an npm error, but i can't seem to get it to work.

Tivimate/VNC

Im getting a parsing error when using Tivimate. When I use VLC I only get a splash screen for upcoming event. Any settings I need to take a look that could need changed?

Thanks

Port 8000 Conflicts with Portainer and I can't seem to get it running on a different port

Good morning Everyone,

I'm new to using Docker, and as much as I love its' ease of use I'm having trouble with a few things. I guess port 8000 is also used for Portainer, so, I tried to use the following command:
docker run -p 8010:8010 -v config_dir:/app/config m0ngr31/eplustv
Everything installs fine, but, whenever I go to localhost:8010/channels.m3u I get Nothing.
I'm sure that I'm doing something wrong, however I can't seem to discern what it is.
Has anyone seen this before? I know Portainer is somewhat popular, so, I'm hoping someone has encountered this before.

Can someone please help me with my situation?

Thank you and have a nice day.

[Enhancement] Off Air for EPG

Would it be possible to add a option to have the EPG to show Off Air or something to show that the ESPN+ channel is empty instead of the guide just being empty?

MLB free games do not show in the guide

Command:
sudo docker run -e ESPN3=true -e SECPLUS=true -e FOXSPORTS=true -e ESPN=true -e ESPN2=true -ESPNU=true -e SEC=true -e ACCN=true -e ACCNX=true -e MLBTV=true -e MLBTV_USER='[email protected]' -e MLBTV_PASS='password' -e MLBTV_ONLY_FREE=true -e USE_LINEAR=true -e NUM_OF_CHANNELS=300 -p 8000:8000 -v /home/steve/eplustv/:/app/config m0ngr31/eplustv

As the title says, MLB free games do not show in the guide. XMLTV.xml file attached.
xmltv.zip

Thanks for this great tool!

Channel Names / Logos

is it possible to have the channel names and logos instead of just e+tv or whatever? just curious really lol
I know a lot can be done in xteve, however it seems like there are different networks shows on the same eplustv channel if that makes sense.

thanks!

Installation

I am confused I am trying to connect my XTeVe but not enough information in the documentation where is the m3u list?

EPG Time Offset Issue

My EPG seems to be approximately 4 hours off from my time zone. Is the docker file configured for a specific time zone? If so, can I change it with a runtime variable?

Beta 13 Release Reintroduces NHL Commercial Issue

Hello again and happy new year!

I installed the Beta 13 release and used it to watch the NHL Stars vs. Ducks game last night. It looks like the switch to the custom HLS proxy brought back the skipping/commercial issues from issue 29 way back when. Except now the behavior's a bit different. Now, the commercials go crazy like the proxy can't figure out which ones to play. You'll see about 5 seconds of one, then it switches to something else, then back to the first, and so on. Eventually, the game comes back, but starts freezing/skipping like it did when Streamlink was in the mix. I can't easily see the contents of the m3u8 when it happens, so I don't exactly know how they're injecting the commercials. If it's an X-Discontinuity like I previously suspected, perhaps it's possible to use the proxy to filter out the commercial segments and replace them with ESPN+'s "Commercial break in progress" video. If you can capture that and store it locally to substitute, perhaps it won't break the stream (since it's the same resolution and framerate as everything else). Anyway, I've reverted to the previous version in the mean time. Hopefully there's some way to fix the issue, since your proxy seems far more efficient.

Thanks!

Feature request

Great work BTW! Is it possible to store our ESPN credentials in a config file so that the docker image activates automatically after a restart?

Authentication Information

The new release sounds amazing!

Gave it a try but only seeing this in the logs:

image

Are these the correct logs to be able to see how to authenticate?

Thanks for your work on this project!

Getting a failed to parse stream

Running in docker on linux. I get the following when trying to launch a stream

There is an active event. Going to start the stream.
Getting stream for event: ca34ba2a-8324-479c-9df5-e67e500639bb
Failed to parse the stream

Any thoughts? I put the container in privileged mode just in case and am still seeing it. Any thoughts?

Differentiate local streams

Thanks for this, it has been working great so far with Channels!

I'm watching Hockey, which generally has two streams for each game (with the local team's announcers and graphics). Right now, I don't see any way to filter to my team's broadcast based on data in the xmltv file. Any chance we could parse that data while generating the listings?

SOLVED: Does not show content if using starting channel number other than 1

EPlusTv works in ChannelsDVR when I leave the starting channel value set to 1. I see guide data and the stream video.
However, if I try to change it to another starting channel (e.g. 7000 or 9000), I see the channels in my guide, but do not see any streams, only the "Event Starting Soon" image.
I have tried to remove and re-add the Docker container, but still experience the same results: works when starting channel is 1, but does not work when set to another number.
Thanks for any suggestions.

not working

when runing it sends
"Failed to parse the stream"
tried to debug to see found it does not send m3u8 url and token their values are null.
and i checked access credential found them are ok.
anyidea

Docker permission issue

Currently the docker run command does not initialize the required files for me and errors the same as #20 and #9.

This is solved via

touch entries.db
touch schedule.db
echo "{}" > tokens.json

and a chown nobody:users . for me in unraid. The application then has no issue reading and writing to the files that it was complaining about permission errors on before.

Port conflict

Is it possible to change the listening port? Getting a conflict error in Portainer

Error: listen EADDRINUSE: address already in use :::8000

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.