ESPN+ & FOX Sports with Custom Channels via EPlusTV

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

I did a lot of troubleshooting on that. I first created all the folders it asked for (in /app/tmp and /app/config), then, ensured I had ownership. I even installed the docker container using the -user flag to make sure that my username (which is an admin) owned the docker container and the folder. But, eventually, I just took out all referenced to the paths and let it do its thing. Great work bytheway. Any chance you'll be taking a look at Bally Sports channels?

1 Like

Can I see how you're running the docker run command?

I don't think I'll do Bally Sports anytime soon... I don't have access to them at all and the login flow for that looks interesting to say the least

Just had a chance to test out the new update and wow. I had been using the old version to record games that I worked on but there were always problems. The new container recorded my game tonight perfectly, much better quality than before and didn't miss a second of it. Thank you so so much!

First M1 Mac record ( on ESPN+ , not 3) didn't go well. Slew of these:

2022/10/07 19:46:14.540051 [DVR] Recording for job 1665183890-11 from M3U-ESPNPlus ch7002 into "TV/Union vs. UConn/Union vs. UConn 2022-10-07-1904.mpg" for 2h48m45.493926s
2022/10/07 19:49:18.853550 [SNR] Buffer statistics for "TV/Union vs. UConn/Union vs. UConn 2022-10-07-1904.mpg": buf=2%,0%-100% drop=2%
2022/10/07 19:49:18.935075 [MTS] Statistics for "TV/Union vs. UConn/Union vs. UConn 2022-10-07-1904.mpg": skipped=0 unhandled_packets=0 discontinuity_detected=0 transport_errors=0 invalid_pts=0 invalid_dts=0 saw_pcr=true saw_pmt=true highest_pts=2665.602956
2022/10/07 19:49:19.039915 [TNR] Closed connection to M3U-ESPNPlus for ch7002 EPlusTV 7002
2022/10/07 19:49:19.044152 [DVR] Error running job 1665183890-11 Union vs. UConn: Transcoder Reset: Playlist skipped to a higher sequence (47106 -> 47110): http://localhost:8000/channels/7002.m3u8

1 Like

I see that error too.
In my case with hlstube feeding an M3U channel.
The channel can work fine for days and then get multiple of these errors in a single recording.

Apologies for the newbie question. I am new to docker. I was able to run the container, get my ESPN+ activated and it generated the channel list and programming. Where does the m3u file or xml file get generated and saved? I am unable to find it. Most likely user error.
I tried http://192.168.x.x:8000/xmltv.xml

I am hoping to use this with Tivimate.

3 Likes

If 8000 is the port you used then xmltv.xml is correct for the guide and then the m3u is http://192.192.x.x:8000/channels.m3u.

I am getting 'site cannot be reached. refused to connect' error.
I have container running on Docker Desktop app on my M1 iMac.
Its local ip address is 192.168.1.89. So I have tried:

192.168.1.89:8000/channels.m3u
192.168.1.89:8000/xmltv.tv

Again, I am brand new to this stuff so it could be simple user error.

1 Like

ssigning Seattle Kraken vs. Anaheim Ducks to Channel #1
Assigning Seattle Kraken vs. Anaheim Ducks to Channel #2
Assigning UC San Diego vs. CSU Fullerton to Channel #4
Assigning Cal Poly vs. CSU Northridge to Channel #6
Assigning Bangladesh vs. Pakistan (6th T20) to Channel #7
Assigning Vancouver Canucks vs. Edmonton Oilers to Channel #8
Assigning UC Irvine vs. UC Riverside to Channel #9
Assigning Marshall Postgame Presser to Channel #10
Assigning Women's Asia Cup 2022 to Channel #3
=== Done building the schedule ===
killall: ffmpeg: no process killed
=== Getting events ===
Looking for live events...
Looking for upcoming events...
Cleaning up old events
=== Done getting events ===
=== Building the schedule ===
=== Done building the schedule ===
=== Starting Server ===
Server started on port 8000
=== Getting events ===
Looking for live events...
Adding event: UC Santa Barbara vs. CSU Fullerton
Looking for upcoming events...
Cleaning up old events
=== Done getting events ===
=== Building the schedule ===
=== Done building the schedule ===
=== Starting Server ===
Server started on port 8000

2 Likes

Can I see your docker run command?

I am not sure where to find this. Sorry.
Docker is so foreign to me.