• 1
  • 106
  • 107
  • 108
  • 109
  • 110(current)
[RELEASE] ESPN3.com Addon
(2014-01-09, 06:36)m0ngr31 Wrote: I can't get this to work. I've tried it on every version I can find. (0.9.9 a few different default.py's and locomot1f's). This is my error on locomot1f's:
Code:
21:25:56 T:4840  NOTICE: -->Python Interpreter Initialized<--
21:25:57 T:4840  NOTICE: Mode: 4
21:25:57 T:4840  NOTICE: URL: &partnerContentId=1447690&eventId=176-188348&contentId=31293751
21:25:57 T:4840  NOTICE: Name: Boise State vs. #13 San Diego State - 01/08/2014
21:25:57 T:4840  NOTICE: Play Video
21:25:57 T:4840  NOTICE: ESPN3:  get_html: http://espn.go.com/watchespn/player/config
21:25:57 T:4840  NOTICE: ESPN3:  get_html: https://espn-ws.bamnetworks.com/pubajaxws/bamrest/MediaService2_0/op-findUserVerifiedEvent/v-2.1?playbackScenario=FMS_CLOUD&channel=espn3&partnerContentId=1447690&eventId=176-188348&contentId=31293751&rand=0.3620818456271521&cdnName=PRIMARY_AKAMAI&identityPointId=comcast:{0727F61F-C944-4427-82C5-BFA734157CB5}&playerId=domestic
21:25:59 T:4840  NOTICE: <?xml version='1.0' encoding='utf-8'?>
                                            <user-verified-media-response xmlns="http://services.bamnetworks.com/media/types/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                                             <status-code>
                                              -3000
                                             </status-code>
                                            </user-verified-media-response>
21:25:59 T:4840   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.AttributeError'>
                                            Error Contents: 'NoneType' object has no attribute 'find'
                                            Traceback (most recent call last):
                                              File "C:\Users\Joe\AppData\Roaming\XBMC\addons\plugin.video.espn3\default.py", line 590, in <module>
                                                PLAYESPN3(url)
                                              File "C:\Users\Joe\AppData\Roaming\XBMC\addons\plugin.video.espn3\default.py", line 221, in PLAYESPN3
                                                PLAY(url,'n360')
                                              File "C:\Users\Joe\AppData\Roaming\XBMC\addons\plugin.video.espn3\default.py", line 272, in PLAY
                                                if not authstatus.find('successstatus'):
                                            AttributeError: 'NoneType' object has no attribute 'find'
                                            -->End of Python script error report<--
