Пример #1
0
    def listSearchItems(self, cItem):
        printDBG("Christusvincit.listSearchItems")
        page = cItem.get('page', 1)

        sts, data = self.getPage(cItem['url'])
        if not sts:
            return
        self.setMainUrl(self.cm.meta['url'])

        data = ph.find(data, 'search_result', '</table>', flags=0)[1]
        data = re.compile('''<div[^>]+?pagenav[^>]*?>''').split(data, 1)
        if len(data) == 2:
            nextPage = ph.find(data[-1], ('<a', '>%s<' % (page + 1)))[1]
            nextPage = self.getFullUrl(ph.getattr(nextPage, 'href'))
        else:
            nextPage = ''

        data = ph.findall(data[0], ('<a', '>', ph.check(ph.any, ('articles.php', 'readarticle.php'))), '</span>')
        for item in data:
            url = self.getFullUrl(ph.search(item, ph.A_HREF_URI_RE)[1])
            icon = self.getFullUrl(ph.search(item, self.reImgObj)[1])
            item = item.split('</a>', 1)
            title = self.cleanHtmlStr(item[0])
            desc = self.cleanHtmlStr(item[-1])

            self.addDir(MergeDicts(cItem, {'good_for_fav': True, 'category': 'explore_item', 'title': title, 'url': url, 'icon': icon, 'desc': desc}))
        if nextPage:
            self.addDir(MergeDicts(cItem, {'good_for_fav': False, 'title': _('Next page'), 'page': page + 1, 'url': nextPage}))
Пример #2
0
 def tryTologin(self):
     printDBG('tryTologin start')
     self.loggedIn = False
     url = 'https://ssl.egexa.com/login/?domain=egy.best&url=ref'
     sts, data = self.getPage(url)
     if sts:
         sts, data = ph.find(
             data,
             ('<form', '>', ph.check(ph.any, ('LoginForm', 'login_form'))),
             '</form>')
         if sts:
             actionUrl, post_data = self.cm.getFormData(data, url)
             post_data.update({
                 'email': self.login,
                 'password': self.password
             })
             httpParams = dict(self.defaultParams)
             httpParams['header'] = dict(httpParams['header'])
             httpParams['header']['Referer'] = url
             sts, data = self.getPage(actionUrl, httpParams, post_data)
             if sts:
                 sts, data = self.getPage(self.getFullUrl('/?login=check'))
     if sts and '/logout' in data and 'تسجيل الدخول' not in data:
         printDBG('tryTologin OK')
         self.loggedIn = True
     else:
         if self.error_login_egy:
             self.sessionEx.open(MessageBox,
                                 _('Login failed.'),
                                 type=MessageBox.TYPE_ERROR,
                                 timeout=10)
             self.error_login_egy = True
         printDBG('tryTologin failed')
     return self.loggedIn
