m0ngr31 / eplustv Goto Github PK
View Code? Open in Web Editor NEWVirtual linear channels for ESPN, ESPN+, MSG+, Paramount+, MLB.tv, and FOX Sports
Virtual linear channels for ESPN, ESPN+, MSG+, Paramount+, MLB.tv, and FOX Sports
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 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
(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.
Hello -
Thank you for this software! I have three requests:
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.
Can we have a way to filter by sport? For example, I'm typically interested in college football, college basketball and college hockey.
Any chance to add Fox Sports digital streams to this?
I'm using this software through tvheadend and it's really neat!
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
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 ?
The same information can be retrieved from the http Host request header
for example: https://github.com/matthuisman/frndlytv-for-channels/blob/276bf3c074d9fe8485cf58abfe294dc532e013c1/app.py#L65
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 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
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?
Thank you for all your work. If possible - adding Apple TV MLS channels would be great!
Thanks!
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.
` 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`
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
I keep getting 24FPS streams with ESPN. This was an issue before that seems to have come back
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
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:
Thanks for your work and any help you can provide here.
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.xm
l
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
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
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!
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!
Would it be possible to integrate bally sports streams into this?
Thanks!
Could not do a head request for "m0ngr31/eplustv:latest", falling back to regular pull.
Reason: registry responded to head request with "404 Not Found", auth: "not present"
Same as this thread... containrrr/watchtower#1529 (comment)
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?
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.
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
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.
having an issue with ESPN+ only. seems to be unable to get token.
here is a pastebin with relevant logs. https://pastebin.com/JX3U1Aay
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?
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!
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!
I am confused I am trying to connect my XTeVe but not enough information in the documentation where is the m3u list?
Can I use this for my FuboTV or youtubetv? and generate a m3u to use with tvmate
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?
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!
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?
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?
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?
as per channels forum
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.
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
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.
Several complaints on the ChannelsDVR boards and other issues. Seems to be player dependent.
Works on VLC, Channels web UI, and HLS.js. Need to figure out for other players.
Is it possible to change the listening port? Getting a conflict error in Portainer
Error: listen EADDRINUSE: address already in use :::8000
NCAAM, epg not download
Hi -
Would it be possible to do this? ESPN would use one (and the same) virtual channel always; ESPN2 would use one; FS2 would use one, etc.
Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.