Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
 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
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
            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
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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('&amp;', '&')
                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