Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
 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
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
0
 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)
Ejemplo n.º 14
0
    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
Ejemplo n.º 15
0
    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)
Ejemplo n.º 16
0
    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
Ejemplo n.º 17
0
    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)