MusicChoice Support for DirecTV

Music Choice offer variety of music channels with video and radio stations,access is authorised by TVE credentials.

I tried to do some preliminary job - base code here -> here

However I encounter problem because puppeteer always gives me "network error, press retry to reconnect" error and I cannot fix it :frowning: Usage:

  • extract archive
  • npm install
  • replace in app.js strings YOUREMAIL and YOURPASSWORD with your credentials
  • run node app.js

In app.js I included array of anchors representing different music stations, on Website clicking into anchor reloads musicplayer. Each streaming link can be accessed from player using document.getElementsByTagName("video")[1].attributes[6].nodeValue

Important information: due to weird nature of contracts Music Choice has, TVE authorisation on web lasts ~4hours, while authorisation on mobile device is for 30 days :expressionless:
I tried to:

await page.setUserAgent('Mozilla/5.0 (iPad; CPU OS 12_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148');

but that's apparently a no-go because each stream URL extracted that way had a ?Platform\=Web\ component :frowning:

1 Like

Ok I did something and it is working now.
If anyone intrested I put the code on Github https://github.com/Behinder/MusicChoice_M3u

It requires setting dtvpass and dtvemail variables in .env file.
There is an array of channel links in app.js file, just uncomment channels you want to unlock.

These are for now only for audio channels. There will be black screen present and no artist/track info as I don't know how to fetch it. Also I need suggestions what parameters needs to be filled for better CHannels guide experience

I added support for video channels.

Please keep working on this. Would really love to see this working perfectly.

Nice, someone appreciated :slight_smile: I thought nobody uses MusicChoice. At the moment I am stuck because I don't know how to capture requests from inside iOS app. Without this links going to work only for like 4 hours.
At current stage it should work as expected. Things to to:

  • find some nice logos for channel
  • there is no EPG for video channels so we have to fill this with something
  • artist/track info

Artist track info seems to be tricky as it is not included within the stream :frowning: Musicchoice does present this info in separate fields on the page with additional process working as Ajax that fetches that info from somewhere :frowning:

What do you need captured? I was messing around with my android app, but don't really know what I'm looking at. Was capturing some stuff through fiddler proxy but not really sure what I was looking at.

And do the credential settings only work with direct TV, or can it be used with say xfinity?

currently it works only with DirecTV because only that I was able to test. If you provide me what link goes to authorisation window when you put email and password for Xfinity then I can work it further.

As for proxy, I had the same problem. The thing to capture is URL app is requesting when you hit "DirectTV" button or "XFinity" button as well as User-Agent, and what URL app requesting when you choose for example audio channel with 80s. Web player contain \platform=Web in URL and not sure what needs to be substituted to simulate authorisation from mobile device.
With this, maybe I can obtain links that are valid for 30 days.

Spent a lot of time trying to grab https packets, but the app looks to block any of it. Tried on my phone, android emulator, and rooted tablet. Can only grab http only and that doesn't appear to give any of the info needed.

I see in the first post you mention trying the UserAgent I'm assuming from the iPad browser. The one I get from trying to grab from the app is UserAgent:stagefright/1.2 (Linux;Android 11). Don't know if that could get you anywhere.

you should be possible to grap https using Wireshark or software called Proxyman. If you have any luck let me know :slight_smile: