def getLinksForVideo(self, cItem): printDBG("TVJWORG.getLinksForVideo [%s]" % cItem) urlTab = [] try: tmpTab = cItem.get('files', []) for item in tmpTab: try: linkVideo = item['progressiveDownloadURL'] linkVideo = urlparser.decorateUrl(linkVideo, {'Referer': 'http://tv.jw.org/'}) urlTab.append({'name':item['label'], 'url': linkVideo, 'need_resolve':0}) except: printExc() if 1 < len(urlTab): error = False max_bitrate = int(config.plugins.iptvplayer.tvjworg_default_format.value) def __getLinkQuality( itemLink ): try: return int(itemLink['name'][0:-1]) except: error = True return 0 oneLink = CSelOneLink(urlTab, __getLinkQuality, max_bitrate) if not error and config.plugins.iptvplayer.tvjworg_use_df.value: urlTab = oneLink.getOneLink() else: urlTab = oneLink.getSortedLinks() except: printExc() return urlTab
def getVideoLinks(self,url): printDBG('WRZUTA.getVideoLinks') nurl = url.split("/") url = 'http://'+ nurl[2] + '/u/' + nurl[4] retList = [] sts, data = self.cm.getPage(url) if not sts: return retList match = re.compile('var _src = {(.+?)};', re.DOTALL).findall(data) if len(match) > 0: match2 = re.compile("\t'(.+?)': (.+?),?\n").findall(match[0]) for num, item in match2[::-1]: if item != '""': parts = re.compile('"(.*?)"').findall(item) linkVideo = ''.join(parts) if linkVideo.find("http://c.wrzuta.pl/wht") == -1: retList.append({'name': num, 'url': linkVideo}) maxRes = int(config.plugins.iptvplayer.wrzutaDefaultformat.value) * 1.1 def __getLinkQuality( itemLink ): return int(itemLink['name']) obj = CSelOneLink(retList, __getLinkQuality, maxRes) if config.plugins.iptvplayer.wrzutaUseDF.value: retList = obj.getOneLink() else: retList = obj.getSortedLinks() return retList
def getLinksForVideo(self, cItem): printDBG("TVJWORG.getLinksForVideo [%s]" % cItem) urlTab = [] try: tmpTab = cItem.get('files', []) for item in tmpTab: try: linkVideo = item['progressiveDownloadURL'] linkVideo = urlparser.decorateUrl(linkVideo, {'Referer': 'http://tv.jw.org/'}) urlTab.append({'name':item['label'], 'url': linkVideo, 'need_resolve':0}) except Exception: printExc() if 1 < len(urlTab): error = False max_bitrate = int(config.plugins.iptvplayer.tvjworg_default_format.value) def __getLinkQuality( itemLink ): try: return int(itemLink['name'][0:-1]) except Exception: error = True return 0 oneLink = CSelOneLink(urlTab, __getLinkQuality, max_bitrate) if not error and config.plugins.iptvplayer.tvjworg_use_df.value: urlTab = oneLink.getOneLink() else: urlTab = oneLink.getSortedLinks() except Exception: printExc() return urlTab
def getVideoLinks(self, url): printDBG('WRZUTA.getVideoLinks') nurl = url.split("/") url = 'http://' + nurl[2] + '/u/' + nurl[4] retList = [] sts, data = self.cm.getPage(url) if not sts: return retList match = re.compile('var _src = {(.+?)};', re.DOTALL).findall(data) if len(match) > 0: match2 = re.compile("\t'(.+?)': (.+?),?\n").findall(match[0]) for num, item in match2[::-1]: if item != '""': parts = re.compile('"(.*?)"').findall(item) linkVideo = ''.join(parts) if linkVideo.find("http://c.wrzuta.pl/wht") == -1: retList.append({'name': num, 'url': linkVideo}) maxRes = int(config.plugins.iptvplayer.wrzutaDefaultformat.value) * 1.1 def __getLinkQuality(itemLink): return int(itemLink['name']) obj = CSelOneLink(retList, __getLinkQuality, maxRes) if config.plugins.iptvplayer.wrzutaUseDF.value: retList = obj.getOneLink() else: retList = obj.getSortedLinks() return retList
def _getVideoLink(data, FORMATS): videoTab = [] for item in data['formats']: if item['mimeType'] in FORMATS.keys(): formatType = FORMATS[item['mimeType']].encode('utf-8') format = self.REAL_FORMATS.get(formatType, '') name = self.getFormatFromBitrate( str(item['totalBitrate']) ) + '\t ' + formatType url = item['url'].encode('utf-8') if 'm3u8' == formatType: videoTab.extend( getDirectM3U8Playlist(url) ) else: meta = {'iptv_format':format} if config.plugins.iptvplayer.tvpVodProxyEnable.value: meta['http_proxy'] = config.plugins.iptvplayer.proxyurl.value videoTab.append( {'name' : name, 'bitrate': str(item['totalBitrate']), 'url' : self.up.decorateUrl(url, meta) }) if 1 < len(videoTab): max_bitrate = int(config.plugins.iptvplayer.tvpVodDefaultformat.value) def __getLinkQuality( itemLink ): return int(itemLink['bitrate']) oneLink = CSelOneLink(videoTab, __getLinkQuality, max_bitrate) if config.plugins.iptvplayer.tvpVodUseDF.value: videoTab = oneLink.getOneLink() else: videoTab = oneLink.getSortedLinks() return videoTab
def getLinksForVideo(self, cItem): asset_id = str(cItem.get('object_id', '')) url = self._getFullUrl(cItem.get('url', '')) if 'tvpstream.tvp.pl' in url: sts, data = self.cm.getPage(url) if not sts: return [] hlsUrl = self.cm.ph.getSearchGroups(data, '''['"](http[^'^"]*?\.m3u8[^'^"]*?)['"]''')[0] if '' != hlsUrl: videoTab = getDirectM3U8Playlist(hlsUrl, checkExt=False, variantCheck=False) if 1 < len(videoTab): max_bitrate = int(config.plugins.iptvplayer.tvpVodDefaultformat.value) def __getLinkQuality( itemLink ): if 'width' in itemLink and 'height' in itemLink: bitrate = self.getBitrateFromFormat('%sx%s' % (itemLink['width'], itemLink['height'])) if bitrate != 0: return bitrate return int(itemLink['bitrate']) oneLink = CSelOneLink(videoTab, __getLinkQuality, max_bitrate) if config.plugins.iptvplayer.tvpVodUseDF.value: videoTab = oneLink.getOneLink() else: videoTab = oneLink.getSortedLinks() if 1 <= len(videoTab): return videoTab if '' == asset_id: asset_id = self.getObjectID(url) return self.getVideoLink(asset_id)
def _getVideoLink(data, FORMATS): videoTab = [] for item in data['formats']: if item['mimeType'] in FORMATS.keys(): formatType = FORMATS[item['mimeType']].encode('utf-8') name = self.getFormatFromBitrate( str(item['totalBitrate'])) + '\t ' + formatType url = item['url'].encode('utf-8') if 'm3u8' == formatType: videoTab.extend(getDirectM3U8Playlist(url)) else: videoTab.append({ 'name': name, 'bitrate': str(item['totalBitrate']), 'url': url }) if 1 < len(videoTab): max_bitrate = int( config.plugins.iptvplayer.tvpVodDefaultformat.value) def __getLinkQuality(itemLink): return int(itemLink['bitrate']) oneLink = CSelOneLink(videoTab, __getLinkQuality, max_bitrate) if config.plugins.iptvplayer.tvpVodUseDF.value: videoTab = oneLink.getOneLink() else: videoTab = oneLink.getSortedLinks() return videoTab
def _sortVideoLinks(videoTab): if 1 < len(videoTab): max_bitrate = int(config.plugins.iptvplayer.tvpVodDefaultformat.value) def __getLinkQuality( itemLink ): if 'width' in itemLink and 'height' in itemLink: bitrate = self.getBitrateFromFormat('%sx%s' % (itemLink['width'], itemLink['height'])) if bitrate != 0: return bitrate try: return int(itemLink['bitrate']) except Exception: return 0 oneLink = CSelOneLink(videoTab, __getLinkQuality, max_bitrate) videoTab = oneLink.getSortedLinks() return videoTab
def getLinksForVideo(self, cItem): printDBG("TvGryPL.getLinksForVideo [%s]" % cItem) id = self.cm.ph.getSearchGroups(cItem['url'] + '_', 'ID=([0-9]+?)[^0-9]', 1)[0] urlTab = [] sts, data = self.cm.getPage( 'http://tvgry.pl/video/source.v2.asp?SC=TV&ID=%s&QL=SD' % id) if not sts: return urlTab data = re.compile('file="([^"]+?)"[^>]*?label="([^"]+?)"').findall( data) for item in data: q = "" if '_C/500_' in item[0] or "Mobile" in item[1]: q = 'MOB' elif '_C/750_' in item[0] or "SD" in item[1]: q = 'SD' elif '_C/1280_' in item[0] or "720p" in item[1]: q = 'HD' #elif '_C/1920_' in item[0] or "1080p" in item[1]: # q = 'FHD' if '' != q: urlTab.append({ 'name': item[1], 'url': urlparser.decorateUrl(item[0], { 'Referer': 'http://p.jwpcdn.com/6/12/jwplayer.flash.swf' }), 'q': q }) # for item in ['MOB', 'SD', 'HD']: # url = 'http://tvgry.pl/video/source.asp?SC=TV&ID=%s&QL=%s' % (id, item[:2]) # sts,data = self.getPage(url) # if not sts: continue # url = self.cm.ph.getSearchGroups(data, 'file>(http[^<]+?)<', 1)[0] # if '' != url: urlTab.append({'name':item, 'url':url, 'q':item}) if 1 < len(urlTab): map = {'MOB': 0, 'SD': 1, 'HD': 2, 'FHD': 3} oneLink = CSelOneLink( urlTab, lambda x: map[x['q']], map[config.plugins.iptvplayer.tvgrypl_default_quality.value]) if config.plugins.iptvplayer.tvgrypl_use_dq.value: urlTab = oneLink.getOneLink() else: urlTab = oneLink.getSortedLinks() return urlTab
def getLinksForVideo(self, cItem): printDBG("WRealu24TV.getLinksForVideo [%s]" % cItem) retTab = [] hlsTab = [] sts, data = self.getPage(cItem['url']) if not sts: return data = re.sub("<!--[\s\S]*?-->", "", data) cookieHeader = self.cm.getCookieHeader(self.COOKIE_FILE) data = self.cm.ph.getDataBeetwenMarkers(data, '<video', '</video>')[1] if 'document.write(' in data: jscode = ['var document = {};document.write=function(txt){print(txt);}'] tmp = self.cm.ph.getAllItemsBeetwenNodes(data, ('<script', '>'), ('</script', '>'), False) for item in tmp: jscode.append(item) jscode = '\n'.join(jscode) ret = js_execute( jscode ) if ret['sts'] and 0 == ret['code']: data = ret['data'].strip() data = self.cm.ph.getAllItemsBeetwenMarkers(data, '<source', '>') printDBG(data) for item in data: url = self.getFullUrl(self.cm.ph.getSearchGroups(item, '''src=['"]([^'^"]+?)['"]''')[0]) if not self.cm.isValidUrl(url): continue type = self.cm.ph.getSearchGroups(item, '''type=['"]([^'^"]+?)['"]''')[0].lower() label = self.cm.ph.getSearchGroups(item, '''label=['"]([^'^"]+?)['"]''')[0] res = self.cm.ph.getSearchGroups(item, '''res=['"]([^'^"]+?)['"]''')[0] if label == '': label = res if 'mp4' in type: url = self.up.decorateUrl(url, {'Cookie':cookieHeader, 'User-Agent':self.USER_AGENT, 'Referer':cItem['url']}) retTab.append({'name':label, 'url':url, 'res':res, 'need_resolve':0}) elif 'mpegurl' in type: url = self.up.decorateUrl(url, {'iptv_proto':'m3u8', 'Origin':self.up.getDomain(cItem['url'], False), 'Cookie':cookieHeader, 'User-Agent':self.USER_AGENT, 'Referer':cItem['url']}) hlsTab.extend(getDirectM3U8Playlist(url, checkContent=True, sortWithMaxBitrate=999999999)) else: printDBG("Unknown source: [%s]" % item) if 1 < len(retTab): def __getLinkQuality( itemLink ): try: return int(itemLink['res']) except Exception: return 0 oneLink = CSelOneLink(retTab, __getLinkQuality, 999999999) retTab = oneLink.getSortedLinks() retTab.extend(hlsTab) return retTab
def getLinksForVideo(self, cItem): printDBG("TvGryPL.getLinksForVideo [%s]" % cItem) id = self.cm.ph.getSearchGroups(cItem["url"] + "_", "ID=([0-9]+?)[^0-9]", 1)[0] urlTab = [] sts, data = self.cm.getPage("http://tvgry.pl/video/source.v2.asp?SC=TV&ID=%s&QL=SD" % id) if not sts: return urlTab data = re.compile('file="([^"]+?)"[^>]*?label="([^"]+?)"').findall(data) for item in data: q = "" if "_C/500_" in item[0] or "Mobile" in item[1]: q = "MOB" elif "_C/750_" in item[0] or "SD" in item[1]: q = "SD" elif "_C/1280_" in item[0] or "720p" in item[1]: q = "HD" # elif '_C/1920_' in item[0] or "1080p" in item[1]: # q = 'FHD' if "" != q: urlTab.append( { "name": item[1], "url": urlparser.decorateUrl( item[0], {"Referer": "http://p.jwpcdn.com/6/12/jwplayer.flash.swf"} ), "q": q, } ) # for item in ['MOB', 'SD', 'HD']: # url = 'http://tvgry.pl/video/source.asp?SC=TV&ID=%s&QL=%s' % (id, item[:2]) # sts,data = self.getPage(url) # if not sts: continue # url = self.cm.ph.getSearchGroups(data, 'file>(http[^<]+?)<', 1)[0] # if '' != url: urlTab.append({'name':item, 'url':url, 'q':item}) if 1 < len(urlTab): map = {"MOB": 0, "SD": 1, "HD": 2, "FHD": 3} oneLink = CSelOneLink( urlTab, lambda x: map[x["q"]], map[config.plugins.iptvplayer.tvgrypl_default_quality.value] ) if config.plugins.iptvplayer.tvgrypl_use_dq.value: urlTab = oneLink.getOneLink() else: urlTab = oneLink.getSortedLinks() return urlTab
def _getVideoLink(data, FORMATS): videoTab = [] for item in data['formats']: if item['mimeType'] in FORMATS.keys(): formatType = FORMATS[item['mimeType']].encode('utf-8') format = self.REAL_FORMATS.get(formatType, '') name = self.getFormatFromBitrate( str(item['totalBitrate'])) + '\t ' + formatType url = item['url'].encode('utf-8') if 'm3u8' == formatType: videoTab.extend( getDirectM3U8Playlist(url, checkExt=False, variantCheck=False)) else: meta = {'iptv_format': format} if config.plugins.iptvplayer.tvpVodProxyEnable.value: meta[ 'http_proxy'] = config.plugins.iptvplayer.proxyurl.value videoTab.append({ 'name': name, 'bitrate': str(item['totalBitrate']), 'url': self.up.decorateUrl(url, meta) }) if 1 < len(videoTab): max_bitrate = int( config.plugins.iptvplayer.tvpVodDefaultformat.value) def __getLinkQuality(itemLink): if 'with' in itemLink and 'heigth' in itemLink: bitrate = self.getBitrateFromFormat( '%sx%s' % (itemLink['with'], itemLink['heigth'])) if bitrate != 0: return bitrate return int(itemLink['bitrate']) oneLink = CSelOneLink(videoTab, __getLinkQuality, max_bitrate) if config.plugins.iptvplayer.tvpVodUseDF.value: videoTab = oneLink.getOneLink() else: videoTab = oneLink.getSortedLinks() return videoTab
def getLinksForVideo(self, cItem): printDBG("TvGryPL.getLinksForVideo [%s]" % cItem) id = self.cm.ph.getSearchGroups(cItem['url'] + '_', 'ID=([0-9]+?)[^0-9]', 1)[0] urlTab = [] for item in ['MOB', 'SD', 'HD']: url = 'http://tvgry.pl/video/source.asp?SC=TV&ID=%s&QL=%s' % (id, item[:2]) sts,data = self.getPage(url) if not sts: continue url = self.cm.ph.getSearchGroups(data, 'file>(http[^<]+?)<', 1)[0] if '' != url: urlTab.append({'name':item, 'url':url, 'q':item}) if 1 < len(urlTab): map = {'MOB':0, 'SD':1, 'HD':2} oneLink = CSelOneLink(urlTab, lambda x: map[x['q']], map[config.plugins.iptvplayer.tvgrypl_default_quality.value]) if config.plugins.iptvplayer.tvgrypl_use_dq.value: urlTab = oneLink.getOneLink() else: urlTab = oneLink.getSortedLinks() return urlTab
def getLinksForVideo(self, cItem): printDBG("TvGryPL.getLinksForVideo [%s]" % cItem) allLinksTab = [] urlTab = [] rm(self.COOKIE_FILE) sts, data = self.getPage( cItem['url'], self.defaultParams ) #{'use_cookie':True, 'cookie_items':{'agegate':1}}) if not sts: return urlTab ageMarker = '<div class="player-AGEGATE">' if ageMarker in data: tmp = self.cm.ph.getSearchGroups( config.plugins.iptvplayer.tvgrypl_date_of_birth.value, '''([0-9]{4})[-]?([0-9][0-9]?)[-]?([0-9][0-9]?)''', 3) printDBG(">>>>>YEAR[%s] MONTH[%s] DAY[%s]" % (tmp[0], tmp[1], tmp[2])) if '' != tmp[0] and '' != tmp[1] and '' != tmp[2]: urlParams = dict(self.defaultParams) urlParams['header'] = dict(self.AJAX_HEADER) urlParams['header']['Referer'] = cItem['url'] sts, data = self.getPage('https://tvgry.pl/ajax/agegate.asp', urlParams, { 'day': int(tmp[2]), 'month': int(tmp[1]), 'year': int(tmp[0]) }) if not sts: return [] sts, data = self.getPage(cItem['url'], self.defaultParams) if not sts: return urlTab if ageMarker in data: SetIPTVPlayerLastHostError( "Twój wiek nie został poprawnie zweryfikowany przez serwis http://tvgry.pl/.\nSprawdź ustawioną datę urodzenia w konfiguracji hosta." ) else: SetIPTVPlayerLastHostError( "Wprowadź datę urodzenia w konfiguracji hosta - wymagane przez serwis http://tvgry.pl/." ) url = self.cm.ph.getSearchGroups( data, '''<iframe[^>]+?src=['"]([^"^']+?)['"]''', 1, True)[0] if self.cm.isValidUrl(url): allLinksTab = self.up.getVideoLinkExt(url) urlIDS = [] urlTemplate = '' data = self.cm.ph.getDataBeetwenMarkers(data, 'sources:', ']')[1] data = self.cm.ph.getAllItemsBeetwenMarkers(data, '{', '}') for item in data: url = self.cm.ph.getSearchGroups( item, '''['"]?file['"]?\s*:\s*['"]([^'^"]+?)['"]''')[0] name = self.cm.ph.getSearchGroups( item, '''['"]?label['"]?\s*:\s*['"]([^'^"]+?)['"]''')[0] if self.cm.isValidUrl(url): id = self.cm.ph.getSearchGroups(url, '''(/[0-9]+_)[0-9]+''')[0] if id != '' and id not in urlIDS: urlIDS.append(id) if urlTemplate == '': urlTemplate = url.replace(id, '{0}') q = "" if '/500_' in url or "Mobile" in url: q = 'MOB' elif '/750_' in url or "SD" in url: q = 'SD' elif '/1280_' in url or "720p" in url: q = 'HD' if q != '': urlTab.append({ 'name': name, 'url': strwithmeta(url, {"Range": "bytes=0-"}), 'q': q, 'need_resolve': 0 }) if urlTemplate != '': params = dict(self.defaultParams) params['header'] = dict(params['header']) params['header']['Range'] = "bytes=0-" params['max_data_size'] = 0 params['header'].pop('Accept', None) for item in [('/500_', 'MOB'), ('/750_', 'SD'), ('/1280_', 'HD')]: if item[0] in urlIDS: continue url = urlTemplate.format(item[0]) sts = self.cm.getPage(url, params)[0] if sts and 'mp4' in self.cm.meta.get('content-type', '').lower(): urlTab.append({ 'name': item[1], 'url': strwithmeta(url, {"Range": "bytes=0-"}), 'q': item[1], 'need_resolve': 0 }) if 1 < len(urlTab): map = {'MOB': 0, 'SD': 1, 'HD': 2, 'FHD': 3} oneLink = CSelOneLink( urlTab, lambda x: map[x['q']], map[config.plugins.iptvplayer.tvgrypl_default_quality.value]) if config.plugins.iptvplayer.tvgrypl_use_dq.value: urlTab = oneLink.getOneLink() else: urlTab = oneLink.getSortedLinks() if 0 == len(urlTab): return allLinksTab return urlTab
def getLinksForVideo(self, cItem): printDBG("FokusTV.getLinksForVideo [%s]" % cItem) urlTab = [] url = cItem['url'] sts, data = self.getPage(url) if not sts: return [] if url.endswith('/player'): tab = ['fokustv-p/stream1'] data = self.cm.ph.getDataBeetwenMarkers(data, '$.post(', 'function', withMarkers=False)[1] secureUri = self.cm.ph.getSearchGroups( data, '''(https?://[^'^"]+?)['"]''')[0] streamUri = self.cm.ph.getSearchGroups( data, '''streamUri['"\s]*?:\s*?['"]([^'^"]+?)['"]''')[0] if secureUri == '': secureUri = 'https://api.stream.smcdn.pl/api/secureToken.php' elif streamUri not in tab: tab.insert(0, streamUri) for streamUri in tab: sts, url = self.getPage(secureUri, post_data={'streamUri': streamUri}) if not sts: continue if self.cm.isValidUrl(url): data = getDirectM3U8Playlist(url, checkExt=True, checkContent=True) for item in data: item['url'] = strwithmeta(item['url'], { 'iptv_proto': 'm3u8', 'iptv_livestream': True }) urlTab.append(item) else: data = self.cm.ph.getDataBeetwenMarkers(data, '<video', '</video>')[1] data = self.cm.ph.getAllItemsBeetwenMarkers( data, '<source ', '>', False, False) for item in data: url = self.cm.ph.getSearchGroups( item, '''src=['"]([^"^']+?)['"]''')[0].replace('&', '&') if url.startswith('//'): url = 'http:' + url if not url.startswith('http'): continue if 'video/mp4' in item: type = self.cm.ph.getSearchGroups( item, '''type=['"]([^"^']+?)['"]''')[0] res = self.cm.ph.getSearchGroups( item, '''res=['"]([^"^']+?)['"]''')[0] label = self.cm.ph.getSearchGroups( item, '''label=['"]([^"^']+?)['"]''')[0] if label == '': label = res if label == '': label = type url = strwithmeta(url, { 'Referer': cItem['url'], 'User-Agent': self.USER_AGENT }) urlTab.append({'name': '{0}'.format(label), 'url': url}) elif 'mpegurl' in item: url = strwithmeta( url, { 'iptv_proto': 'm3u8', 'Referer': cItem['url'], 'Origin': self.up.getDomain(cItem['url'], False), 'User-Agent': self.USER_AGENT }) tmpTab = getDirectM3U8Playlist(url, checkExt=True, checkContent=True) for idx in range(len(tmpTab)): tmpTab[idx]['url'].meta['iptv_proto'] = 'm3u8' urlTab.extend(tmpTab) if 1 < len(urlTab): maxQuality = int( config.plugins.iptvplayer.fokustv_format.value) + 20 def __getLinkQuality(itemLink): try: return int(itemLink['with']) except Exception: return 0 oneLink = CSelOneLink(urlTab, __getLinkQuality, maxQuality) if config.plugins.iptvplayer.fokustv_df.value: urlTab = oneLink.getOneLink() else: urlTab = oneLink.getSortedLinks() return urlTab
def getVideoLink(self, cItem): printDBG("VideoStarApi.getVideoLink") urlsTab = [] idx = cItem.get('priv_idx', -1) if idx < 0 or idx >= len(self.cacheChannelList): return urlsTab vidItem = self.cacheChannelList[idx] formatId = config.plugins.iptvplayer.videostar_streamprotocol.value tries = 0 while True: tries += 1 try: if self.loggedIn: url = 'v1/channel/%s?format_id=%s&device_type=android_tv' % ( vidItem['id'], formatId) else: url = 'v1/guest/channel/%s?format_id=%s&device_type=android_tv' % ( vidItem['id'], formatId) url = self.getFullUrl(url, 'api') sts, data = self.cm.getPage(url, self.defaultParams) printDBG(data) if not sts and not self.loggedIn and tries == 1: rm(self.COOKIE_FILE) # self.doLogin('guest', 'guest') sts, data = self.cm.getPage( self.getFullUrl('/static/guest/channels/list/web.json', 'static'), self.defaultParams) if sts: continue if not sts: break data = json_loads(data) if data['data'] != None: for item in data['data']['stream_channel']['streams']: if formatId == '2': if 'hls' in item['type']: hslUrl = item['url'][0] # add here random urlsTab.extend( getDirectM3U8Playlist( hslUrl, checkExt=False, cookieParams=self.defaultParams, checkContent=True)) elif formatId in ['3', '4']: if 'dash' in item['type']: dashUrl = item['url'][0] # add here random urlsTab.extend( getMPDLinksWithMeta( dashUrl, checkExt=False, cookieParams=self.defaultParams)) elif data['_meta'] != None: info = data['_meta']['error']['info'] message = [] message.append( 'Oglądasz już kanał %s na urządeniu %s o adresie: %s.' % (info['channel_name'], info['device'], info['user_ip'])) message.append( 'W WP Pilocie nie możesz oglądać większej liczby kanałów jednocześnie.' ) message.append('Czy chcesz kontynować tutaj?') arg1 = self.sessionEx.waitForFinishOpen( MessageBox, '\n'.join(message), type=MessageBox.TYPE_YESNO) if arg1: url = self.getFullUrl('v1/channels/close', 'api') paramsUrl = dict(self.defaultParams) paramsUrl['header'] = dict(paramsUrl['header']) paramsUrl['header']['Referer'] = self.getFullUrl('tv') paramsUrl['header']['Origin'] = self.MAIN_URL[:-1] paramsUrl['header'][ 'content-type'] = 'application/json;charset=UTF-8' paramsUrl['raw_post_data'] = True sts, data = self.cm.getPage( url, paramsUrl, '{"channelId":"%s","t":"%s"}' % (info['channel_id'], self.userToken)) printDBG("==================== token1[%s] token2[%s]" % (self.userToken, info['stream_token'])) printDBG(data) printDBG("====================") continue except Exception: printExc() break if len(urlsTab): cookieHeader = self.cm.getCookieHeader(self.COOKIE_FILE) for idx in range(len(urlsTab)): urlsTab[idx]['url'] = strwithmeta(urlsTab[idx]['url'], { 'Cookie': cookieHeader, 'User-Agent': self.USER_AGENT }) if len(urlsTab): maxBitrate = int( config.plugins.iptvplayer.videostar_defquality.value) * 1.3 def __getLinkQuality(itemLink): try: if 'bitrate' in itemLink: return int(itemLink['bitrate']) elif 'bandwidth' in itemLink: return int(itemLink['bandwidth']) except Exception: printExc() return 0 oneLink = CSelOneLink(urlsTab, __getLinkQuality, maxBitrate) urlsTab = oneLink.getSortedLinks() if config.plugins.iptvplayer.videostar_use_defquality.value: urlsTab = [urlsTab[0]] return urlsTab