Пример #3
0
    def getLinksForVideo(self, cItem):
        printDBG("FiliserTv.getLinksForVideo [%s]" % cItem)
        urlTab = []

        if len(self.cacheLinks.get(cItem['url'], [])):
            return self.cacheLinks[cItem['url']]

        sts, data = self.getPage(cItem['url'], self.defaultParams)
        if not sts: return []

        errorMessage = ph.clean_html(
            ph.find(data, ('<h2', '>', 'title_block'), '</section>')[1])
        if '' != errorMessage: SetIPTVPlayerLastHostError(errorMessage)

        lParams = {}
        tmp = ph.findall(data,
                         ('<div', '>', ph.check(ph.any, ('"box"', "'box'"))),
                         '</section>',
                         flags=ph.START_S,
                         limits=2)
        if not tmp: return
        lParams['code'] = ph.getattr(tmp[0], 'data-code')
        lParams['code2'] = ph.getattr(tmp[0], 'data-code2')
        lParams['type'] = ph.getattr(tmp[0], 'id').split('_', 1)[0]

        tmp = ph.findall(tmp[1], ('<h', '>'), ('</h', '>'), flags=0, limits=2)
        lParams['title1'] = ph.clean_html(tmp[0])
        lParams['title2'] = ph.clean_html(tmp[-1])

        data = data.split('<div id="links">')
        if 2 != len(data): return []

        tabs = []
        tmp = ph.find(data[0], '<div id="video_links"',
                      '<div class="clear">')[1]
        tmp = re.compile(
            '<[^>]+?data-type\="([^"]+?)"[^>]*?>([^<]+?)<').findall(tmp)
        for item in tmp:
            tabs.append({'key': item[0], 'title': ph.clean_html(item[1])})

        if tabs: del data[0]

        for tab in tabs:
            tmp = ph.find(data[0], 'data-type="%s"' % tab['key'], '</ul>')[1]
            tmp = ph.findall(tmp, '<li', '</li>')
            for item in tmp:
                url = strwithmeta(ph.getattr(item, 'data-ref'),
                                  {'link_params': lParams})
                title = ph.clean_html(item.split('<div class="rightSide">')[0])
                urlTab.append({
                    'name': '%s: %s' % (tab['title'], title),
                    'url': url,
                    'need_resolve': 1
                })

        self.cacheLinks[cItem['url']] = urlTab
        return urlTab
Пример #4
0
    def getVideoLink(self, cItem):
        printDBG("BilaSportPwApi.getVideoLink")
        urlsTab = []

        sts, data = self.getPage(cItem['url'])
        if not sts: return urlsTab
        cUrl = self.cm.meta['url']
        baseUrl = cUrl

        url = self.getFullUrl(ph.search(data, '''['"]([^'^"]*?/iframes/[^'^"]+?)['"]''')[0], cUrl)
        if not url: return urlsTab
        sts, data = self.getPage(url)
        if not sts: return urlsTab
        cUrl = self.cm.meta['url']

        url = self.getFullUrl(ph.search(data, ph.IFRAME)[1], cUrl)
        if url:
            sts, data = self.getPage(url)
            if not sts: return urlsTab
            cUrl = self.cm.meta['url']

        replaceTab = self.cm.ph.getDataBeetwenMarkers(data, 'prototype.open', '};', False)[1]
        printDBG(replaceTab)
        replaceTab = re.compile('''\.replace\(['"](\s*[^'^"]+?)['"]\s*\,\s*['"]([^'^"]+?)['"]''').findall(replaceTab)
        printDBG(replaceTab)
        if len(replaceTab):
            scriptUrl = '|' + base64.b64encode(json_dumps(replaceTab).encode('utf-8'))
        else:
            scriptUrl = ''
            tmp = ph.findall(data, ('<script', '>', ph.check(ph.none, ('jsdelivr',))))
            for item in tmp:
                scriptUrl = self.getFullUrl(ph.getattr(item, 'src'), cUrl)
                break

        hlsTab = []
        hlsUrl = re.compile('''(https?://[^'^"]+?\.m3u8(?:\?[^'^"]+?)?)['"]''', re.IGNORECASE).findall(data)
        if len(hlsUrl):
            hlsUrl = hlsUrl[-1]
            hlsTab = getDirectM3U8Playlist(hlsUrl, checkContent=True, sortWithMaxBitrate=9000000)
            for idx in range(len(hlsTab)):
                hlsTab[idx]['need_resolve'] = 1
                hlsTab[idx]['url'] = strwithmeta(hlsTab[idx]['url'], {'name':cItem['name'], 'Referer':url, 'priv_script_url':scriptUrl})

        if hlsTab:
            return hlsTab

        if 1 == self.up.checkHostSupport(cUrl): 
            return self.up.getVideoLinkExt(strwithmeta(cUrl, {'Referer':baseUrl}))

        return []