21:25:59 T:4824   ERROR: Playlist Player: skipping unplayable item: 0, path [plugin://plugin.video.espn3/?url=%26partnerContentId%3D1447690%26eventId%3D176-188348%26contentId%3D31293751&mode=4&name=Boise+State+vs.+%2313+San+Diego+State+-+01%2F08%2F2014]

i think you might have to take this advice:
smirch1 Wrote:i have it working. After disabling on the login page, I backed out of the ad on and re-entered. Thanks for your help.

unfortunately, only ESPN3 content works on this plugin. hoping someone would be around to helping those with access... I've seen Bluecop poking around... but i don't think he programs anymore...
Linux Mint 18 LTS 64-bit - Kodi 17 Beta6
Odroid-C2 - Libreelec v7.90.009
Reply
What does it mean to disable the login page?

EDIT:
nevermind, stupid question.
Reply
Is it possible to make this work with Chrome Launcher? That may be an easier answer to have it work that way. Any developers interested in that?
Intel® Quad Core i5 Sandybridge @3.40GHz | ASRock Z775 Mobo 8GB DDR3 Ram | Logitech K400 Keyboard |
| Logitec Harmony 550 Remote| 46' Samsung LCD TV | Onkyo TX-S605 w/ Bose 5.1 Surround
Reply
(2014-01-10, 19:35)hunkyn Wrote: Is it possible to make this work with Chrome Launcher? That may be an easier answer to have it work that way. Any developers interested in that?

i actually think that still works with the original default.py (can anyone verify thisHuh).
I believe if authenticate through a browser, and then open up XBMC, the program should work.

i believe this problem arises with those of us that use our systems solely for XBMC. again.. i could be wrong.
Linux Mint 18 LTS 64-bit - Kodi 17 Beta6
Odroid-C2 - Libreelec v7.90.009
Reply
Update: It looks like the Adobe Flash Access is what's at play here. After tinkering with it a bit, it looks like we could theoretically send POST requests directly to the correct servers with the correct information to get the data we need such that we can access the ESPN stuff, but the protocols are entirely unknown to me at this point, as far as the specific binary formats sent back and forth. If anyone knows anyone familiar with this technology, or someone who knows a thing or two about reverse engineering, we might be able to get somewhere with this. As it stands, I'm not sure I've got the chops to continue, but it seems like it's just a matter of emulating the steps that the flash in the browser takes, and that should be enough if you have the proper authorization (TV provider etc) to view the content.

----------------------

I've followed as much of this discussion as I can over the last day, and did some investigating to see what's going on with non-ESPN3 streams. I discovered what locomot1f discovered, with the other URL and pkan and such, but did come up with one additional piece of potentially useful information: the long pkan string seems to be a base64 encoded string. I'm not sure if it was Wireshark or the way the data is actually sent, but I was initially thrown off because there are escaped codes in here. Like %2B and %0A, which are + and LF (linefeed), and those need to be converted before actually decoding the base64. So the base64 string (post-conversion) is:

Code:
PHNpZ25hdHVyZUluZm8+REwzdURBOFZSb1l6aTlpSmpBN0tpcGhPQ3pLdnl1aEFtV1NJVVExNGlD
dDVFN1hwSHB4VmdiMEt3R29laG1wR3VneElkK1dwSnQ4U0lVOWdQWnlHamtWaFFHQys0NGNYcUFF
d0FnWFV5Y0M0bU5SN25Gc1duVzZhK1lGbVQ5U1RUVGhacWUrOFArT2QvRkg3bFFOV3RRenJ6NWlK
OG1aUkNZUVBINWtHMXd3PTxzaWduYXR1cmVJbmZvPjxhdXRoVG9rZW4+PHNlc3Npb25HVUlEPjgy
NTI4OWI0MzUwNzk2Yjc1ZWNhMTY5ZTA2M2FiYzNjPC9zZXNzaW9uR1VJRD48cmVxdWVzdG9ySUQ+
RVNQTjwvcmVxdWVzdG9ySUQ+PHJlc291cmNlSUQ+PCFbQ0RBVEFbPHJzcyB2ZXJzaW9uPSIyLjAi
IHhtbG5zOm1lZGlhPSJodHRwOi8vc2VhcmNoLnlhaG9vLmNvbS9tcnNzLyI+PGNoYW5uZWw+PHRp
dGxlPjwhW0NEQVRBW2VzcG4xXV1dXT4+PCFbQ0RBVEFbPC90aXRsZT48aXRlbT48dGl0bGU+PCFb
Q0RBVEFbTG9zIEFuZ2VsZXMgTGFrZXJzIHZzLiBMb3MgQW5nZWxlcyBDbGlwcGVyc11dXV0+Pjwh
W0NEQVRBWzwvdGl0bGU+PGd1aWQ+PCFbQ0RBVEFbZXNwbjEvTG9zIEFuZ2VsZXMgTGFrZXJzIHZz
LiBMb3MgQW5nZWxlcyBDbGlwcGVycy8xNjE1NDE3OV1dXV0+PjwhW0NEQVRBWzwvZ3VpZD48bWVk
aWE6cmF0aW5nIHNjaGVtZT0idXJuOnYtY2hpcCI+RzwvbWVkaWE6cmF0aW5nPjwvaXRlbT48L2No
YW5uZWw+PC9yc3M+XV0+PC9yZXNvdXJjZUlEPjx0dGw+NDIwMDAwPC90dGw+PGlzc3VlVGltZT4y
MDE0LTAxLTEwIDIwOjU4OjE5IC0wODAwPC9pc3N1ZVRpbWU+PC9hdXRoVG9rZW4+

Thrown into a base64 decoder on the web, I get this (newlines and indentation added for clarity):

Code:
<signatureInfo>
    DL3uDA8VRoYzi9iJjA7KiphOCzKvyuhAmWSIUQ14iCt5E7XpHpxVgb0KwGoehmpGugxId+WpJt8SIU9gPZyGjkVhQGC+44cXqAEwAgXUycC4mNR7nFsWnW6a+YFmT9STTThZqe+8P+Od/FH7lQNWtQzrz5iJ8mZRCYQPH5kG1ww=
<signatureInfo>
<authToken>
    <sessionGUID>825289b4350796b75eca169e063abc3c</sessionGUID>
    <requestorID>ESPN</requestorID>
    <resourceID>
        <![CDATA[<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
        <channel>
            <title><![CDATA[espn1]]]]>><![CDATA[</title>
            <item>
                <title><![CDATA[Los Angeles Lakers vs. Los Angeles Clippers]]]]>><![CDATA[</title>
                <guid><![CDATA[espn1/Los Angeles Lakers vs. Los Angeles Clippers/16154179]]]]>><![CDATA[</guid>
                <media:rating scheme="urn:v-chip">G</media:rating>
            </item>
        </channel>
        </rss>]]>
    </resourceID>
    <ttl>420000</ttl>
    <issueTime>2014-01-10 20:58:19 -0800</issueTime>
</authToken>

The resource string was similar:

Code:
PHJzcyB2ZXJzaW9uPSIyLjAiIHhtbG5zOm1lZGlhPSJodHRwOi8vc2VhcmNoLnlhaG9vLmNvbS9t
cnNzLyI+PGNoYW5uZWw+PHRpdGxlPjwhW0NEQVRBW2VzcG4xXV0+PC90aXRsZT48aXRlbT48dGl0
bGU+PCFbQ0RBVEFbTG9zIEFuZ2VsZXMgTGFrZXJzIHZzLiBMb3MgQW5nZWxlcyBDbGlwcGVyc11d
PjwvdGl0bGU+PGd1aWQ+PCFbQ0RBVEFbZXNwbjEvTG9zIEFuZ2VsZXMgTGFrZXJzIHZzLiBMb3Mg
QW5nZWxlcyBDbGlwcGVycy8xNjE1NDE3OV1dPjwvZ3VpZD48bWVkaWE6cmF0aW5nIHNjaGVtZT0i
dXJuOnYtY2hpcCI+RzwvbWVkaWE6cmF0aW5nPjwvaXRlbT48L2NoYW5uZWw+PC9yc3M+

Which produced this (once again formatted for clarity):

Code:
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[espn1]]></title>
        <item>
            <title><![CDATA[Los Angeles Lakers vs. Los Angeles Clippers]]></title>
            <guid><![CDATA[espn1/Los Angeles Lakers vs. Los Angeles Clippers/16154179]]></guid>
            <media:rating scheme="urn:v-chip">G</media:rating>
        </item>
    </channel>
