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 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 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 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 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 _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 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("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