Пример #5
0
    def getList(self, cItem):
        printDBG("BeinmatchApi.getChannelsList")

        channelsTab = []
        sts, data = self.getPage(self.getMainUrl(), self.http_params)
        if not sts:
            return []
        self.setMainUrl(self.cm.meta['url'])

        tmp = ph.findall(data, ('<script', '>', ph.check(ph.none, ('src=', ))),
                         '</script>',
                         flags=0)
        for item in tmp:
            if 'goToMatch' in item:
                self.getLinkJS = item
                break

        if not self.getLinkJS:
            self.sessionEx.waitForFinishOpen(
                MessageBox,
                _('Data for link generation could not be found.\nPlease report this problem to %s'
                  ) % 'https://github.com/OpenVisionE2/e2iplayer-ov/issues',
                type=MessageBox.TYPE_ERROR,
                timeout=10)

        data = ph.find(data, ('<table', '>', 'tabIndex'),
                       ('<div', '>', 'Side'))[1]
        data = ph.rfindall(data, '</tr>', ('<table', '>', 'tabIndex'))
        for item in data:
            printDBG("+++++++++++++++++++++++++++++++++++++++++")
            printDBG(item)
            printDBG("+++++++++++++++++++++++++++++++++++++++++")
            icon = self.getFullIconUrl(
                ph.find(item, 'url(', ')', flags=0)[1].strip())
            title = ph.clean_html(' vs '.join(
                ph.findall(item, ('<td', '>', 'tdTeam'), '</td>', flags=0)))
            url = ph.getattr(item, 'onclick')
            desc = ph.clean_html(
                ph.find(item, ('<td', '>', 'compStl'), '</table>', flags=0)[1])
            channelsTab.append(
                MergeDicts(
                    cItem, {
                        'type': 'video',
                        'title': title,
                        'url': url,
                        'icon': icon,
                        'desc': desc
                    }))

        return channelsTab
Пример #6
0
    def handleSection(self, cItem, nextCategory, section):
        printDBG("Christusvincit.handleSection")
        section = ph.STRIP_HTML_COMMENT_RE.sub("", section)

        tmp = section.split('</table>', 1)
        sTitle = self.cleanHtmlStr(tmp[0])
        if sTitle.lower() in ('linki',): #'kategorie'
            return
        sIcon = self.getFullUrl(ph.search(section, ph.IMAGE_SRC_URI_RE)[1])

        subItems = []
        uniques = set()
        iframes = ph.findall(section, '<center>', '</iframe>')
        if iframes:
            for iframe in iframes:
                title = self.cleanHtmlStr(iframe).split('Video Platform', 1)[0].strip()
                iframe = ph.search(iframe, ph.IFRAME_SRC_URI_RE)[1]
                if iframe in uniques:
                    continue
                uniques.add(iframe)
                if not title:
                    title = sTitle
                subItems.append(MergeDicts(cItem, {'category': nextCategory, 'title': title, 'url': iframe}))

        iframes = ph.IFRAME_SRC_URI_RE.findall(section)
        if iframes:
            for iframe in iframes:
                iframe = iframe[1]
                if iframe in uniques:
                    continue
                uniques.add(iframe)
                subItems.append(MergeDicts(cItem, {'category': nextCategory, 'title': sTitle, 'url': iframe}))
        section = ph.findall(section, ('<a', '>', ph.check(ph.any, ('articles.php', 'readarticle.php'))), '</a>')
        for item in section:
            url = self.getFullUrl(ph.search(item, ph.A_HREF_URI_RE)[1])
            icon = self.getFullUrl(ph.search(item, self.reImgObj)[1])
            title = self.cleanHtmlStr(item)
            if not title:
                title = icon.rsplit('/', 1)[-1].rsplit('.', 1)[0]
                title = self.titlesMap.get(title, title.upper())
            subItems.append(MergeDicts(cItem, {'good_for_fav': True, 'category': nextCategory, 'title': title, 'url': url, 'icon': icon}))

        if len(subItems) > 1:
            self.addDir(MergeDicts(cItem, {'category': 'sub_items', 'title': sTitle, 'icon': sIcon, 'sub_items': subItems}))
        elif len(subItems) == 1:
            params = subItems[0]
            params.update({'title': sTitle})
            self.addDir(params)
