def WatchLive(name='', iconimage='', quality='best'): headers = {"User-Agent": userAgent} url = 'https://www.21.tv/pages/video/videoS.htm' text = common.OpenURL(url, headers=headers) match = re.compile('var videoSrc="(.*?)";').findall(text) text = common.OpenURL(match[0], headers=headers) match = re.compile("var\s*metadataURL\s*?=\s*?'(.+?)'").findall(text) metadataURL = match[0].replace('https://', 'http://').replace('https_streaming=true', 'https_streaming=false') text = common.OpenURL(metadataURL, headers=headers) match = re.compile("<SmilURL.*>(.+)</SmilURL>").findall(text) smil = match[0].replace('amp;', '') match = re.compile("<Server priority='1'>(.+)</Server>").findall(text) server = match[0] link = common.urlunparse(common.url_parse(smil)._replace(netloc=server)) headers = { 'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'Accept': '*/*', 'User-Agent': userAgent, 'Sec-Fetch-Site': 'same-site', 'Sec-Fetch-Mode': 'cors', 'Referer': metadataURL, 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US,en;q=0.9', } link = common.GetStreams(link, headers=headers, quality=quality) final = '{0}|User-Agent={1}&Referer={2}'.format(link, userAgent, metadataURL) common.PlayStream(final, quality, name, iconimage)
def Play(url, name='', iconimage='', quality='best'): try: result = common.OpenURL('{0}{1}'.format(baseUrl, url), headers={"User-Agent": userAgent}) id = re.compile(u'<video-js.*?data-video-id="(.*?)"', re.S).findall(result)[0] result = common.OpenURL('{0}{1}'.format(api, id), headers={"Accept": pk, "User-Agent": userAgent}) if result is None: link = 'https://c.brightcove.com/services/mobile/streaming/index/master.m3u8?videoId={0}'.format(id) link = common.GetStreams(link, headers={"User-Agent": userAgent}, quality=quality) else: sources = json.loads(result)['sources'] link = '' avg_bitrate = 0 for source in sources: if 'src' in source: s_type = source.get('type') #if s_type == 'application/x-mpegURL': # link = common.GetStreams(source['src'], headers={"User-Agent": userAgent}, quality=quality) # break if source.get('container') == 'MP4': if source['avg_bitrate'] > avg_bitrate: link = source['src'] avg_bitrate = source['avg_bitrate'] final = '{0}|User-Agent={1}'.format(link, userAgent) common.PlayStream(final, quality, name, iconimage) except Exception as ex: xbmc.log(str(ex), 3)
def WatchLive(url, name='', iconimage='', quality='best'): headers = { 'User-Agent': userAgent, 'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'Accept': 'application/json', 'DNT': '1', 'Referer': 'http://kab.tv/', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'en-US,en;q=0.9' } channels = common.OpenURL('http://kab.tv/api/streams', headers=headers, responseMethod='json') for channel in channels: if str(channel['id']) == url: link = channel['url'].strip() break if link == '': return None headers = {"User-Agent": userAgent} text = common.OpenURL(link, headers=headers) match = re.compile('hlsUrl":"(.*?)"').findall(text) link = common.GetStreams(match[0], headers=headers, quality=quality) final = '{0}|User-Agent={1}'.format(link, userAgent) common.PlayStream(final, quality, name, iconimage)
def WatchLive(url, name='', iconimage='', quality='best'): channels = { '13': {'ch': 'videoId', 'casttimeId': '1', 'referer': '{0}/live/'.format(baseUrl), 'link': 'https://d18b0e6mopany4.cloudfront.net/out/v1/08bc71cf0a0f4712b6b03c732b0e6d25/index.m3u8'}, '13c': {'ch': 'accessibility_ref', 'casttimeId': '27', 'referer': '{0}/live/'.format(baseUrl), 'link': 'https://d198ztbnlup2iq.cloudfront.net/out/v1/2d9050c90fb94df8b78d1d98306a1a65/index.m3u8'}, #'bb': {'ch': 'videoId', 'casttimeId': '26', 'referer': '{0}/home/bb-livestream/'.format(baseUrl), 'link': 'https://d2lckchr9cxrss.cloudfront.net/out/v1/c73af7694cce4767888c08a7534b503c/index.m3u8'} 'bb': {'ch': 'videoId', 'casttimeId': '26', 'referer': '{0}/home/bb-livestream/'.format(baseUrl), 'link': 'https://cdnapisec.kaltura.com/p/2748741/sp/2748741/playManifest/entryId/1_6fr5xbw2/deliveryProfileId/672/protocol/https/format/applehttp/a.m3u8'} } referer = channels[url]['referer'] ''' try: result = GetUrlJson(referer) provider = result['Header']['Live']['extras']['live_video_provider'] if provider == 'cast_time': result = common.OpenURL('https://13tv-api.oplayer.io/api/getlink/?userId=45E4A9FB-FCE8-88BF-93CC-3650C39DDF28&serverType=web&cdnName=casttime&ch={0}'.format(channels[url]['casttimeId']), headers={"User-Agent": userAgent}) link = json.loads(result)[0]['Link'] else: result = common.OpenURL('{0}{1}'.format(api, result['Header']['Live'][channels[url]['ch']]), headers={"Accept": pk, "User-Agent": userAgent}) link = json.loads(result)['sources'][0]['src'] except Exception as ex: xbmc.log(str(ex), 3) link = channels[url]['link'] ''' link = channels[url]['link'] link = common.GetStreams(link, headers={"User-Agent": userAgent, 'Referer': referer}, quality=quality) final = '{0}|User-Agent={1}&Referer={2}'.format(link, userAgent, referer) common.PlayStream(final, quality, name, iconimage)
def WatchLive(name='', iconimage='', quality='best'): headers={"User-Agent": userAgent} #text = common.OpenURL('https://www.hidabroot.org/live', headers=headers) #match = re.compile('<div id="video_wrapper".*?<iframe src="(.*?)"').findall(text) #text = common.OpenURL(match[0], headers=headers) text = common.OpenURL('https://go.shidur.net/player/testlive.php', headers=headers) match = re.compile('hls\.loadSource\(["\'](.*?)["\']\)').findall(text) link = common.GetStreams(match[0], headers=headers, quality=quality) final = '{0}|User-Agent={1}'.format(link, userAgent) common.PlayStream(final, quality, name, iconimage)
def WatchLive(url, name='', iconimage='', quality='best'): try: text = common.OpenURL(baseUrl, headers=headers) link = re.compile('"webapp\.broadcast_link":"(.*?)"').findall( text)[0].replace('\u002F', '/') except Exception as ex: xbmc.log(str(ex), 3) link = 'https://cdna.streamgates.net/TheBest/live/playlist.m3u8' link = common.GetStreams(link, headers=headers, quality=quality) final = '{0}|User-Agent={1}'.format(link, userAgent) common.PlayStream(final, quality, name, iconimage)
def Play(name, url, iconimage, quality='best'): link = referer = url headers['Referer'] = referer match = re.compile('videoUrl=(.*?)&').findall(referer) if len(match) > 0: link = match[0] else: match = re.compile('clipId=(.*?)&').findall(referer) if len(match) > 0: link = 'https://sport5-vh.akamaihd.net/i/{0}video{1}.csmil/master.m3u8'.format( 'UEFA/' if '/UCL2017' in referer else '', match[0]) link = common.GetStreams(link, headers=headers, quality=quality) final = '{0}|User-Agent={1}&Referer={2}'.format(link, userAgent, referer) common.PlayStream(final, quality, name, iconimage)
def Play(name, url, iconimage, quality='best', live=None): text = common.OpenURL(url, headers=headers) match = re.compile('src:\s*"(.*?)"').findall(text) if len(match) < 0: match = re.compile('source\s*src="(.*?)"').findall(text) if len(match) < 0: match = re.compile("hls.loadSource\('(.*?)'\)").findall(text) if len(match) < 0 and live is not None: match = [live] link = common.GetRedirect(match[0], headers=headers) if link is None: link = common.GetStreams(match[0], headers=headers, quality=quality) final = '{0}|User-Agent={1}'.format(link, userAgent) common.PlayStream(final, quality, name, iconimage)
def GetPlayerKanUrl(url, headers={}, quality='best'): url = url.replace('https', 'http') i = url.rfind('http://') if i > 0: url = url[i:] url = url.replace('HLS/HLS', 'HLS') text = common.OpenURL(url, headers=headers) if 'ByPlayer' in url: match = re.compile('bynetURL:\s*"(.*?)"').findall(text) if len(match) == 0: match = re.compile('"UrlRedirector":"(.*?)"').findall(text) link = match[0].replace('https', 'http').replace('\u0026', '&') elif len(re.compile('media\.(ma)?kan\.org\.il').findall(url)) > 0: match = re.compile('hls:\s*?"(.*?)"').findall(text) link = match[0] elif 'kaltura' in url: text = common.OpenURL(url, headers=headers) match = re.compile( 'window\.kalturaIframePackageData\s*=\s*{(.*?)};').findall(text) result = json.loads('{' + match[0] + '}') link = result['entryResult']['meta']['hlsStreamUrl'] link = common.GetStreams(link, headers=headers, quality=quality) else: match = re.compile("var\s*metadataURL\s*?=\s*?'(.+?)'").findall(text) text = common.OpenURL(match[0].replace('https_streaming=true', 'https_streaming=false'), headers=headers) match = re.compile("<SmilURL.*>(.+)</SmilURL>").findall(text) smil = match[0].replace('amp;', '') match = re.compile( "<Server priority=['\"]1['\"]>(.+)</Server>").findall(text) server = match[0] link = common.urlunparse( common.url_parse(smil)._replace(netloc=server)) if 'api.bynetcdn.com/Redirector' not in link: link = common.GetStreams(link, headers=headers, quality=quality) return '{0}|User-Agent={1}'.format(link, userAgent)
def WatchLive(name='', iconimage='', quality='best'): try: headers = {"User-Agent": userAgent} #url = 'https://main.knesset.gov.il/News/Broadcast/Pages/default.aspx?pos=tv' #url = 'https://main.knesset.gov.il/_layouts/15/1037/CustomScripts/KnessetBroadcastLobby.js' url = 'https://main.knesset.gov.il/_layouts/15/1037/CustomScripts/KnessetMainScripts.js?v=9' text = common.OpenURL(url, headers=headers) #match = re.compile('pathChannelVideo = ko\.observable\("(.*?)"\);').findall(text) match = re.compile( "playerPlenumLiveMediaElement\.setSrc\('(.*?)'\);").findall(text) #url = common.GetRedirect(match[0], headers=headers) url = match[0] except Exception as ex: xbmc.log(str(ex), 3) if url is None or len(url) < 10: url = ' https://contact.gostreaming.tv/Knesset/myStream/playlist.m3u8' link = common.GetStreams(url, headers=headers, quality=quality) final = '{0}|User-Agent={1}'.format(link, userAgent) common.PlayStream(final, quality, name, iconimage)
def WatchLive(url, name='', iconimage='', quality='best'): headers = {"User-Agent": userAgent} channels = { 'live': { 'ch': 'https://www.ynet.co.il/video/live/0,20658,1-5259927,00.html', 'link': 'http://ynet-lh.akamaihd.net/i/ynet_1@123290/master.m3u8' }, } link = channels[url]['link'] text = common.OpenURL(channels[url]['ch'], headers=headers) if text is not None: match = re.compile( "progresivePath: function.*?return replacePath\(decodeURIComponent\('(.*?)'\).*?}", re.S).findall(text) if match[0] != '': link = match[0] link = common.GetStreams(link, headers=headers, quality=quality) final = '{0}|User-Agent={1}'.format(link, userAgent) common.PlayStream(final, quality, name, iconimage)
def WatchLive(name='', iconimage='', quality='best'): url = 'http://walla-metadata-rr-d.vidnt.com/live/walla/ulpan/hls/metadata.xml' text = common.OpenURL(baseUrl, headers=headers) match = re.compile('id="iframePlayer"\s*src="(.*?)"').findall(text) if len(match) > 0: text = common.OpenURL('{0}{1}'.format(baseUrl, match[0]), headers=headers) match = re.compile("data-player='(.*?)'").findall(text) if len(match) > 0: jsn = json.loads(match[0]) liveStream = jsn.get('liveStream', 'ulpan') url = 'http://walla-metadata-rr-d.vidnt.com/live/walla/{0}/hls/metadata.xml'.format( liveStream) text = common.OpenURL(url, headers=headers) if quality == 'best': #match = re.compile('FileURL bitrate="(\d*)".*?>\s*(.*?)\s*</FileURL>').findall(text) #url = match[-1][1].replace('amp;', '') resolutions = [ x for x in re.compile( 'FileURL bitrate="(\d*)".*?>\s*(.*?)\s*</FileURL>').findall( text) ] resolutions = sorted(resolutions, key=lambda resolutions: int(resolutions[0]), reverse=True) url = resolutions[0][1].replace('amp;', '') else: match = re.compile("<SmilURL.*>(.*?)</SmilURL>").findall(text) url = match[0].replace('amp;', '') match = re.compile("<Server priority=['\"]1['\"]>(.+)</Server>").findall( text) server = match[0] link = common.urlunparse(common.url_parse(url)._replace(netloc=server)) link = common.GetStreams(link, headers=headers, quality=quality) common.PlayStream('{0}|User-Agent={1}'.format(link, userAgent), quality, name, iconimage)
def WatchLive(url, name='', iconimage='', quality='best'): channels = { '5live': { 'ch': 'liveurl', 'link': 'https://sport5-lh.akamaihd.net/i/radio5_0@65353/master.m3u8' }, '5studio': { 'ch': 'studioUrl', 'link': 'https://sport5-lh.akamaihd.net/i/radiolivev_0@698733/index_1_av-p.m3u8' } } link = channels[url]['link'] try: link = GetRadioData(channels[url]['ch']) except Exception as ex: xbmc.log(str(ex), 3) link1 = common.GetStreams(link, headers=headers, quality=quality) if link1 == link: link1 = channels[url]['link'] final = '{0}|User-Agent={1}&Referer={2}'.format(link1, userAgent, radioUrl) common.PlayStream(final, quality, name, iconimage)
def GetLink(media, cdn, dv, headers, quality): url = '' for item in media: if item['cdn'] == cdn.upper(): url = item['url'] break if url == '': return None, None if username.strip() == '': l = '{0}?et=gt&lp={1}&rv={2}'.format(entitlementsServices, url, cdn) else: l = '{0}?et=gt&na=2.0&da=6gkr2ks9-4610-392g-f4s8-d743gg4623k2&du={1}&dv={2}&rv={3}&lp={4}'.format( entitlementsServices, deviceID, dv, cdn, url) ticket = GetTicket(l, headers) if url.startswith('//'): url = 'https:{0}'.format(url) #xbmc.log('{0}?{1}'.format(url, ticket), 5) session = common.GetSession() link = common.GetStreams('{0}&{1}'.format(url, ticket) if '?' in url else '{0}?{1}'.format(url, ticket), headers=headers, session=session, quality=quality) return link, session.cookies
def Play(video, name='', iconimage='', quality='best'): try: videos = video.split('===') kaltura = '' cst = '' brv = '' for vid in videos: if '--kaltura--' in vid: kaltura = vid.replace('--kaltura--', '') elif '--cst--' in vid: cst = vid.replace('--cst--', '') elif '--brv--' in vid: brv = vid.replace('--brv--', '') if kaltura != '': headers = { 'accept': '*/*', 'accept-language': 'en', 'content-type': 'application/json', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'cross-site', 'referrer': 'https://13tv.co.il/', 'referrerPolicy': 'strict-origin-when-cross-origin', 'User-Agent': userAgent } payload = "{\"1\":{\"service\":\"session\",\"action\":\"startWidgetSession\",\"widgetId\":\"_2748741\"},\"2\":{\"service\":\"baseEntry\",\"action\":\"list\",\"ks\":\"{1:result:ks}\",\"filter\":{\"redirectFromEntryId\":\"$$$\"},\"responseProfile\":{\"type\":1,\"fields\":\"id,referenceId,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus,externalSourceType,status\"}},\"3\":{\"service\":\"baseEntry\",\"action\":\"getPlaybackContext\",\"entryId\":\"{2:result:objects:0:id}\",\"ks\":\"{1:result:ks}\",\"contextDataParams\":{\"objectType\":\"KalturaContextDataParams\",\"flavorTags\":\"all\"}},\"4\":{\"service\":\"metadata_metadata\",\"action\":\"list\",\"filter\":{\"objectType\":\"KalturaMetadataFilter\",\"objectIdEqual\":\"$$$\",\"metadataObjectTypeEqual\":\"1\"},\"ks\":\"{1:result:ks}\"},\"apiVersion\":\"3.3.0\",\"format\":1,\"ks\":\"\",\"clientTag\":\"html5:v0.56.1\",\"partnerId\":2748741}".replace("$$$", kaltura) response = requests.post("https://cdnapisec.kaltura.com/api_v3/service/multirequest", headers=headers, data=payload) link = '' for s in response.json()[2]["sources"]: if s["format"] == "applehttp": link = s["url"] break #xbmc.log(link, 5) link = common.GetStreams(link, quality=quality) elif cst != '': headers={"User-Agent": userAgent} if common.isnumeric(cst): result = common.OpenURL('https://13tv-api.oplayer.io/api/getlink/getVideoById?userId=45E4A9FB-FCE8-88BF-93CC-3650C39DDF28&serverType=web&videoId={0}&callback=x'.format(cst), headers=headers) else: result = common.OpenURL('https://13tv-api.oplayer.io/api/getlink/getVideoByFileName?userId=45E4A9FB-FCE8-88BF-93CC-3650C39DDF28&videoName={0}&serverType=web&callback=x'.format(cst), headers=headers) if result is not None: source = json.loads(result)[0] link = '{0}{1}{2}{3}{4}.mp4{5}{6}'.format(source['ProtocolType'], source['ServerAddress'], source['MediaRoot'], source['MediaFile'][:source['MediaFile'].find('.mp4')], source['Bitrates'], source['StreamingType'], source['Token']) #xbmc.log(link, 5) session = common.GetSession() link = common.GetStreams(link, headers=headers, session=session, quality=quality) final = '{0}|User-Agent={1}'.format(link, userAgent) cookies = "&".join(['Cookie={0}'.format(common.quote('{0}={1}'.format(_cookie.name, _cookie.value))) for _cookie in session.cookies]) if cookies != '': final = '{0}&{1}'.format(final, cookies) else: result = common.OpenURL('{0}{1}'.format(api, brv), headers={"Accept": pk, "User-Agent": userAgent}) if result is None: link = 'https://c.brightcove.com/services/mobile/streaming/index/master.m3u8?videoId={0}'.format(brv) link = common.GetStreams(link, headers=headers, quality=quality) else: sources = json.loads(result)['sources'] link = '' avg_bitrate = 0 for source in sources: if 'src' in source: if source['container'] == 'M2TS': link = common.GetStreams(source['src'], headers=headers, quality=quality) break if source['avg_bitrate'] > avg_bitrate: link = source['src'] avg_bitrate = source['avg_bitrate'] #xbmc.log('[{0}] {1}'.format(avg_bitrate, link), 5) final = '{0}|User-Agent={1}'.format(link, userAgent) final = '{0}|User-Agent={1}'.format(link, userAgent) common.PlayStream(final, quality, name, iconimage) except Exception as ex: xbmc.log(str(ex), 3)
def WatchLive(url, name='', iconimage='', quality='best'): channels = { '891fm': { 'link': 'https://www.oles.tv/891fm/player/', 'regex': "streamSource\s*=\s*'(.*?)'" }, '100fm': { 'link': 'https://100fm.multix.co.il/', 'regex': "hls:\s*'(.*?)'", 'direct': 'https://video_cdn.streamgates.net/radios100fm/feed720/playlist.m3u8' }, '11b': { 'link': 'https://kanlivep2event-i.akamaihd.net/hls/live/747610/747610/source1_2.5k/chunklist.m3u8', 'final': True }, '11b2': { 'link': 'plugin://plugin.video.dailymotion_com/?url=x7wjmog&mode=playLiveVideo', 'final': True }, 'n12': { 'link': 'https://keshethlslive-lh.akamaihd.net/i/c2n_1@195269/index_3100_av-p.m3u8', 'final': True }, '13b': { 'link': 'https://d18b0e6mopany4.cloudfront.net/out/v1/08bc71cf0a0f4712b6b03c732b0e6d25/index.m3u8', 'referer': 'https://13tv.co.il/live/' }, 'bbb': { 'link': 'https://d2lckchr9cxrss.cloudfront.net/out/v1/c73af7694cce4767888c08a7534b503c/index.m3u8', 'referer': 'https://13tv.co.il/home/bb-livestream/', 'final': True }, 'musayof': { 'link': 'http://wowza.media-line.co.il/Musayof-Live/livestream.sdp/playlist.m3u8', 'referer': 'http://media-line.co.il/Media-Line-Player/musayof/livePlayer.aspx' } } headers = {"User-Agent": userAgent} regex = channels[url].get('regex') if regex: text = common.OpenURL(channels[url]['link'], headers=headers) link = re.compile(regex).findall(text) if len(link) > 0: link = link[0] else: link = channels[url]['direct'] else: link = channels[url]['link'] if link.startswith('//'): link = 'http:{0}'.format(link) referer = channels[url].get('referer') if referer: headers['referer'] = referer if not channels[url].get('final') == True: link = common.GetStreams(link, headers=headers, quality=quality) if referer: common.PlayStream( '{0}|User-Agent={1}&Referer={2}'.format(link, userAgent, referer), quality, name, iconimage) else: common.PlayStream('{0}|User-Agent={1}'.format(link, userAgent), quality, name, iconimage)
def PlayRadioEpisode(name, url, iconimage, quality='best'): link = common.GetStreams(url, headers=headers, quality=quality) final = '{0}|User-Agent={1}'.format(link, userAgent) common.PlayStream(final, quality, name, iconimage)