ESPN+ & FOX Sports with Custom Channels via EPlusTV

Weak Signal may be a generic error message shown in Channels when the underlying stream errors out during connection.

3 Likes

Don't look into this to much. I have my laptop on my lap and I think it is a ESPN issue. The stream will start and after a bit it will quite and I get a message of weak signal. I grabbed my laptop and started to also stream the same content and the stream was having a hard time starting the stream while on the ESPN website.

Another one I am watching is the DET Wash hockey game. I am getting a Timeout after 32s message after watching the game for a bit. I have had an soccer game on ( not a soccer fan) and the stream has no issues at all.

The 32s message I go home (firestick 4k) and go back in it it starts again but did get the message of Timeout after 32s again. I will see what happens on the laptop with this stream to see if this is also a ESPN stream issue.

Ahh okay, yeah maybe your laptop is having issues keeping up with the stream? I should make a variable to adjust the quality. It's trying to run 720p60 by default

1 Like

Clarification -- laptop logged into ESPN directly was having issues with a certain espn stream same time I was getting Weak Signal from Channels using the firestick.

The video quality seems better than with the older images. Most the streams are coming to an end of the tonight. Thanks again for all the work you put into this.

2 Likes

Absolutely amazing. Works like a charm on M1 mini. What a massive release for you, kudos!

One question I've been meaning to ask - are "ESPN3" events includable in this, or just ESPN+ items?

1 Like

I am receiving the following on first run:
Error: EACCES: permission denied, open '/app/config/entries.db' stderr
08:22:29 at Object.openSync (node:fs:585:3) stderr
08:22:29 at Object.writeFileSync (node:fs:2170:35) stderr
08:22:29 at initDirectories (/app/services/init-directories.ts:26:8) stderr
08:22:29 at /app/index.ts:177:18 stderr
08:22:29 at Generator.next () stderr
08:22:29 at /app/index.ts:8:71 stderr
08:22:29 at new Promise () stderr
08:22:29 at __awaiter (/app/index.ts:4:12) stderr
08:22:29 at /app/index.ts:176:13 stderr
08:22:29 at Object. (/app/index.ts:185:3) { stderr
08:22:29 errno: -13, stderr
08:22:29 syscall: 'open', stderr
08:22:29 code: 'EACCES', stderr
08:22:29 path: '/app/config/entries.db' stderr
08:22:29 }

This was resolved by eliminating the config directory when creating the docker container. Not sure why. Or where the config files are being saved.

Just ESPN+, but to be perfectly honest, I had assumed ESPN+ was the successor to ESPN3. I'm curious about what the difference is

I'm glad to hear it worked on your M1. I was a little nervous since I didn't have a way of testing it myself!

How are you running the container? Does the config folder you passed in exist and do you have permissions to it?

If you don't pass it a config directory it'll just create one itself inside of the container, so if you ever restart it, you will have to authenticate again.

2 Likes

ESPN+ = online exclusive content, subject to subscription
ESPN3 = online exclusive, but free (still needs an ESPN login though), and subject to blackouts

I would think that, if this is just a guide data pull setting, you could probably add ESPN3 content, although it's blackout dependent.

ESPN3 can be activated via TVE through a cable provider, but many ISPs let you access ESPN3 without any cable package. Also, ESPN’s website will usually auto-detect when you’re on a partner ISP and grant you access to the stream without an account.

The most significant content on ESPN3 are ABC simulcasts, like the NBA Finals. You’re right that a lot of stuff moved to ESPN+.

After playing with it for a little bit, it looks like my ESPN+ subscription is not able to view ESPN3 events. If it allows access based on IP of a provider, I can add in a variable that could pull the schedule for ESPN3 streams, but it'd be experimental since I can't try it myself. I'd just be assuming that my existing code works the same for it.

Now that I think about it, I do remember spoofing the old Kodi ESPN3 plugin with my friend's ISP information. And that worked solely off of IP...

Can someone that has an ESPN3 supported provider try loading up a stream with an incognito browser and see if it works without a login? If that works, I'm wondering if SEC Network works the same way?

Looks like the Longhorn network works off of an affiliate list like ESPN3. Haven't been able to find others.

Yes, e.g. there is jai-alai right now that is 1) ESPN3 and 2) in incognito window (with spectrum, my ISP, watermarked in top right corner)

Let me know how i can help test here.

Let me put something together for you to test with

Okay, I pushed up a new container. You can add this: -e USE_ESPN3=true to your run command. I'm guessing you'll have to nuke your schedule.db.

I really don't know if playback will work though :man_shrugging:

2 Likes

playback didn't work - looks like it doesn't like the auth:

'User-Agent: User-Agent Mozilla/5.0 (Windows NT 10.0; rv:105.0) Gecko/20100101 Firefox/105.0\r\n' +
      'Origin: https://plus.espn.com\r\n' +
      'Host: watch.auth.api.espn.com\r\n' +
      'Connection: close\r\n' +
      '\r\n',
    _keepAliveTimeout: 0,
    _onPendingData: [Function: nop],
    agent: Agent {
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      defaultPort: 443,
      protocol: 'https:',
      options: [Object: null prototype],
      requests: [Object: null prototype] {},
      sockets: [Object: null prototype],
      freeSockets: [Object: null prototype] {},
      keepAliveMsecs: 1000,
      keepAlive: false,
      maxSockets: Infinity,
      maxFreeSockets: 256,
      scheduling: 'lifo',
      maxTotalSockets: Infinity,
      totalSocketCount: 1,
      maxCachedSessions: 100,
      _sessionCache: [Object],
      [Symbol(kCapture)]: false
    },
    socketPath: undefined,
    method: 'GET',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    path: '/video/auth/media/09a3ff80-e077-49d1-8630-5bda458aff70/asset',
    _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: 401,
      statusMessage: 'Unauthorized',
      client: [TLSSocket],
      _consuming: false,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'https://watch.auth.api.espn.com/video/auth/media/09a3ff80-e077-49d1-8630-5bda458aff70/asset',
      redirects: [],
      [Symbol(kCapture)]: false,
      [Symbol(kHeaders)]: [Object],
      [Symbol(kHeadersCount)]: 12,
      [Symbol(kTrailers)]: null,
      [Symbol(kTrailersCount)]: 0,
      [Symbol(RequestTimeout)]: undefined

Do you mind DM'ing me your full docker log?

Done, to the extent i could - it gets big quick...

1 Like