Пример #7
0
    def getLinksForVideo(self, cItem):
        printDBG("FilmyNaDzis.getLinksForVideo [%s]" % cItem)

        if 1 == self.up.checkHostSupport(cItem['url']):
            return self.up.getVideoLinkExt(cItem['url'])

        urlTab = []
        cacheKey = cItem['url']
        cacheTab = self.cacheLinks.get(cacheKey, [])
        if cacheTab:
            return cacheTab

        self.cacheLinks = {}

        sts, data = self.getPage(cItem['url'])
        if not sts:
            return

        cUrl = self.cm.meta['url']

        token = ph.find(data, ('<meta', '>', 'token'))[1]
        token_name = ph.getattr(token, 'name')
        token_content = ph.getattr(token, 'content')

        printDBG(
            "FilmyNaDzis.getLinksForVideo --> token --> name '%s' - content '%s'"
            % (token_name, token_content))

        urlParams = self.getDefaultParams(True)
        urlParams['header'] = MergeDicts(urlParams['header'], {
            'Referer': cUrl,
            'x-csrf-' + token_name: token_content
        })

        data = ph.find(data, ('<div', '>', 'video_thumbnail'),
                       '</div>',
                       flags=0)[1]
        printDBG("------------------------")
        printDBG(data)
        printDBG("------------------------")

        tmp = self.getFullUrl(ph.search(data, ph.A)[1], cUrl)
        if tmp:
            if self.cm.getBaseUrl(tmp) != self.cm.getBaseUrl(cUrl):
                name = self.cm.getBaseUrl(tmp)
                params = {
                    'name':
                    name,
                    'url':
                    strwithmeta(tmp, {
                        'Referer': cUrl,
                        'x-csrf-' + token_name: token_content
                    }),
                    'need_resolve':
                    1
                }
                printDBG("-------> link: %s" % str(params))
                urlTab.append(params)
            else:
                printDBG("-------> %s" % tmp)

        tmp = ph.find(data, ('<a', '>', ph.check(ph.all, ('data-id', ))))[1]
        tmp = re.compile('''data-([^=]+?)="([^"]*?)"''').findall(tmp)

        sts, data = self.getPage(
            cUrl, urlParams,
            MergeDicts({'action': 'get_video_player'}, dict(tmp)))
        if not sts:
            return

        tmp = self.cm.ph.getAllItemsBeetwenMarkers(data, '<source', '>')
        if len(tmp):
            for item in tmp:
                type = self.cm.ph.getSearchGroups(
                    item, '''type=['"]([^'^"]+?)['"]''')[0].lower()
                url = self.cm.ph.getSearchGroups(
                    item, '''src=['"]([^'^"]+?)['"]''')[0]

                if 'video/mp4' == type:
                    urlTab.append({
                        'name': self.up.getHostName(url),
                        'url': self.getFullUrl(url),
                        'need_resolve': 0
                    })
                elif 'm3u' in url:
                    urlTab.extend(
                        getDirectM3U8Playlist(url,
                                              checkExt=False,
                                              checkContent=True,
                                              sortWithMaxBitrate=999999999))

        tmp = re.compile('''<iframe[^>]+?src=['"]([^'^"]+?)['"]''',
                         re.IGNORECASE).findall(data)
        if len(tmp):
            for item in tmp:
                urlTab.append({
                    'name': self.up.getHostName(item),
                    'url': self.getFullUrl(item),
                    'need_resolve': 1
                })

        if urlTab:
            self.cacheLinks[cacheKey] = urlTab

        return urlTab