def nbc_stream(url): if not '&format=redirect' in url: html = Addon.getRequest(url) if 'video src="' in html: url = Addon.find_single_match(html, 'video src="(.+?)"') else: url = Addon.find_single_match(html, 'ref src="(.+?)"') if 'nbcvodenc' in url: html = Addon.getRequest(url) url = Addon.find_single_match(html, 'http(.+?)\n') url = 'http' + url.strip() elif not (url.endswith(".mp4") or url.endswith(".flv")): headers = Addon.defaultHeaders.copy() headers[ 'User-Agent'] = 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600X800; rotate)' html = Addon.getRequest(url, headers=headers) urls = Addon.find_multiple_matches(html, 'BANDWIDTH=(.+?),.+?\n(.+?)\n') blast = 0 for b, u in urls: b = int(b) if blast < b: url = u blast = b url += '|User-Agent=' + urllib.quote(headers['User-Agent']) if "Unavailable.mp4" in url: dlg.ok(addonname, "Stream unavailable.") exit() else: Addon.play(url)
def abc_stream(url): req = urllib2.Request(url) req.add_header( 'User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3' ) response = urllib2.urlopen(req) link = response.read() response.close() vd = Addon.find_single_match(link, "VDKA(.+?)\"") url = 'https://api.entitlement.watchabc.go.com/vp2/ws-secure/entitlement/2020/authorize.json' udata = 'video%5Fid=VDKA' + str( vd) + '&device=001&video%5Ftype=lf&brand=001' uheaders = Addon.defaultHeaders.copy() uheaders['Content-Type'] = 'application/x-www-form-urlencoded' uheaders['Accept'] = 'application/json' uheaders['X-Requested-With'] = 'ShockwaveFlash/22.0.0.209' uheaders['Origin'] = 'http://cdn1.edgedatg.com' html = Addon.getRequest(url, udata, uheaders) a = json.loads(html) if a.get('uplynkData', None) is None: return sessionKey = a['uplynkData']['sessionKey'] if not '&cid=' in sessionKey: oid = Addon.find_single_match(html, '&oid=(.+?)&') eid = Addon.find_single_match(html, '&eid=(.+?)&') url = 'http://content.uplynk.com/ext/%s/%s.m3u8?%s' % (oid, eid, sessionKey) else: cid = Addon.find_single_match(html, '&cid=(.+?)&') url = 'http://content.uplynk.com/%s.m3u8?%s' % (cid, sessionKey) Addon.play(url)
def nbc_episodes(url): req = urllib2.Request(url) req.add_header( 'User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3' ) response = urllib2.urlopen(req) link = response.read() response.close() id = re.compile(',"listKey"\:\"(.+?)"', re.DOTALL).search(link) if id is not None: id = id.group(1) id = id.rsplit('-', 1)[0] req = urllib2.Request( 'https://api.nbc.com/v3.14/videos?fields%5Bvideos%5D=title%2Cdescription%2Ctype%2Cgenre%2CvChipRating%2CvChipSubRatings%2Cguid%2Cpublished%2CrunTime%2Cairdate%2Cavailable%2CseasonNumber%2CepisodeNumber%2Cexpiration%2Centitlement%2CtveAuthWindow%2CnbcAuthWindow%2CexternalAdId%2CuplynkStatus%2CdayPart%2CinternalId%2Ckeywords%2Cpermalink%2CembedUrl%2Ccredits%2CselectedCountries%2Ccopyright&fields%5Bshows%5D=active%2Ccategory%2Ccolors%2CcreditTypeLabel%2Cdescription%2Cfrontends%2Cgenre%2CinternalId%2CisCoppaCompliant%2Cname%2Cnavigation%2Creference%2CschemaType%2CshortDescription%2CshortTitle%2CshowTag%2Csocial%2CsortTitle%2CtuneIn%2Ctype%2CurlAlias&fields%5Bimages%5D=derivatives%2Cpath%2Cwidth%2Cattributes%2CaltText%2Clink&fields%5BaggregatesShowProperties%5D=videoEpisodeSeasons%2CvideoTypes&include=image%2Cshow.image%2Cshow.aggregates&filter%5Bpublished%5D=1&filter%5BsalesItem%5D=0&filter%5Bshow%5D=' + id + '&filter%5Btype%5D%5Bvalue%5D=Full%20Episode&filter%5Btype%5D%5Boperator%5D=%3D&sort=airdate&page%5Bnumber%5D=1&page%5Bsize%5D=50' ) req.add_header( 'User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3' ) response = urllib2.urlopen(req) html = response.read() response.close() a = json.loads(html) episodelist = [] for b in sorted(a['data']): entitlement = b['attributes'].get('entitlement') url = b['attributes'].get('embedUrl') url = url.split('guid/', 1)[1] url = url.split('?', 1)[0] url = 'http://link.theplatform.com/s/NnzsPC/media/guid/%s?format=preview' % url html = Addon.getRequest(url) if html == '': continue c = json.loads(html) name = c['title'] description = c.get('description') iconimage = c.get('defaultThumbnailUrl') url = 'http://link.theplatform.com/s/NnzsPC/media/' + c[ 'mediaPid'] + '?policy=43674&player=NBC.com%20Instance%20of%3A%20rational-player-production&formats=m3u,mpeg4&format=SMIL&embedded=true&tracking=true' if b['attributes'].get( 'type') == "Full Episode" and entitlement == "free": episodelist.append(name) if len(episodelist) > 0: Addon.addLink(str(name), description, url, 23, iconimage) else: dlg.ok(addonname, "No episodes found.") exit() else: dlg.ok(addonname, "No episodes found.") exit()
def freeform_stream(url): req = urllib2.Request(url) req.add_header( 'User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3' ) response = urllib2.urlopen(req) link = response.read() response.close() vd = Addon.find_single_match(link, "VDKA(.+?)\"") url = 'https://api.entitlement.watchabc.go.com/vp2/ws-secure/entitlement/2020/authorize.json' udata = 'video%5Fid=VDKA' + str( vd) + '&device=001&video%5Ftype=lf&brand=002' uheaders = Addon.defaultHeaders.copy() uheaders['Content-Type'] = 'application/x-www-form-urlencoded' uheaders['Accept'] = 'application/json' uheaders['X-Requested-With'] = 'ShockwaveFlash/24.0.0.194' uheaders['Origin'] = 'http://cdn1.edgedatg.com' uheaders['DNT'] = '1' uheaders[ 'Referer'] = 'http://cdn1.edgedatg.com/aws/apps/datg/web-player-unity/1.0.6.13/swf/player_vod.swf' uheaders['Pragma'] = 'no-cache' uheaders['Connection'] = 'keep-alive' uheaders['Cache-Control'] = 'no-cache' html = Addon.getRequest(url, udata, uheaders) a = json.loads(html) if a.get('uplynkData', None) is None: return sessionKey = a['uplynkData']['sessionKey'] oid = Addon.find_single_match(html, '&oid=(.+?)&') eid = Addon.find_single_match(html, '&eid=(.+?)&') url = 'http://content.uplynk.com/ext/%s/%s.m3u8?%s' % (oid, eid, sessionKey) Addon.play(url)
def pbs_stream(url): html = Addon.getRequest('%s?format=json' % url) a = json.loads(html) url = a.get('url') if url is not None: Addon.play(url)