</rss>

As you can see, I was testing with the Lakers vs. Clippers game.

Also of note, these authentication strings seem to be time-sensitive, so if I use one and then come back 20 minutes later and try to stream with the same data, it will say "EXPIRED." But, when I came back later and got a new pkan string from Wireshark, the signatureInfo was different, but the sessionGUID was the same. Perhaps because I didn't log out in that time?

That's all I've been able to dredge up for now. I initially messed up my base64 decoding so I was confused for a while, but now these are just straight-up xml strings. Maybe these are helpful? I've yet to experiment with what parts of the XML are necessary and need to be specific for things to work. The signatureInfo worries me a bit, but time will tell.

More info: signatureInfo fields also seem to be base64 encoded, but these are just binary blobs that are 128 bytes (not bits). I initially thought it might be a hash, but that's too long for that, so I'm not sure. For the signatureInfo above, here's the hex representation of the base64 decoding:

Code:
0x0C 0xBD 0xEE 0x0C 0x0F 0x15 0x46 0x86
0x33 0x8B 0xD8 0x89 0x8C 0x0E 0xCA 0x8A
0x98 0x4E 0x0B 0x32 0xAF 0xCA 0xE8 0x40
0x99 0x64 0x88 0x51 0x0D 0x78 0x88 0x2B
0x79 0x13 0xB5 0xE9 0x1E 0x9C 0x55 0x81
0xBD 0x0A 0xC0 0x6A 0x1E 0x86 0x6A 0x46
0xBA 0x0C 0x48 0x77 0xE5 0xA9 0x26 0xDF
0x12 0x21 0x4F 0x60 0x3D 0x9C 0x86 0x8E
0x45 0x61 0x40 0x60 0xBE 0xE3 0x87 0x17
0xA8 0x01 0x30 0x02 0x05 0xD4 0xC9 0xC0
0xB8 0x98 0xD4 0x7B 0x9C 0x5B 0x16 0x9D
0x6E 0x9A 0xF9 0x81 0x66 0x4F 0xD4 0x93
0x4D 0x38 0x59 0xA9 0xEF 0xBC 0x3F 0xE3
0x9D 0xFC 0x51 0xFB 0x95 0x03 0x56 0xB5
0x0C 0xEB 0xCF 0x98 0x89 0xF2 0x66 0x51
0x09 0x84 0x0F 0x1F 0x99 0x06 0xD7 0x0C

