def getLinksForVideo(self, cItem): printDBG("Urllist.getLinksForVideo url[%s]" % cItem['url']) videoUrls = [] uri = urlparser.decorateParamsFromUrl(cItem['url']) protocol = uri.meta.get('iptv_proto', '') printDBG("PROTOCOL [%s] " % protocol) urlSupport = self.up.checkHostSupport(uri) if 1 == urlSupport: retTab = self.up.getVideoLinkExt(uri) videoUrls.extend(retTab) elif 0 == urlSupport and self._uriIsValid(uri): if protocol == 'm3u8': retTab = getDirectM3U8Playlist(uri, checkExt=False, checkContent=True) videoUrls.extend(retTab) elif protocol == 'f4m': retTab = getF4MLinksWithMeta(uri) videoUrls.extend(retTab) elif protocol == 'mpd': retTab = getMPDLinksWithMeta(uri, False) videoUrls.extend(retTab) else: videoUrls.append({'name': 'direct link', 'url': uri}) return videoUrls
def getLinksForVideo(self, cItem): url = cItem['url'] printDBG("RtlMostHU.getLinksForVideo url[%s]" % url) videoUrls = [] if not self.tryTologin(): return videoUrls sts, data = self.cm.getPage(self.VIDEO_URL.format( url), self.apiParams) if not sts: return videoUrls try: data = json_loads(data) assets = data['clips'][0].get('assets') url = assets[0].get('full_physical_path'); except Exception: printExc() uri = urlparser.decorateParamsFromUrl(url) protocol = uri.meta.get('iptv_proto', '') printDBG("PROTOCOL [%s] " % protocol) if protocol == 'm3u8': retTab = getDirectM3U8Playlist(uri, checkExt=False, checkContent=True) videoUrls.extend(retTab) elif protocol == 'f4m': retTab = getF4MLinksWithMeta(uri) videoUrls.extend(retTab) elif protocol == 'mpd': retTab = getMPDLinksWithMeta(uri, False) videoUrls.extend(retTab) else: videoUrls.append({'name':'direct link', 'url':uri}) return videoUrls
def getResolvedURL(self, url): printDBG("LocalMedia.getResolvedURL [%s]" % url) videoUrls = [] if url.startswith('/') and fileExists(url): url = 'file://'+url uri, params = DMHelper.getDownloaderParamFromUrl(url) printDBG(params) uri = urlparser.decorateUrl(uri, params) if uri.meta.get('iptv_proto', '') in ['http', 'https']: urlSupport = self.up.checkHostSupport( uri ) else: urlSupport = 0 if 1 == urlSupport: retTab = self.up.getVideoLinkExt( uri ) videoUrls.extend(retTab) elif 0 == urlSupport and self._uriIsValid(uri): if uri.split('?')[0].endswith('.m3u8'): retTab = getDirectM3U8Playlist(uri) videoUrls.extend(retTab) elif uri.split('?')[0].endswith('.f4m'): retTab = getF4MLinksWithMeta(uri) videoUrls.extend(retTab) else: videoUrls.append({'name':'direct link', 'url':uri}) return videoUrls
def getResolvedURL(self, url): printDBG("LocalMedia.getResolvedURL [%s]" % url) videoUrls = [] if url.startswith('/') and fileExists(url): url = 'file://' + url uri, params = DMHelper.getDownloaderParamFromUrl(url) printDBG(params) uri = urlparser.decorateUrl(uri, params) if uri.meta.get('iptv_proto', '') in ['http', 'https']: urlSupport = self.up.checkHostSupport(uri) else: urlSupport = 0 if 1 == urlSupport: retTab = self.up.getVideoLinkExt(uri) videoUrls.extend(retTab) elif 0 == urlSupport and self._uriIsValid(uri): if uri.split('?')[0].endswith('.m3u8'): retTab = getDirectM3U8Playlist(uri) videoUrls.extend(retTab) elif uri.split('?')[0].endswith('.f4m'): retTab = getF4MLinksWithMeta(uri) videoUrls.extend(retTab) else: videoUrls.append({'name': 'direct link', 'url': uri}) return videoUrls
def getLinksForVideo(self, cItem): url = cItem['url'] url2 = cItem['url2'] md = cItem['md'] if md == 'elo': self.susn('2', '11', 'm4_elo') videoUrls = [] turl = self.kvlva(url) if len(turl) == 0: turl = self.kvlva(url2) uri = urlparser.decorateParamsFromUrl(turl) protocol = uri.meta.get('iptv_proto', '') if protocol == 'm3u8': retTab = getDirectM3U8Playlist(uri, checkExt=False, checkContent=True) videoUrls.extend(retTab) elif protocol == 'f4m': retTab = getF4MLinksWithMeta(uri) videoUrls.extend(retTab) elif protocol == 'mpd': retTab = getMPDLinksWithMeta(uri, False) videoUrls.extend(retTab) else: videoUrls.append({'name': 'direct link', 'url': uri}) return videoUrls
def getLinksForVideo(self, cItem): printDBG("RteIE.getLinksForVideo [%s]" % cItem) linksTab = [] hlsLinksTab = [] hdsLinksTab = [] hdsUrl = '' id = self._getIdFromUrl(cItem['url']) if id == '': return [] if '/show/' in cItem['url']: try: sts, data = self.cm.getPage( 'http://feeds.rasset.ie/rteavgen/player/playlist/?type=iptv&format=json&showId=' + id, self.defaultParams) data = byteify(json.loads(data))['shows'][0]["media:group"][0] hdsUrl = data['rte:server'] + data['url'] except Exception: printExc() elif '/live/' in cItem['url']: idsMap = {'8': 'rte1', '10': 'rte2', '6': 'rtejr', '7': 'newsnow'} hdsUrl = self.getFullUrl('/manifests/%s.f4m' % idsMap.get(id, '')) if self.cm.isValidUrl(hdsUrl): try: tmpLinksTab = getF4MLinksWithMeta(hdsUrl)[::-1] for item in tmpLinksTab: item['name'] = '[f4m/hds] %sk' % item.get( 'bitrate', item['name']) hdsLinksTab.append(item) if ('/hds-vod/' in item['url'] or '/hds-live/' in item['url']) and item['url'].endswith('.f4m'): hlsUrl = item['url'].replace( '/hds-vod/', '/hls-vod/').replace( '/hds-live/', '/hls-live/')[:-3] + 'm3u8' hlsUrl = strwithmeta(hlsUrl, { 'Referer': cItem['url'], 'User-Agent': self.USER_AGENT }) tmp = getDirectM3U8Playlist(hlsUrl, checkContent=True) if 1 == len(tmp): tmp[0]['name'] = '[m3u8/hls] %sk' % item.get( 'bitrate', item['name']) hlsLinksTab.append(tmp[0]) except Exception: printExc() linksTab.extend(hlsLinksTab) #if 0 == len(linksTab): linksTab.extend(hdsLinksTab) return linksTab
def getDirectLinks(self, url): printDBG('MoonwalkParser.getDirectLinks') linksTab = [] try: self._setBaseUrl(url) params = copy.deepcopy(self.defaultParams) params['header']['Referer'] = url sts, data = self.cm.getPage( url, params) if not sts: return [] sec_header, post_data = self._getSecurityData(data) params['header'].update(sec_header) params['load_cookie'] = True sts, data = self.cm.getPage( '%s/sessions/new_session' % self.baseUrl, params, post_data) printDBG("=======================================================") printDBG(data) printDBG("=======================================================") if not sts: return [] try: data = byteify( json.loads(data) ) data = data['mans'] except Exception: printExc() if 'm3u8' == config.plugins.iptvplayer.moonwalk_format.value: tmpTab = getDirectM3U8Playlist(data["manifest_m3u8"]) def __getLinkQuality( itemLink ): return itemLink['heigth'] if config.plugins.iptvplayer.moonwalk_use_df.value: maxRes = config.plugins.iptvplayer.moonwalk_df_format.value tmpTab = CSelOneLink(tmpTab, __getLinkQuality, maxRes).getSortedLinks() tmpTab = [tmpTab[0]] for item in tmpTab: linksTab.append({'name':'[hls/m3u8] %sp' % __getLinkQuality(item), 'url':item['url']}) else: tmpTab = getF4MLinksWithMeta(data["manifest_f4m"]) def __getLinkQuality( itemLink ): printDBG(itemLink) bitrate = int(self.cm.ph.getDataBeetwenMarkers(itemLink['name'], 'bitrate[', ']', False)[1]) if bitrate < 400: return 360 elif bitrate < 700: return 480 elif bitrate < 1200: return 720 return 1080 if config.plugins.iptvplayer.moonwalk_use_df.value: maxRes = config.plugins.iptvplayer.moonwalk_df_format.value tmpTab = CSelOneLink(tmpTab, __getLinkQuality, maxRes).getSortedLinks() tmpTab = [tmpTab[0]] for item in tmpTab: linksTab.append({'name':'[f4m/hds] %sp' % __getLinkQuality(item), 'url':item['url']}) except Exception: printExc() return linksTab
def getVideoLinks(self, baseUrl): printDBG("Movie4kTO.getVideoLinks [%s]" % baseUrl) urlTab = [] iptvProto = baseUrl.meta['iptv_proto'] if iptvProto == 'm3u8': urlTab = getDirectM3U8Playlist(baseUrl) elif iptvProto == 'f4m': urlTab = getF4MLinksWithMeta(baseUrl) else: urlTab = [{'name': 'direct', 'url': baseUrl}] return urlTab
def getVideoLinks(self, baseUrl): printDBG("Movie4kTO.getVideoLinks [%s]" % baseUrl) urlTab = [] iptvProto = baseUrl.meta['iptv_proto'] if iptvProto == 'm3u8': urlTab = getDirectM3U8Playlist(baseUrl) elif iptvProto == 'f4m': urlTab = getF4MLinksWithMeta(baseUrl) else: urlTab = [{'name':'direct', 'url':baseUrl}] return urlTab
def getDirectLinks(self, url): printDBG('MoonwalkParser.getDirectLinks') linksTab = [] try: self._setBaseUrl(url) params = copy.deepcopy(self.defaultParams) params['header']['Referer'] = url sts, data = self.cm.getPage( url, params) if not sts: return [] sec_header, post_data = self._getSecurityData(data) params['header'].update(sec_header) sts, data = self.cm.getPage( '%s/sessions/create_session' % self.baseUrl, params, post_data) if not sts: return [] data = byteify( json.loads(data) ) if 'm3u8' == config.plugins.iptvplayer.moonwalk_format.value: tmpTab = getDirectM3U8Playlist(data["manifest_m3u8"]) def __getLinkQuality( itemLink ): return itemLink['heigth'] if config.plugins.iptvplayer.moonwalk_use_df.value: maxRes = config.plugins.iptvplayer.moonwalk_df_format.value tmpTab = CSelOneLink(tmpTab, __getLinkQuality, maxRes).getSortedLinks() tmpTab = [tmpTab[0]] for item in tmpTab: linksTab.append({'name':'[hls/m3u8] %sp' % __getLinkQuality(item), 'url':item['url']}) else: tmpTab = getF4MLinksWithMeta(data["manifest_f4m"]) def __getLinkQuality( itemLink ): printDBG(itemLink) bitrate = int(self.cm.ph.getDataBeetwenMarkers(itemLink['name'], 'bitrate[', ']', False)[1]) if bitrate < 400: return 360 elif bitrate < 700: return 480 elif bitrate < 1200: return 720 return 1080 if config.plugins.iptvplayer.moonwalk_use_df.value: maxRes = config.plugins.iptvplayer.moonwalk_df_format.value tmpTab = CSelOneLink(tmpTab, __getLinkQuality, maxRes).getSortedLinks() tmpTab = [tmpTab[0]] for item in tmpTab: linksTab.append({'name':'[f4m/hds] %sp' % __getLinkQuality(item), 'url':item['url']}) except: printExc() return linksTab
def getLinksForVideo(self, cItem): printDBG("Urllist.getLinksForVideo url[%s]" % cItem['url']) videoUrls = [] uri = cItem['url'] urlSupport = self.up.checkHostSupport(uri) if 1 == urlSupport: retTab = self.up.getVideoLinkExt(uri) videoUrls.extend(retTab) elif 0 == urlSupport and self._uriIsValid(uri): if uri.split('?')[0].endswith('.m3u8'): retTab = getDirectM3U8Playlist(uri) videoUrls.extend(retTab) elif uri.split('?')[0].endswith('.f4m'): retTab = getF4MLinksWithMeta(uri) videoUrls.extend(retTab) else: videoUrls.append({'name': 'direct link', 'url': uri}) return videoUrls
def getLinksForVideo(self, cItem): printDBG("Urllist.getLinksForVideo url[%s]" % cItem['url']) videoUrls = [] uri, params = DMHelper.getDownloaderParamFromUrl(cItem['url']) printDBG(params) uri = urlparser.decorateUrl(uri, params) urlSupport = self.up.checkHostSupport( uri ) if 1 == urlSupport: retTab = self.up.getVideoLinkExt( uri ) videoUrls.extend(retTab) elif 0 == urlSupport and self._uriIsValid(uri): if uri.split('?')[0].endswith('.m3u8'): retTab = getDirectM3U8Playlist(uri) videoUrls.extend(retTab) elif uri.split('?')[0].endswith('.f4m'): retTab = getF4MLinksWithMeta(uri) videoUrls.extend(retTab) else: videoUrls.append({'name':'direct link', 'url':uri}) return videoUrls
def getLinksForVideo(self, Index = 0, selItem = None): listLen = len(self.host.currList) if listLen < Index and listLen > 0: printDBG( "ERROR getLinksForVideo - current list is to short len: %d, Index: %d" % (listLen, Index) ) return RetHost(RetHost.ERROR, value = []) if self.host.currList[Index]["type"] != 'video': printDBG( "ERROR getLinksForVideo - current item has wrong type" ) return RetHost(RetHost.ERROR, value = []) retlist = [] url = self.host.currList[Index].get("url", '') name = self.host.currList[Index].get("name", '') printDBG(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [%s] [%s]" % (name, url)) urlList = None if -1 != url.find('teledunet'): new_url = TeledunetParser().get_rtmp_params(url) if 0 < len(url): retlist.append(CUrlItem("Własny link", new_url)) elif url.startswith('http://goldvod.tv/'): url = self.host.getGoldvodLink(url) elif 'web-live.tv' in url: url = self.host.getSatLiveLink(url) elif 'vidtv.pl' in url: url = self.host.getVidTvLink(url) elif 'looknij.tv' in url: url = self.host.getLooknijTvLink(url) elif 'tvisport.cba.pl' in url: urlList = self.host.getTvSportCdaLink(url) elif 'nettv.pw' in url: urlList = self.host.getNettvpwLink(url) elif 'weeb.tv' in name: url = self.host.getWeebTvLink(url) elif name == "team-cast.pl": urlList = self.host.getTeamCastLink(url) elif "filmon_channel" == name: urlList = self.host.getFilmOnLink(channelID=url) elif "videostar_channels" == name: urlList = self.host.getVideostarLink(channelID=url) #if 1 < len(tmpList): # for item in tmpList: # retlist.append(CUrlItem(item['name'], item['url'])) #elif 1 == len(tmpList): # url = tmpList[0]['url'] elif name == "webcamera.pl": urlList = self.host.getWebCameraLink(url) elif name == "prognoza.pogody.tv": urlList = self.host.prognozaPogodyLink(url) if isinstance(urlList, list): for item in urlList: retlist.append(CUrlItem(item['name'], item['url'])) elif isinstance(url, basestring): if url.endswith('.m3u'): tmpList = self.host.getDirectVideoHasBahCa(name, url) for item in tmpList: retlist.append(CUrlItem(item['name'], item['url'])) else: iptv_proto = urlparser.decorateUrl(url).meta.get('iptv_proto', '') if 'm3u8' == iptv_proto: tmpList = getDirectM3U8Playlist(url, checkExt=False) for item in tmpList: retlist.append(CUrlItem(item['name'], item['url'])) elif 'f4m' == iptv_proto: tmpList = getF4MLinksWithMeta(url, checkExt=False) for item in tmpList: retlist.append(CUrlItem(item['name'], item['url'])) else: if '://' in url: retlist.append(CUrlItem("Link", url)) return RetHost(RetHost.OK, value = retlist)
def getDirectLinks(self, url): printDBG('MoonwalkParser.getDirectLinks') linksTab = [] try: self._setBaseUrl(url) params = copy.deepcopy(self.defaultParams) params['header']['Referer'] = url sts, data = self.cm.getPage(url, params) if not sts: return [] url, sec_header, post_data = self._getSecurityData(data, params) params['header'].update(sec_header) params['header']['X-Requested-With'] = 'XMLHttpRequest' params['load_cookie'] = True if not self.cm.isValidUrl(url): url = self.baseUrl + url sts, data = self.cm.getPage(url, params, post_data) printDBG("=======================================================") printDBG(data) printDBG("=======================================================") if not sts: return [] try: data = json_loads(data) data = data['mans'] except Exception: printExc() try: mp4Url = strwithmeta(data["mp4"], { 'User-Agent': 'Mozilla/5.0', 'Referer': url }) sts, tmp = self.cm.getPage(mp4Url, { 'User-Agent': 'Mozilla/5.0', 'Referer': url }) tmpTab = [] tmp = json_loads(tmp) printDBG(tmp) for key in tmp: mp4Url = tmp[key] if mp4Url.split('?')[0].endswith('.mp4'): tmpTab.append({'url': mp4Url, 'heigth': key}) def __getLinkQuality(itemLink): return int(itemLink['heigth']) maxRes = config.plugins.iptvplayer.moonwalk_df_format.value tmpTab = CSelOneLink(tmpTab, __getLinkQuality, maxRes).getSortedLinks() if config.plugins.iptvplayer.moonwalk_use_df.value: tmpTab = [tmpTab[0]] for item in tmpTab: linksTab.append({ 'name': '[mp4] %sp' % __getLinkQuality(item), 'url': item['url'] }) except Exception: printExc() if 'm3u8' == config.plugins.iptvplayer.moonwalk_format.value: hlsUrl = strwithmeta( data['m3u8'], { 'User-Agent': 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10', 'Referer': url }) tmpTab = getDirectM3U8Playlist(hlsUrl) def __getLinkQuality(itemLink): return int(itemLink['heigth']) maxRes = config.plugins.iptvplayer.moonwalk_df_format.value tmpTab = CSelOneLink(tmpTab, __getLinkQuality, maxRes).getSortedLinks() if config.plugins.iptvplayer.moonwalk_use_df.value: tmpTab = [tmpTab[0]] for item in tmpTab: linksTab.append({ 'name': '[hls/m3u8] %sp' % __getLinkQuality(item), 'url': item['url'] }) else: tmpTab = getF4MLinksWithMeta(data["manifest_f4m"]) def __getLinkQuality(itemLink): printDBG(itemLink) bitrate = int( self.cm.ph.getDataBeetwenMarkers( itemLink['name'], 'bitrate[', ']', False)[1]) if bitrate < 400: return 360 elif bitrate < 700: return 480 elif bitrate < 1200: return 720 return 1080 maxRes = config.plugins.iptvplayer.moonwalk_df_format.value tmpTab = CSelOneLink(tmpTab, __getLinkQuality, maxRes).getSortedLinks() if config.plugins.iptvplayer.moonwalk_use_df.value: tmpTab = [tmpTab[0]] for item in tmpTab: linksTab.append({ 'name': '[f4m/hds] %sp' % __getLinkQuality(item), 'url': item['url'] }) except Exception: printExc() return linksTab
def getLinksForVideo(self, Index = 0, selItem = None): listLen = len(self.host.currList) if listLen <= Index or Index < 0: printDBG( "ERROR getLinksForVideo - current list is to short len: %d, Index: %d" % (listLen, Index) ) return RetHost(RetHost.ERROR, value = []) if self.host.currList[Index]["type"] not in ['video', 'audio', 'picture']: printDBG( "ERROR getLinksForVideo - current item has wrong type" ) return RetHost(RetHost.ERROR, value = []) retlist = [] cItem = self.host.currList[Index] url = self.host.currList[Index].get("url", '') name = self.host.currList[Index].get("name", '') printDBG(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [%s] [%s]" % (name, url)) urlList = None if -1 != url.find('teledunet'): new_url = TeledunetParser().get_rtmp_params(url) if 0 < len(url): retlist.append(CUrlItem("Własny link", new_url)) elif url.startswith('http://goldvod.tv/'): urlList = self.host.getGoldVodTvLink(cItem) elif name == 'livemass.net': urlList = self.host.getLivemassNetLink(cItem) elif name == "sport365.live": urlList = self.host.getSport365LiveLink(cItem) elif name == 'wagasworld.com': urlList = self.host.getWagasWorldLink(cItem) elif name == 'others': urlList = self.host.getOthersLinks(cItem) elif 'weeb.tv' in name: url = self.host.getWeebTvLink(url) elif name == "filmon_channel": urlList = self.host.getFilmOnLink(channelID=url) elif name == "videostar.pl": urlList = self.host.getVideostarLink(cItem) elif name == 'bilasport.com': urlList = self.host.getBilaSportPwLink(cItem) elif name == 'canlitvlive.io': urlList = self.host.getCanlitvliveIoLink(cItem) elif name == 'djing.com': urlList = self.host.getDjingComLink(cItem) elif name == 'ustvnow': urlList = self.host.getUstvnowLink(cItem) elif name == 'wizja.tv': urlList = self.host.getWizjaTvLink(cItem) elif name == 'meteo.pl': urlList = self.host.getMeteoPLLink(cItem) elif name == 'edem.tv': urlList = self.host.getEdemTvLink(cItem) elif name == 'skylinewebcams.com': urlList = self.host.getWkylinewebcamsComLink(cItem) elif name == "webcamera.pl": urlList = self.host.getWebCameraLink(cItem) elif name == "prognoza.pogody.tv": urlList = self.host.prognozaPogodyLink(url) elif name == "mlbstream.tv": urlList = self.host.getMLBStreamTVLink(cItem) elif name == "beinmatch.com": urlList = self.host.getBeinmatchLink(cItem) elif name == "wiz1.net": urlList = self.host.getWiz1NetLink(cItem) if isinstance(urlList, list): for item in urlList: retlist.append(CUrlItem(item['name'], item['url'], item.get('need_resolve', 0))) elif isinstance(url, basestring): if url.endswith('.m3u'): tmpList = self.host.getDirectVideoHasBahCa(name, url) for item in tmpList: retlist.append(CUrlItem(item['name'], item['url'])) else: url = urlparser.decorateUrl(url) iptv_proto = url.meta.get('iptv_proto', '') if 'm3u8' == iptv_proto: if '84.114.88.26' == url.meta.get('X-Forwarded-For', ''): url.meta['iptv_m3u8_custom_base_link'] = '' + url url.meta['iptv_proxy_gateway'] = 'http://webproxy.at/surf/printer.php?u={0}&b=192&f=norefer' url.meta['Referer'] = url.meta['iptv_proxy_gateway'].format(urllib.quote_plus(url)) meta = url.meta tmpList = getDirectM3U8Playlist(url, checkExt=False) if 1 == len(tmpList): url = urlparser.decorateUrl(tmpList[0]['url'], meta) tmpList = getDirectM3U8Playlist(url, checkExt=False) for item in tmpList: retlist.append(CUrlItem(item['name'], item['url'])) elif 'f4m' == iptv_proto: tmpList = getF4MLinksWithMeta(url, checkExt=False) for item in tmpList: retlist.append(CUrlItem(item['name'], item['url'])) else: if '://' in url: ua = strwithmeta(url).meta.get('User-Agent', '') if 'balkanstream.com' in url: if '' == ua: url.meta['User-Agent'] = 'Mozilla/5.0' retlist.append(CUrlItem("Link", url)) return RetHost(RetHost.OK, value = retlist)
def getLinksForVideo(self, cItem): printDBG("C3player.getLinksForVideo [%s]" % cItem) linksTab = [] hlsLinksTab = [] hdsLinksTab = [] sts, data = self.cm.getPage(cItem['url']) if not sts: return [] hlsUrl = self.cm.ph.getSearchGroups( data, '''['"]?file['"]?\s*?:\s*?['"](https?://[^'^"]+?\.m3u8(?:\?[^'^"]+?)?)['"]''' )[0] if hlsUrl != '': hlsLinksTab = getDirectM3U8Playlist(hlsUrl, checkExt=True, checkContent=True, sortWithMaxBitrate=999999999) else: embedToken = self.cm.ph.getSearchGroups( data, '''['"]?embedToken['"]?\s*?:\s*?['"](https?://[^'^"]+?)['"]''' )[0] if embedToken == '': errorMsg = self.cleanHtmlStr( self.cm.ph.getDataBeetwenNodes(data, ('<div', '>', 'geo_block'), ('</div', '>'))[1]) SetIPTVPlayerLastHostError(errorMsg) if embedToken == '' and config.plugins.iptvplayer.tv3player_use_web_proxy.value: # http://getproxi.es/IE-proxies/ proxy = 'http://ruproxy.herokuapp.com/index.php?q={0}&hl=e1'.format( urllib.quote(cItem['url'])) params = {'header': dict(self.HEADER)} params['header']['Referer'] = proxy #params['header']['cookie_items'] = {'flags':'2e5'} sts, data = self.cm.getPage(proxy, params) if not sts: return [] printDBG("+++++++++++++++++++++++++++++++++++++++") printDBG(data) printDBG("+++++++++++++++++++++++++++++++++++++++") embedToken = self.cm.ph.getSearchGroups( data, '''['"]?embedToken['"]?\s*?:\s*?['"](https?://[^'^"]+?)['"]''' )[0] if embedToken != '': parsedUri = urlparse(embedToken) auth = parsedUri.path.split('/embed_token/', 1)[-1].split('/') if len(auth) > 1: url = 'https://player.ooyala.com/sas/player_api/v2/authorization/embed_code/%s/%s?embedToken=%s&device=html5&domain=www.tv3.ie&auth_token=' % ( auth[0], auth[1], urllib.quote(embedToken)) sts, data = self.cm.getPage(url) if not sts: return [] try: printDBG(data) data = byteify(json.loads(data)) for item in data['authorization_data'][ auth[1]]['streams']: if item['url']['format'] == 'encoded': url = base64.b64decode(item['url']['data']) else: url = item['url']['data'] if item['delivery_type'] == 'hls': hlsLinksTab = getDirectM3U8Playlist( url, checkExt=True, checkContent=True, sortWithMaxBitrate=999999999) elif item['delivery_type'] == 'hds': hdsLinksTab = getF4MLinksWithMeta( url, checkExt=False, sortWithMaxBitrate=999999999) except Exception: printExc() for idx in range(len(hlsLinksTab)): hlsLinksTab[idx]['url'] = strwithmeta(hlsLinksTab[idx]['url'], {'iptv_proto': 'm3u8'}) for idx in range(len(hdsLinksTab)): hdsLinksTab[idx]['url'] = strwithmeta(hdsLinksTab[idx]['url'], {'iptv_proto': 'f4m'}) linksTab.extend(hlsLinksTab) linksTab.extend(hdsLinksTab) return linksTab
def getLinksForVideo(self, Index=0, selItem=None): listLen = len(self.host.currList) if listLen < Index and listLen > 0: printDBG( "ERROR getLinksForVideo - current list is to short len: %d, Index: %d" % (listLen, Index)) return RetHost(RetHost.ERROR, value=[]) if self.host.currList[Index]["type"] != 'video': printDBG("ERROR getLinksForVideo - current item has wrong type") return RetHost(RetHost.ERROR, value=[]) retlist = [] url = self.host.currList[Index].get("url", '') name = self.host.currList[Index].get("name", '') printDBG(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [%s] [%s]" % (name, url)) urlList = None if -1 != url.find('teledunet'): new_url = TeledunetParser().get_rtmp_params(url) if 0 < len(url): retlist.append(CUrlItem("Własny link", new_url)) elif url.startswith('http://goldvod.tv/'): url = self.host.getGoldvodLink(url) elif 'web-live.tv' in url: url = self.host.getSatLiveLink(url) elif 'vidtv.pl' in url: url = self.host.getVidTvLink(url) elif 'looknij.tv' in url: url = self.host.getLooknijTvLink(url) elif 'tvisport.cba.pl' in url: urlList = self.host.getTvSportCdaLink(url) elif 'nettv.pw' in url: urlList = self.host.getNettvpwLink(url) elif 'weeb.tv' in name: url = self.host.getWeebTvLink(url) elif name == "team-cast.pl": urlList = self.host.getTeamCastLink(url) elif "filmon_channel" == name: urlList = self.host.getFilmOnLink(channelID=url) elif "videostar_channels" == name: urlList = self.host.getVideostarLink(channelID=url) #if 1 < len(tmpList): # for item in tmpList: # retlist.append(CUrlItem(item['name'], item['url'])) #elif 1 == len(tmpList): # url = tmpList[0]['url'] elif name == "webcamera.pl": urlList = self.host.getWebCameraLink(url) elif name == "prognoza.pogody.tv": urlList = self.host.prognozaPogodyLink(url) if isinstance(urlList, list): for item in urlList: retlist.append(CUrlItem(item['name'], item['url'])) elif isinstance(url, basestring): if url.endswith('.m3u'): tmpList = self.host.getDirectVideoHasBahCa(name, url) for item in tmpList: retlist.append(CUrlItem(item['name'], item['url'])) else: iptv_proto = urlparser.decorateUrl(url).meta.get( 'iptv_proto', '') if 'm3u8' == iptv_proto: tmpList = getDirectM3U8Playlist(url, checkExt=False) for item in tmpList: retlist.append(CUrlItem(item['name'], item['url'])) elif 'f4m' == iptv_proto: tmpList = getF4MLinksWithMeta(url, checkExt=False) for item in tmpList: retlist.append(CUrlItem(item['name'], item['url'])) else: if '://' in url: retlist.append(CUrlItem("Link", url)) return RetHost(RetHost.OK, value=retlist)