It seems to be a signature of some kind, and it looks like it needs to match. I took a good pkan string, decoded it into its xml, and changed a single character of the signatureInfo and then converted it back, and I get a message about a corrupt signature back. So whatever solution we find will probably have to generate these signatures. With any luck it'll just be a matter of finding the right algorithm? Hopefully there's not some kind of secret key involved...

Okay further investigation... It looks like relatively soon before the above data is sent by the browser to ESPN, there's an HTTP packet from an Adobe website (66.235.134.217) with 200 OK and a bunch of binary data, including the string "Adobe Systems Incorporated" and "Adobe Flash Access Individualization". Googling these terms yields some results, and it looks like their DRM scheme.
Reply
Hey, that's awesome man. I've forked locomot1f's repo on Github and removed the login settings for the time being since they don't work. I've also added it into my repo (HERE) so it can be automatically updated when we get new stuff figured out. Let me know if you are interested in getting something going.
Reply
It also appears as if masking that you are not on Comcast you can't mask it anymore with the userdata.xml file. Can anyone else confirm?
Reply
Sorry for being late, but with 165 pages it's hard to figure out what's current...

Is this plugin working for ESPN 3 currently? I'm on comcast but use a comcast account not associated with my physical connection to log in. On MacOS if it's a factor. By monkeying around with all the login settings I eventually got it to let me list content, but nothing I've tried gets it to play. Using 12.3 frodo. Any summary of the current status would be appreciated.
Reply
Logging in doesn't work at all right now. The only thing that works is ESPN3 while being on a network that supports it. You'll have to make sure your userdata.xml is in the right place too.
Reply
Thanks! Hope the login system at least gets sorted soon.
Reply
Added a fork of this to the official XBMC repo. All non working parts removed and problems with userdata files / custom user files have been fixed. Enjoy.

Any discussion about the fork should be directed to this thread --> http://forum.xbmc.org/showthread.php?tid=186028
Enjoy my work? Check out my other projects.

XBMC Add-ons

Android Games
Reply
  • 1
  • 106
  • 107
  • 108
  • 109
  • 110(current)

Logout Mark Read Team Forum Stats Members Help
[RELEASE] ESPN3.com Addon12