Exemple #1
0
    def del2Filters(self, cItem, nextCategory):
        printDBG("Del.fillCacheFilters")
        sts, data = self.getPage(cItem['url'] + 'videos/')
        if not sts: return

        data = ph.find(data, ('<div', '>', 'select_rechts'), '</div>',
                       flags=0)[1]
        data = ph.findall(data, ('<option', '>'),
                          '</option>',
                          flags=ph.START_S)
        for idx in range(1, len(data), 2):
            url = self.cm.getFullUrl(ph.getattr(data[idx - 1], 'value'),
                                     self.cm.meta['url'])
            title = self.cleanHtmlStr(data[idx])
            self.addDir(
                MergeDicts(
                    cItem, {
                        'good_for_fav': True,
                        'category': nextCategory,
                        'title': title,
                        'url': url
                    }))
Exemple #2
0
    def listProgramsMenu(self, cItem, nextCategory1, nextCategory2):
        printDBG("C7tvDe.listProgramsMenu")
        sts, data = self.getPage(cItem['url'])
        if not sts: return
        self.setMainUrl(self.cm.meta['url'])

        data = ph.find(data, ('<nav', '>', 'tvshow-nav'), '</nav>', flags=0)[1]
        data = data.split('</ul>')[:-1]
        for sData in data:
            subItems = []
            sTitle = ph.clean_html(
                ph.find(sData, ('<h3', '>'), '</h3>', flags=0)[1])
            sData = ph.findall(sData, ('<a', '>'), '</a>', flags=ph.START_S)
            for idx in range(1, len(sData), 2):
                url = self.getFullUrl(ph.getattr(sData[idx - 1], 'data-href'))
                title = ph.clean_html(sData[idx])
                if url:
                    subItems.append(
                        MergeDicts(cItem, {
                            'url': url,
                            'title': title,
                            'category': nextCategory2
                        }))
                else:
                    subItems.append(
                        MergeDicts(cItem, {
                            'title': title,
                            'category': nextCategory1
                        }))
            if not sTitle: self.currList.extend(subItems)
            else:
                self.addDir(
                    MergeDicts(
                        cItem, {
                            'category': 'sub_items',
                            'sub_items': subItems,
                            'title': sTitle
                        }))
Exemple #3
0
 def getItems(self, cItem, nextCategory, data):
     retList = []
     sTitle = ph.clean_html(
         ph.find(data, ('<span', '>', 'format-header_title'),
                 '</span>',
                 flags=0)[1])
     data = ph.findall(data, ('<article', '>', 'teaser'),
                       '</article>',
                       flags=ph.START_S)
     for idx in range(1, len(data), 2):
         item = data[idx]
         url = ph.search(item, ph.A)[1]
         icon = self.getFullIconUrl(ph.getattr(item, 'data-src'))
         desc = ph.clean_html(
             ph.find(item, ('<div', '>', 'caption'), '</div>', flags=0)[1])
         title = ph.clean_html(
             ph.find(item, ('<h5', '>', 'title'), '</h5>', flags=0)[1])
         if title == '':
             title = url.rsplit('/', 1)[-1].replace(
                 '-', ' ').decode('utf-8').title().encode('utf-8')
         desc = [desc] if desc else []
         desc.append(
             ph.clean_html(ph.find(item, ('<p', '>'), '</p>', flags=0)[1]))
         if sTitle: title = '%s: %s' % (sTitle, title)
         params = MergeDicts(
             cItem, {
                 'good_for_fav': True,
                 'title': title,
                 'url': self.getFullUrl(url),
                 'icon': icon,
                 'desc': '[/br]'.join(desc)
             })
         if 'class-clip' in data[idx - 1]:  # and '-clip' in url:
             params.update({'type': 'video'})
         else:
             params.update({'category': nextCategory})
         retList.append(params)
     return retList
    def getLinksForVideo(self, cItem):
        printDBG("FilmPalastTo.getLinksForVideo [%s]" % cItem)
        linksTab = []

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

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

        items = ph.findall(data, ('<ul', '>', 'currentStreamLinks'),
                           '</ul>',
                           flags=0)
        for item in items:
            #printDBG(item)
            title = ph.clean_html(
                ph.find(item, ('<p', '>'), '</p>', flags=0)[1])
            if not title:
                title = ph.clean_html(item)

            url = re.findall("data-player-url=\"(.*?)\"", item)
            if url:
                url = url[0]
            else:
                url = re.findall("data-player-url=\"(.*?)\"", item)
                if url:
                    url = url[0]
                else:
                    continue

            linksTab.append({'name': title, 'url': url, 'need_resolve': 1})

        if len(linksTab):
            self.cacheLinks[cItem['url']] = linksTab

        return linksTab
Exemple #5
0
 def listSubCategories(self, cItem, nextCategory):
     printDBG('CrtankoCom.listSubCategories')
     sts, data = self.cm.getPage(cItem['url'])
     if not sts:
         return
     self.setMainUrl(self.cm.meta['url'])
     data = ph.find(data, ('<ul', '>', 'browse-categories'),
                    '</ul>',
                    flags=0)[1]
     data = ph.findall(data, ('<li', '>'), '</li>', flags=0)
     for item in data:
         title = ph.clean_html(item)
         url = self.getFullUrl(ph.search(item, ph.A)[1])
         icon = self.getFullIconUrl(ph.search(item, ph.IMG)[1])
         self.addDir(
             MergeDicts(
                 cItem, {
                     'good_for_fav': True,
                     'category': nextCategory,
                     'title': title,
                     'url': url,
                     'icon': icon
                 }))
Exemple #6
0
    def listPopular(self, cItem):
        printDBG('DixMax.listPopular')
        sts, data = self.getPage(cItem['url'])
        if not sts:
            return
        self.setMainUrl(self.cm.meta['url'])
        data = ph.find(data, ('<section', '>', 'content'), '</section>', flags=0)[1]
        titleMap = {}
        tmp = ph.find(data, ('<ul', '>', 'tablist'), '</ul>', flags=0)[1]
        tmp = ph.findall(tmp, ('<a', '>', 'aria-controls'), '</a>', flags=ph.START_S)
        for idx in range(1, len(tmp), 2):
            title = ph.clean_html(tmp[idx])
            key = ph.getattr(tmp[idx - 1], 'aria-controls')
            titleMap[key] = title

        data = ph.rfindall(data, '</div>', ('<div', '>', 'tabpanel'))
        for item in data:
            title = titleMap.get(ph.getattr(item, 'id'), '')
            subItems = self._listItems2(cItem, 'explore_item', item)
            if subItems:
                self.addDir(MergeDicts(cItem, {'title': title,
                 'category': 'sub_items',
                 'sub_items': subItems}))
Exemple #7
0
    def listSearchItems(self, cItem):
        printDBG("Redbull.listSearchItems")
        page = cItem.get('page', 1)

        sts, data = self.getPage(cItem['url'])
        if not sts: return
        self.setMainUrl(self.cm.meta['url'])
        #printDBG("hostredbull.listSearchItems |%s|" % data)

        data2 = ph.findall(data, '<twoLine', '</twoLine')
        for item in data2:
            params = self.getInfo(item)

            if params['content_type'] in ['products', 'collection']:
                params['category'] = 'explore_item'
                #printDBG(str(params))
                self.addDir(params)

            elif params['content_type'] in ['content', 'page_stream']:
                #printDBG(str(params))
                self.addVideo(params)
            else:
                printDBG("Content Type unknown: %s " % params['content_type'])
Exemple #8
0
    def listSeasons(self, cItem, nextCategory):
        printDBG("BSTO.listSeasons")
        sts, data = self.getPage(cItem['url'])
        if not sts: return

        descData = self.cm.ph.getDataBeetwenMarkers(data, '<div id="sp_left">', '<script', False)[1]
        desc = self.cleanHtmlStr(self.cm.ph.getDataBeetwenMarkers(descData, '<p', '</p>')[1])

        icon = self.getFullIconUrl(self.cm.ph.getSearchGroups(descData, '''src=['"]([^'^"]+?)['"]''')[0])
        data = self.cm.ph.getDataBeetwenMarkers(data, '<div class="seasons">', '</ul>')[1]

        seasonLabel = self.cleanHtmlStr(self.cm.ph.getDataBeetwenMarkers(data, '<strong>', '</strong>', False)[1])
        printDBG(seasonLabel)

        items = ph.findall(data , ('<li', '>'), '</li>')

        for item in items:
            url   = self.getFullUrl(self.cm.ph.getSearchGroups(item, '''href=['"]([^'^"]+?)['"]''')[0])
            title = self.cleanHtmlStr(item)
            params = dict(cItem)
            params.update({'good_for_fav':False, 'category':nextCategory, 'title':'%s %s' % (seasonLabel, title), 's_num':title, 'series_title':cItem['title'], 'url':url, 'icon':icon, 'desc':desc})
            printDBG(str(params))
            self.addDir(params)
Exemple #9
0
    def listsCats(self, cItem, nextCat):
        printDBG("hostszenestreamz.listsCats |%s|" % cItem)

        url = cItem['url']

        if '/publ/' in url:
            cats = self.MOVIES_GENRE_CAT
        else:
            cats = self.SERIES_GENRE_CAT

        if cats == []:
            sts, data = self.getPage(url)
            if not sts:
                return
            data = ph.findall(data, '<a class="CatInf"', '</a>')
            for item in data:
                url = self.getFullUrl(ph.search(item, ph.A_HREF_URI_RE)[1])
                title = ph.search(item, '''class="CatNameInf">([^<]+)<''')[0]
                if title.startswith('S-'):
                    title = title.replace('S-', '')
                cats.append({'category': 'list_items', 'title': title, 'url': url})

        self.listsTab(cats, nextCat)
Exemple #10
0
    def listMain(self, cItem, nextCategory):
        printDBG('Fenixsite >>>>>>>>>>>> listMain >> %s' % cItem)
        sts, data = self.getPage(self.getMainUrl())
        if not sts: return
        self.setMainUrl(self.cm.meta['url'])
        data = ph.find(data, ('<ul', '>', 'navbar'), '</ul>')[1]
        data = ph.findall(data, ('<li', '>'), '</li>')
        for item in data:
            url = ph.getattr(item, 'href')
            if '/strani_filmovi/' in url or '/strane_serije/' in url:
                title = ph.clean_html(item)
                self.addDir(
                    MergeDicts(
                        cItem, {
                            'category': nextCategory,
                            'url': self.getFullUrl(url),
                            'title': title,
                            'desc': self.HOST_DESC
                        }))

        MAIN_CAT_TAB = [{
            'category': nextCategory,
            'title': 'Anime',
            'url': self.getFullUrl('/load/anime_serije/95'),
            'desc': self.HOST_DESC
        }, {
            'category': 'search',
            'title': _('Search'),
            'search_item': True,
            'desc': self.HOST_DESC
        }, {
            'category': 'search_history',
            'title': _('Search history'),
            'desc': self.HOST_DESC
        }]

        self.listsTab(MAIN_CAT_TAB, cItem)
    def listItems(self, cItem):
        printDBG("Fenixsite.listItems")
        page = cItem.get('page', 1)
        url = cItem['url']
        if page == 1:
            url += '-%s-%s' % (page, cItem['f_sort'])

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

        mainDesc = self.cleanHtmlStr(ph.find(data, ('<div', '>', 'shortstory-news'), '</div>', flags=0)[1].split('</h1>', 1)[-1])

        tmp = ph.find(data, ('<span', '>', 'pagesBlock'), '</td>')[1]
        tmp = ph.search(tmp, '''<a([^>]+?spages\(\s*?['"]%s['"][^>]*?)>''' % (page + 1))[0]
        nextPage = self.getFullUrl(ph.getattr(tmp, 'href'))

        reIcon = re.compile(r'''<img[^>]+?src=(['"])([^>]*?\.(?:jpe?g|png|gif)(?:\?[^\1]*?)?)(?:\1)''', re.I)
        data = ph.findall(data, ('<div', '>', 'entry'), '</ul>')
        for item in data:
            url = self.getFullUrl(ph.search(item, ph.A_HREF_URI_RE)[1])
            icon = self.getFullIconUrl(ph.search(item, reIcon)[1])
            title = self.cleanHtmlStr(ph.find(item, ('<h', '>'), '</h', flags=0)[1])

            desc = []
            tmp = [ph.find(item, ('<i', '>', 'eye'), '</span', flags=0)[1], ph.find(item, ('<i', '>', 'comments'), '</span', flags=0)[1], ph.find(item, ('<i', '>', 'comments'), '</span', flags=0)[1]]
            for t in tmp:
                t = self.cleanHtmlStr(t)
                if t:
                    desc.append(t)
            tmp = ph.find(item, ('<ul', '>', 'title'))[1]
            desc.append(ph.getattr(tmp, 'title').replace('/', ' (') + ')')
            self.addVideo({'good_for_fav': True, 'title': title, 'url': url, 'icon': icon, 'desc': ' | '.join(desc) + '[/br]' + mainDesc})

        if nextPage:
            self.addDir(MergeDicts(cItem, {'good_for_fav': False, 'title': _('Next page'), 'url': nextPage, 'page': page + 1}))
Exemple #12
0
    def listVodItem(self, cItem, nextCategory):
        printDBG("EskaGo.listVodItem")
        url = cItem['url']
        if '/vod/' in url:
            type = 'vod'
            url = url.replace('/vod/', '/ajax/vod/')
        else:
            type = 'serial'
            url = url.replace('/serial/', '/ajax/serial/').replace('/program/', '/ajax/program/')

        sts, data = self.cm.getPage(url)
        if not sts: return

        desc = self.cleanHtmlStr( ph.find(data, ('<div', '>', 'text-desc'), '</div>', flags=0)[1] )
        icon = ph.find(data, ('<div', '>', 'bg-film'), '</div>', flags=0)[1]
        icon = self.cm.getFullUrl(ph.search(icon, ph.IMAGE_SRC_URI_RE)[1], self.cm.meta['url'])
        if not icon: icon = cItem.get('icon', '')

        if type != 'vod':
            tmp = ph.find(data, ('<div', '>', 'seasons'),  ('<div', '>', 'clear'), flags=0)[1]
            tmp = ph.findall(tmp, '<a', '</a>')
            for item in tmp:
                url = self.cm.getFullUrl(ph.search(item, ph.A_HREF_URI_RE)[1], self.cm.meta['url'])
                title = self.cleanHtmlStr(item)
                if not title: continue
                self.addDir(MergeDicts(cItem, {'good_for_fav':True, 'category':nextCategory, 'title':title, 's_title': '%s: %s,' % (cItem['title'], title), 'url':url, 'icon':icon, 'desc':desc}))

            if len(self.currList) == 0:
                cItem = MergeDicts(cItem, {'s_title':'%s: ' % cItem['title']})
                self.listVodEpisodes(cItem, data)
        else:
            tmp = ph.find(data, ('<div', '>', 'layer-vod'), '</script>', flags=0)[1]
            if tmp: self.addVideo(MergeDicts(cItem, {'good_for_fav':True, 'icon':icon, 'desc':desc}))

        trailer = ph.find(data, ('<a', '>', 'trailer'), '</a>')[1]
        trailer = self.cm.getFullUrl(ph.search(trailer, ph.A_HREF_URI_RE)[1], self.cm.meta['url'])
        if trailer: self.addVideo(MergeDicts(cItem, {'good_for_fav':True, 'title':_('%s - trailer') % (cItem['title']), 'url':trailer, 'icon':icon, 'desc':desc, 'is_trailer':True}))
    def _getBaseVideoLink(self, wholeData):
        videoUrlParams = []
        tmpUrls = []
        data = ph.findall(wholeData,
                          '<iframe',
                          '</iframe>',
                          flags=ph.I | ph.START_E | ph.END_E)
        for item in data:
            url = ph.getattr(item, 'src', flags=ph.I)
            if url in tmpUrls:
                continue
            tmpUrls.append(url)
            if url.startswith(
                    'http'
            ) and 'facebook.com' not in url and 1 == self.up.checkHostSupport(
                    url):
                videoUrlParams.append({
                    'name': self.up.getHostName(url),
                    'url': url,
                    'need_resolve': 1
                })

        data = re.compile(
            'onclick=[^>]*?[\'"](https?://[^\'^"]+?)[\'"]').findall(wholeData)
        for url in data:
            if url in tmpUrls:
                continue
            tmpUrls.append(url)
            if 'facebook.com' not in url and 1 == self.up.checkHostSupport(
                    url):
                videoUrlParams.append({
                    'name': self.up.getHostName(url),
                    'url': url,
                    'need_resolve': 1
                })

        return videoUrlParams
    def listItems(self, cItem, nextCategory):
        printDBG("HD1080Online.listItems")
        page = cItem.get('page', 1)

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

        nextPage = ph.find(data, ('<span', '>', 'pnext'), '</span>', flags=0)[1]
        nextPage = self.getFullUrl(ph.search(nextPage, ph.A)[1])

        data = ph.find(data, ('<div', '>', 'dle-content'), ('<aside', '>'))[1]
        data = ph.rfindall(data, '</div>', ('<div', '>', 'kino-item'))
        if data and nextPage: data[-1] = ph.find(data[-1], '<div', ('<div', '>', 'pagi-nav'))[1]

        for item in data:
            url = self.getFullUrl( ph.search(item, ph.A)[1] )
            icon = self.getFullIconUrl( ph.search(item, ph.IMG)[1] )
            title = self.cleanHtmlStr(ph.find(item, ('<div', '>', 'title'), '</div>', flags=0)[1])

            desc = []
            tmp = ph.find(item, ('<ul', '>', 'lines'), '<ul', flags=0)[1]
            tmp = ph.findall(tmp, ('<li', '>'), '</li>', flags=0)
            for t in tmp:
                t = ph.clean_html(t)
                if t: desc.append(t)

            # rating
            desc.append(ph.clean_html(ph.rfind(item, ('<div', '>', 'ratig-layer'), ('<b', '>'), flags=0)[1]))
            t = ph.clean_html(ph.find(item, ('<li', '>', 'current-rating'), '</li>', flags=0)[1])
            if t.isdigit(): desc[-1] += ' %s/10' % str(int(t) / 10.0)

            desc.append(ph.clean_html(ph.find(item, ('<div', '>', 'desc'), '</div>', flags=0)[1]))
            self.addDir(MergeDicts(cItem, {'good_for_fav':True, 'category':nextCategory, 'title':title, 'url':url, 'icon':icon, 'desc':'[/br]'.join(desc)}))

        if nextPage:
            self.addDir(MergeDicts(cItem, {'good_for_fav':False, 'title':_('Next page'), 'url':nextPage, 'page':page + 1}))
Exemple #15
0
 def listSort(self, cItem, nextCategory):
     printDBG('Fenixsite >>>>>>>>>>>> listSort >> %s' % cItem)
     sts, pageData = self.getPage(cItem['url'])
     if not sts: return
     self.setMainUrl(self.cm.meta['url'])
     directionsTitle = {1: '↑', 0: '↓'}
     data = ph.find(pageData, ('<span', '>', 'sortBlock'), '</span>')[1]
     data = ph.findall(data, ('<a', '>'), '</a>', flags=ph.START_S)
     items = [[], []]
     for idx in range(1, len(data), 2):
         item = ph.find(data[(idx - 1)], 'ssorts(', ')',
                        flags=0)[1].split(',')
         if len(item) != 3:
             continue
         title = ph.clean_html(data[idx])
         url = self.getFullUrl(item[1].strip()[1:-1])
         try:
             sort = int(item[0].strip()[1:-1])
             sort = sort + 1 if sort % 2 else sort
             for i in range(2):
                 sort -= i
                 items[i].append(
                     MergeDicts(
                         cItem, {
                             'good_for_fav': True,
                             'category': nextCategory,
                             'url': url,
                             'title': '%s %s' % (directionsTitle[i], title),
                             'f_sort': sort
                         }))
         except Exception:
             printExc()
     self.currList = items[0]
     self.currList.extend(items[1])
     if not self.currList:
         self.listItems(MergeDicts(cItem, {'category': nextCategory}),
                        pageData)
Exemple #16
0
 def listMainMenu(self, cItem, nextCategory1, nextCategory2):
     printDBG('BBCSport.listMainMenu')
     url = self.getFullUrl('/sport/snooker')
     sts, data = self.getPage(url)
     if not sts:
         return
     self.setMainUrl(data.meta['url'])
     liveguideData = ph.find(data, ('<aside', '</aside>', 'liveguide'), ('<div', '</div>'))[1]
     icon = self.getFullIconUrl(ph.search(liveguideData, ph.IMG)[1])
     url = self.getFullUrl(ph.search(liveguideData, ph.A)[1])
     if url:
         title = ph.clean_html(ph.getattr(liveguideData, 'alt'))
         desc = ph.clean_html(ph.find(liveguideData, ('<p', '>', 'summary'), '</p>', flags=0)[1])
         self.addDir(MergeDicts(cItem, {'good_for_fav': True,
          'category': 'live_guide',
          'title': title,
          'url': url,
          'icon': icon,
          'desc': desc}))
     data = ph.find(data, ('<nav', '>', 'primary-nav'), ('</nav', '>'), flags=0)[1]
     data = ph.findall(data, ('<li', '>'), '</li>', flags=0)
     for item in data:
         url = self.getFullUrl(ph.search(item, ph.A)[1])
         if not self.cm.isValidUrl(url):
             continue
         if '/my-sport' in url:
             continue
         title = ph.clean_html(item)
         if '/all-sports' in url:
             category = nextCategory2
         else:
             category = nextCategory1
         self.addDir(MergeDicts(cItem, {'good_for_fav': True,
          'category': category,
          'title': title,
          'url': url}))
    def getArticleContent(self, cItem, data=None):
        printDBG("HD1080Online.getArticleContent [%s]" % cItem)
        retTab = []
        itemsList = []

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

        rating = ph.clean_html(ph.find(data, ('<div', '>', 'aggregateRating'), '</div>', flags=0)[1])

        data = ph.find(data, ('<div', '>', 'dle-content'), ('<', '>', 'kino-online'), flags=0)[1]
        title = self.cleanHtmlStr(ph.find(data, ('<h1', '>'), '</h1>', flags=0)[1])
        icon = self.getFullIconUrl(ph.search(data, ph.IMG)[1])
        desc = self.cleanHtmlStr(ph.find(data, ('<div', '>', 'description'), '</div>', flags=0)[1])

        data = ph.find(data, ('<ul', '>', 'opisanie'), '</ul>', flags=0)[1]
        data = ph.findall(data, ('<b', '</b>'), '</li>', flags=ph.START_S)
        for idx in range(1, len(data), 2):
            label = ph.clean_html(data[idx - 1])
            value = ph.clean_html(data[idx])
            if label and value:
                itemsList.append((label, value))
        itemsList.append((_('Rating'), rating))

        if title == '':
            title = cItem['title']
        if icon == '':
            icon = cItem.get('icon', self.DEFAULT_ICON_URL)
        if desc == '':
            desc = cItem.get('desc', '')

        return [{'title': self.cleanHtmlStr(title), 'text': self.cleanHtmlStr(desc), 'images': [{'title': '', 'url': self.getFullUrl(icon)}], 'other_info': {'custom_items_list': itemsList}}]
Exemple #18
0
    def listSearchItems(self, cItem):
        printDBG("Redbull.listSearchItems")
        page = cItem.get('page', 1)

        sts, data = self.getPage(cItem['url'])
        if not sts:
            return
        self.setMainUrl(self.cm.meta['url'])
        printDBG("hostredbull.listSearchItems |%s|" % data)

        data2 = ph.findall(data, '<twoLine', '</twoLine')
        for item in data2:
            icon = self.getFullIconUrl(
                ph.search(item, '''src720=['"]([^'^"]+?)['"]''')[0])
            url = self.getFullUrl(
                ph.search(item, '''onPlay="loadPage\(['"]([^'^"]+?)['"]''')[0])
            title = self.cleanHtmlStr(
                ph.search(item, '''<label2>([^>]+?)</label2>''')[0])
            if not title:
                title = self.cleanHtmlStr(
                    ph.search(item, '''<title>([^>]+?)</title>''')[0])
            if not title:
                title = self.cleanHtmlStr(
                    ph.search(item, '''<label>([^>]+?)</label>''')[0])
            if not title:
                title = self.cleanHtmlStr(
                    ph.search(item, '''Label=['"]([^'^"]+?)['"]''')[0])
            time = self.cleanHtmlStr(
                ph.search(item, '''Duration: ([^'^"]+?)<''')[0])
            params = {
                'title': title,
                'icon': icon,
                'desc': '[' + time + ']',
                'url': url
            }
            self.addVideo(params)
    def _getAjaxData(self, data, cUrl):
        post_data = {'action': 'electeur'}
        ajaxUrl = self.getFullUrl(
            ph.search(
                data,
                '\\s*=\\s*[\'"]([^\'^"]*?ajax[^\'^"]*?)[\'"]')[0].replace(
                    '\\/', '/'))
        data = ph.find(data, ('<div', '>', 'content-left'),
                       ('<div', '>', 'watch-area'),
                       flags=0)[1]
        data = ph.findall(data, '<input', '>', flags=0)
        for item in data:
            val = ph.getattr(item, 'value')
            name = ph.getattr(item, 'name')
            post_data[name] = val

        header = MergeDicts(self.defaultParams['header'], {
            'Referer': cUrl,
            'Accept': '*/*',
            'X-Requested-With': 'XMLHttpRequest'
        })
        params = MergeDicts(self.defaultParams, {'header': header})
        sts, data = self.getPage(ajaxUrl, params, post_data)
        return str(data)
Exemple #20
0
    def listVodEpisodes(self, cItem, data=None):
        printDBG("EskaGo.listVodEpisodes")
        if not data:
            url = cItem['url'].replace('/serial/', '/ajax/serial/')
            sts, data = self.cm.getPage(url)
            if not sts: return

        sTitle = cItem['s_title']
        data = ph.findall(data, ('<div', '>', 'box-movie-small'),
                          '</div>',
                          flags=0)
        for item in data:
            url = self.cm.getFullUrl(
                ph.search(item, ph.A_HREF_URI_RE)[1], self.cm.meta['url'])
            icon = self.cm.getFullUrl(
                ph.search(item, ph.IMAGE_SRC_URI_RE)[1], self.cm.meta['url'])
            title = self.cleanHtmlStr(
                ph.find(item, ('<strong', '>'), '</strong>', flags=0)[1])
            self.addVideo({
                'good_for_fav': True,
                'title': '%s %s' % (sTitle, title),
                'url': url,
                'icon': icon
            })
 def listABC(self, cItem, nextCategory):
     printDBG('SeriesBlanco.listABC')
     sts, data = self.getPage(cItem['url'])
     if not sts:
         return
     cUrl = self.cm.meta['url']
     self.setMainUrl(cUrl)
     self.addDir(
         MergeDicts(cItem, {
             'category': nextCategory,
             'url': cUrl,
             'title': _('--All--')
         }))
     data = ph.find(data, ('<div', '>', 'groupe-links'), '</div>')[1]
     data = ph.findall(data, ('<a', '>'), '</a>', flags=ph.START_S)
     for idx in range(1, len(data), 2):
         url = self.getFullUrl(ph.getattr(data[idx - 1], 'href'))
         title = ph.clean_html(data[idx])
         self.addDir(
             MergeDicts(cItem, {
                 'category': nextCategory,
                 'url': url,
                 'title': title
             }))
Exemple #22
0
    def listItems(self, cItem, nextCategory, post_data=None):
        printDBG("hostszenestreamz.listItems |%s|" % cItem)

        url = cItem['url']
        page = cItem.get('page', 1)

        sts, data = self.getPage(url, {}, post_data)

        if not sts:
            return

        nextPage, pagedata = ph.find(data, '<span class="pagesBlockuz1">', '<span class="numShown73">')

        urls = []
        titles = []
        genres = []
        ldata = ph.findall(data, '<a class="newstitl entryLink"', '</a>')
        for item in ldata:
            url = self.getFullUrl(ph.search(item, ph.A_HREF_URI_RE)[1])
            urls.append(url)
            title = self.cleanHtmlStr(ph.search(item, '''href=['"][^'^"]+['"]>(.+)</''')[0])
            titles.append(title)

        gdata = ph.findall(data, '<div class="MesWrapBlogDet"', '</a>')
        for item in gdata:
            if '<script>' in item:
                continue
            genre = self.cleanHtmlStr(ph.search(item, '''href=['"][^'^"]+['"]>([^<]+)</''')[0])
            genre = genre.replace('Genre: ', '')
            if genre.startswith('S-'):
                genre = genre.replace('S-', '')
            genres.append(genre)

        index = 0
        data = ph.findall(data, '<div class="ImgWrapNews">', '</div>')
        for item in data:
            icon = self.getFullIconUrl(ph.search(item, '''src=['"]([^'^"]+?)['"]''')[0])
            url = urls[index]
            title = titles[index]
            genre = genres[index]
            desc = ''
            if genre != '':
                desc = genre
            params = dict(cItem)
            params.update({'good_for_fav': True, 'category': nextCategory, 'title': title, 'url': url, 'desc': desc, 'icon': icon})
            self.addDir(params)
            index += 1
            printDBG("hostszenestreamz.title [%s]" % title)

        if nextPage:
            printDBG("hostszenestreamz.nextPage")
            thispage = ph.findall(pagedata, 'class="swchItem', '</span>')
            current_page = False
            url = ''
            for pitem in thispage:
                if 'swchItemA' in pitem:
                    current_page = True
                elif current_page:
                    url = self.getFullUrl(ph.search(pitem, '''href="([^"]+)"''')[0])
                    break

            if url != '':
                params = dict(cItem)
                params.update({'good_for_fav': False, 'title': _('Next page'), 'page': page + 1, 'url': url})
                self.addDir(params)
Exemple #23
0
    def exploreItem(self, cItem):
        printDBG("GoMovies.exploreItem")

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

        # trailer
        trailerUrl = ph.search(
            data,
            '''trailer['"]?\s*?:\s*?['"](https?://[^'^"]+?youtube[^'^"]+?)['"]'''
        )[0]
        if trailerUrl != '' and not trailerUrl.endswith('/'):
            params = dict(cItem)
            params.update({
                'good_for_fav': False,
                'title': '%s : %s' % (cItem['title'], _('trailer')),
                'url': trailerUrl
            })
            self.addVideo(params)

        playerUrl = ph.find(data, ('<a', '>', 'watching('), '</a>')[1]
        playerUrl = self.getFullUrl(ph.getattr(playerUrl, 'href'))

        params = dict(self.defaultParams)
        params['header'] = dict(params['header'])
        params['header']['Referer'] = self.cm.meta['url']
        sts, data = self.getPage(playerUrl, params)
        if not sts:
            return

        titlesTab = []
        self.cacheLinks = {}

        data = ph.findall(data, ('<div', '>', 'server-'),
                          ('<div', '>', 'clearfix'))
        for tmp in data:
            serverName = ph.clean_html(ph.find(tmp, '<strong', '</strong>')[1])
            serverId = ph.search(tmp, '''server\-([0-9]+)''')[0]
            tmp = ph.findall(tmp, '<a', '</a>')
            for item in tmp:
                title = ph.clean_html(item)
                id = ph.getattr(item, 'sid')
                playerData = ph.search(
                    item, '''data\-([^=]+?)=['"]([^'^"]+?)['"]''')
                if 'https://mystream.streamango.to/' in playerData[1]:
                    playerData[1] = playerData[1].replace(
                        'https://mystream.streamango.to/', '')
                if playerData[0] == 'strgo':
                    url = 'https://vidload.co/player/' + playerData[1]
                elif playerData[0] == 'onlystream':
                    url = 'https://vidoo.tv/e/' + playerData[1]
                elif playerData[0] == 'svbackup':
                    url = 'https://embed.mystream.to/' + playerData[1]
                else:
                    url = self.getFullUrl(playerData[1])

                if title not in titlesTab:
                    titlesTab.append(title)
                    self.cacheLinks[title] = []
                url = strwithmeta(url, {'id': id, 'server_id': serverId})
                self.cacheLinks[title].append({
                    'name': serverName,
                    'url': url,
                    'need_resolve': 1
                })

        for item in titlesTab:
            params = dict(cItem)
            params.update({
                'good_for_fav': False,
                'title': '%s : %s' % (cItem['title'], item),
                'links_key': item
            })
            self.addVideo(params)
Exemple #24
0
    def exploreItem(self, cItem):
        printDBG("hostszenestreamz.exploreItem")

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

        if '<div class="noEntry"' in data:
            return

        title = cItem.get('title', '')

        trailerurl = ''
        trailerdata = ph.findall(data, '<iframe src=', '</iframe>')
        for item in trailerdata:
            if 'youtube' in item:
                trailerurl = self.getFullUrl(ph.search(item, '''src=['"]([^'^"]+?)['"]''')[0])
                if trailerurl.endswith('/embed/'):
                    trailerurl = ''
                break

        plot = ''
        plotdata = ph.findall(data, '<p><b>', '</b></p>', flags=0)
        for item in plotdata:
            item = item.replace('\n', '')
            item = item.replace('\r', '')
            plot = item

        desc = cItem.get('desc', '')
        url = cItem.get('url', '')
        icon = cItem.get('icon', '')

        if plot != '':
            if desc != '':
                desc = desc + '[/br]'
            desc = desc + plot

        if trailerurl != '':
            trailerurl = self.getFullUrl(trailerurl)
            trailerurl = strwithmeta(trailerurl, {'Referer': url})
            params = dict(cItem)
            params.update({'good_for_fav': False, 'title': '%s %s' % (title, '[Trailer]'), 'url': trailerurl, 'desc': desc})
            self.addVideo(params)

        if '/publ/' in url:
            links = ph.findall(data, '<div class="inner', '</fieldset>')

            self.cacheLinks = {}
            linksKey = cItem['url']
            self.cacheLinks[linksKey] = []
            params = dict(cItem)
            url = ''
            for item in links:
                item = item.replace('\n', '')
                item = item.replace('\r', '')
                url = ph.search(item, ph.A_HREF_URI_RE)[1]
                name = ph.search(url, '''//([^/]+)/''')[0]
                nameparts = name.split('.')
                if len(nameparts) != 2:
                    name = nameparts[-2] + '.' + nameparts[-1]
                url = self.getFullUrl(url)
                url = strwithmeta(url, {'Referer': linksKey})
                self.cacheLinks[linksKey].append({'name': name, 'url': url, 'need_resolve': 1})

            if self.cacheLinks != {}:
                params = dict(cItem)
                params.update({'good_for_fav': False, 'title': '%s' % title, 'links_key': linksKey, 'url': linksKey, 'desc': desc})
                self.addVideo(params)
        else:
            seasons = ph.findall(data, '<div class="spoiler', '</fieldset>')
            sKey = 0
            self.cacheSeasons = {}
            onlyEpisodes = False
            episodesList = []
            eNum = 1
            for item in seasons:
                item = item.replace('\n', '')
                item = item.replace('\r', '')
                season = ph.search(item, '''STAFFEL ([^<]+)<''')[0]
                if len(season):
                    if season.startswith('0'):
                        season = season.replace('0', '')
                    episodesList = []
                    links = ph.findall(item, '<a href="', '</a>')
                    eNum = 1
                    for litem in links:
                        url = ph.search(litem, ph.A_HREF_URI_RE)[1]
                        url = strwithmeta(url, {'Referer': cItem['url']})
                        episode = str(eNum)
                        etitle = '%s s%se%s' % (cItem['title'], season.zfill(2), episode.zfill(2))
                        params = {'title': etitle, 'url': url, 'prev_url': cItem['url']}
                        episodesList.append(params)
                        eNum += 1

                    if len(episodesList):
                        self.cacheSeasons[sKey] = episodesList

                    params = dict(cItem)
                    params.update({'good_for_fav': False, 'category': 'list_episodes', 'title': title + ' ' + _('Season %s') % season, 'url': url, 'desc': desc, 'icon': icon, 's_key': sKey})
                    self.addDir(params)
                    sKey += 1
                else:
                    onlyEpisodes = True
                    season = '1'
                    url = ph.search(item, ph.A_HREF_URI_RE)[1]
                    url = strwithmeta(url, {'Referer': cItem['url']})
                    episode = str(eNum)
                    etitle = '%s s%se%s' % (cItem['title'], season.zfill(2), episode.zfill(2))
                    params = {'title': etitle, 'url': url, 'prev_url': cItem['url']}
                    episodesList.append(params)
                    eNum += 1

            if onlyEpisodes:
                if len(episodesList):
                    self.cacheSeasons[sKey] = episodesList

                params = dict(cItem)
                params.update({'good_for_fav': False, 'category': 'list_episodes', 'title': title + ' ' + _('Season %s') % season, 'url': url, 'desc': desc, 'icon': icon, 's_key': sKey})
                self.addDir(params)
Exemple #25
0
    def handleSection(self, cItem, nextCategory, section):
        printDBG("Redbull.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)
Exemple #26
0
    def showProgram(self, cItem, pagenum=0):
        printDBG('La7 - start ondemand single program list')
        url = self.getFullUrl(cItem["url"] + "/rivedila7")

        sts, html = self.getPage(url)
        if not sts: return

        if pagenum == 0:
            # last episode
            try:
                replica = ph.findall(html,
                                     "<div class=\"contenitoreUltimaReplica",
                                     "<div class=\"clearfix\"></div>")[0]
                regex_icon = "<img src=\"(.*?)\""
                icon = re.findall(regex_icon, replica)[0]
                regex_url = "<a href=\"(.*?)\""
                url = re.findall(regex_url, replica)[0]
                t, title = ph.find(replica,
                                   "<div class=\"title\">",
                                   "</div>",
                                   flags=0)
                t, data = ph.find(replica,
                                  "<div class=\"dataPuntata\">",
                                  "</div>",
                                  flags=0)
                t, desc = ph.find(
                    replica,
                    "<div class=\"views-field views-field-field-testo-lancio\"><p>",
                    "</",
                    flags=0)
                title = title + " (" + data + ")"
                title = HTMLParser.HTMLParser().unescape(title).encode('utf-8')
                desc = HTMLParser.HTMLParser().unescape(desc).encode('utf-8')
                self.addVideo(
                    MergeDicts(
                        cItem, {
                            'category': 'epg_item',
                            'title': title,
                            'url': url,
                            'icon': icon,
                            'desc': desc
                        }))

            except:
                printDBG(
                    "la7 - no last episode video box for program '{0}'".format(
                        cItem["title"]))

            # last week episodes
            url = self.getFullUrl(cItem["url"] + "/rivedila7/settimana")
            sts, html = self.getPage(url)
            if sts:
                try:
                    repliche = ph.findall(html, "<div class=\"itemPuntata",
                                          "</span></div>")
                    for replica in repliche:
                        regex_icon = "<img.*data-src=\"(.*?)\""
                        icon = re.findall(regex_icon, replica)[0]
                        regex_url = "div class=\"title\"><a href=\"(.*?)\">(.*?)</a>"
                        url, title = re.findall(regex_url, replica)[0]
                        t, data = ph.find(replica,
                                          "<div class=\"dataPuntata\">",
                                          "</div>",
                                          flags=0)
                        t, desc = ph.find(
                            replica,
                            "<div class=\"views-field views-field-field-testo-lancio\">",
                            "</div>",
                            flags=0)
                        title = title + " (" + data + ")"
                        title = HTMLParser.HTMLParser().unescape(title).encode(
                            'utf-8')
                        desc = HTMLParser.HTMLParser().unescape(desc).encode(
                            'utf-8')
                        self.addVideo(
                            MergeDicts(
                                cItem, {
                                    'category': 'epg_item',
                                    'title': title,
                                    'url': url,
                                    'icon': icon,
                                    'desc': desc
                                }))
                except:
                    printDBG(
                        "la7 - no last week episodes for program '{0}'".format(
                            cItem["title"]))
            else:
                printDBG(
                    "la7 - error searching last week episodes for program '{0}'"
                    .format(cItem["title"]))

        # older episodes
        url = self.getFullUrl(cItem["url"] +
                              "/rivedila7/archivio?page={0}".format(pagenum))

        sts, html = self.getPage(url)
        if not sts: return

        repliche = ph.findall(html, "<div class=\"itemPuntata",
                              "</span></div>")
        for replica in repliche:
            regex_icon = "<img.*data-src=\"(.*?)\""
            icon = re.findall(regex_icon, replica)[0]
            regex_url = "div class=\"title\"><a href=\"(.*?)\">(.*?)</a>"
            url, title = re.findall(regex_url, replica)[0]
            t, data = ph.find(replica,
                              "<div class=\"dataPuntata\">",
                              "</div>",
                              flags=0)
            t, desc = ph.find(
                replica,
                "<div class=\"views-field views-field-field-testo-lancio\">",
                "</div>",
                flags=0)
            title = title + " (" + data + ")"
            title = HTMLParser.HTMLParser().unescape(title).encode('utf-8')
            desc = HTMLParser.HTMLParser().unescape(desc).encode('utf-8')
            self.addVideo(
                MergeDicts(
                    cItem, {
                        'category': 'epg_item',
                        'title': title,
                        'url': url,
                        'icon': icon,
                        'desc': desc
                    }))

        # look for next button in page
        if html.find("<li class=\"pager-next\">") != -1:
            pagenum = pagenum + 1
            self.addMore(
                MergeDicts(
                    cItem, {
                        'category': 'program_next',
                        'title': _('Next page'),
                        'page_number': pagenum
                    }))
Exemple #27
0
    def getPage(self, baseUrl, addParams={}, post_data=None):
        tries = 0
        cUrl = ''
        while tries < 4:
            tries += 1
            if addParams == {}: addParams = dict(self.defaultParams)
            sts, data = self.cm.getPage(baseUrl, addParams, post_data)
            if not sts: return sts, data
            cUrl = self.cm.meta['url']
            if 'DDoS' in data:
                if tries == 1:
                    rm(self.COOKIE_FILE)
                    continue
                timestamp = time.time() * 1000
                jscode = ''
                tmp = ph.findall(data, ('<script', '>'), '</script>', flags=0)
                for item in tmp:
                    if 'xhr.open' in item:
                        jscode = item
                        break
                js_params = [{'path': GetJSScriptFile('cinemaxx1.byte')}]
                js_params.append({'code': jscode})
                ret = js_execute_ext(js_params)
                if ret['sts'] and 0 == ret['code']:
                    try:
                        tmp = ret['data'].split('\n', 1)
                        sleep_time = int(float(tmp[1]))
                        tmp = json_loads(tmp[0])
                        url = self.getFullUrl(tmp['1'], cUrl)
                        params = dict(addParams)
                        params['header'] = MergeDicts(self.HTTP_HEADER,
                                                      {'Referer': cUrl})
                        sts2, data2 = self.cm.getPage(url, params)
                        if not sts2: break
                        js_params = [{
                            'path': GetJSScriptFile('cinemaxx2.byte')
                        }]
                        js_params.append(
                            {'code': data2 + 'print(JSON.stringify(e2iobj));'})
                        ret = js_execute_ext(js_params)
                        if ret['sts'] and 0 == ret['code']:
                            cj = self.cm.getCookie(self.COOKIE_FILE)
                            for item in json_loads(ret['data'])['cookies']:
                                for cookieKey, cookieValue in item.iteritems():
                                    cookieItem = cookielib.Cookie(
                                        version=0,
                                        name=cookieKey,
                                        value=cookieValue,
                                        port=None,
                                        port_specified=False,
                                        domain='.' +
                                        self.cm.getBaseUrl(cUrl, True),
                                        domain_specified=True,
                                        domain_initial_dot=True,
                                        path='/',
                                        path_specified=True,
                                        secure=False,
                                        expires=time.time() + 3600 * 48,
                                        discard=True,
                                        comment=None,
                                        comment_url=None,
                                        rest={'HttpOnly': None},
                                        rfc2109=False)
                                    cj.set_cookie(cookieItem)
                            cj.save(self.COOKIE_FILE, ignore_discard=True)

                            sleep_time -= time.time() * 1000 - timestamp
                            if sleep_time > 0:
                                GetIPTVSleep().Sleep(
                                    int(math.ceil(sleep_time / 1000.0)))
                            continue
                        else:
                            break
                    except Exception:
                        printExc()
                else:
                    break
        if sts and cUrl:
            self.cm.meta['url'] = cUrl
        return sts, data
Exemple #28
0
    def listMain(self, cItem, nextCategory):
        printDBG("Cinemaxx.listMain")
        sts, data = self.getPage(self.getMainUrl())
        if not sts: return
        self.setMainUrl(self.cm.meta['url'])

        subItems = []
        tmp = ph.findall(data, ('<div', '>', 'owl-cat'), '</div>')
        for item in tmp:
            icon = self.getFullIconUrl(ph.search(item, ph.IMAGE_SRC_URI_RE)[1])
            item = ph.find(item, ('<h2', '>'), '</h2>', flags=0)[1]
            url = self.getFullUrl(ph.search(item, ph.A_HREF_URI_RE)[1])
            title = self.cleanHtmlStr(item)
            subItems.append(
                MergeDicts(
                    cItem, {
                        'good_for_fav': True,
                        'category': nextCategory,
                        'title': title,
                        'url': url
                    }))

        printDBG(subItems)
        sections = ph.find(data, ('<div', '>', 'navbar-collapse'), '</div>')[1]
        sections = ph.rfindall(sections, '</li>', ('<li', '>', 'nav'), flags=0)
        for section in sections:
            tmp = ph.findall(section, ('<a', '>'),
                             '</a>',
                             flags=ph.START_S,
                             limits=1)
            if not tmp: continue
            sTitle = ph.clean_html(tmp[1])
            sUrl = ph.getattr(tmp[0], 'href')

            if sUrl == '/':
                self.addDir(
                    MergeDicts(
                        cItem, {
                            'category': 'sub_items',
                            'sub_items': subItems,
                            'title': sTitle
                        }))
            elif '<ul' in section:
                subItems = []
                section = ph.findall(section, ('<li', '>'), '</li>', flags=0)
                for item in section:
                    title = ph.clean_html(item)
                    url = self.getFullUrl(ph.search(item, ph.A_HREF_URI_RE)[1])
                    subItems.append(
                        MergeDicts(
                            cItem, {
                                'good_for_fav': True,
                                'category': nextCategory,
                                'title': title,
                                'url': url
                            }))
                if len(subItems):
                    self.addDir(
                        MergeDicts(
                            cItem, {
                                'category': 'sub_items',
                                'sub_items': subItems,
                                'title': sTitle
                            }))
            else:
                self.addDir(
                    MergeDicts(
                        cItem, {
                            'category': nextCategory,
                            'url': self.getFullUrl(sUrl),
                            'title': sTitle
                        }))

        MAIN_CAT_TAB = [{
            'category': 'search',
            'title': _('Search'),
            'search_item': True
        }, {
            'category': 'search_history',
            'title': _('Search history'),
        }]
        self.listsTab(MAIN_CAT_TAB, cItem)
Exemple #29
0
    def exploreItem(self, cItem, nextCategory):
        printDBG("C7tvDe.exploreItem")
        sts, data = self.getPage(cItem['url'])
        if not sts:
            return
        self.setMainUrl(self.cm.meta['url'])

        tmp = ph.find(data, 'var contentResources = [', '];', flags=0)[1]
        try:
            tmp = json_loads('[%s]' % tmp)
            for item in tmp:
                icon = self.getFullIconUrl(item.get('poster', ''))
                desc = []
                try:
                    desc.append(str(timedelta(seconds=item['duration'])))
                except Exception:
                    printExc()
                try:
                    desc.append(item['teaser']['description'])
                except Exception:
                    printExc()
                self.addVideo(
                    MergeDicts(
                        cItem, {
                            'good_for_fav': False,
                            'title': item['title'],
                            'item_data': item,
                            'icon': icon,
                            'desc': '[/br]'.join(desc)
                        }))
        except Exception:
            printExc()
            return []

        if not cItem.get('sub_menu_item'):
            tmp = ph.find(data, ('<article', '>', 'class-clip'))[1]
            if not tmp:
                return

            data = ph.find(data, ('<ul', '>', 'format-nav-list'),
                           '</ul>',
                           flags=0)[1]
            data = ph.findall(data, ('<a', '>'), '</a>', flags=ph.START_S)
            for idx in range(1, len(data), 2):
                url = self.getFullUrl(ph.getattr(data[idx - 1], 'href'))
                if '7tv.de' not in self.cm.getBaseUrl(url, True):
                    continue
                title = self.cleanHtmlStr(data[idx])
                self.addDir(
                    MergeDicts(
                        cItem, {
                            'good_for_fav': False,
                            'sub_menu_item': True,
                            'category': nextCategory,
                            'title': title,
                            'url': url
                        }))

            if len(self.currList) == 1 and self.currList[0]['type'] != 'video':
                item = self.currList.pop()
                self.listItems(item, 'explore_item')
Exemple #30
0
    def getVideoLink(self, cItem):
        printDBG("CanlitvliveIoApi.getVideoLink")
        urlsTab = []

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

        if '/tele1.' in cItem['url']:
            data = ph.findall(baseData, '<iframe', '>', flags=ph.I)
            for item in data:
                printDBG(">>>>>>>>>>>>>>>>>>> " + item)
                url = self.cm.getFullUrl(ph.getattr(item, 'src'),
                                         self.cm.meta['url'])
                if 1 == self.up.checkHostSupport(url):
                    urlsTab = self.up.getVideoLinkExt(
                        strwithmeta(url, {'Referer': self.cm.meta['url']}))
                    if urlsTab: return urlsTab

        hlsUrl = ph.search(
            baseData,
            '''["'](https?://[^'^"]+?\.m3u8(?:\?[^"^']+?)?)["']''',
            flags=ph.I)[0]
        printDBG("hlsUrl||||||||||||||||| " + hlsUrl)
        if hlsUrl:
            hlsUrl = strwithmeta(
                hlsUrl, {
                    'User-Agent': self.defaultParams['header']['User-Agent'],
                    'Referer': cItem['url']
                })
            urlsTab = getDirectM3U8Playlist(hlsUrl,
                                            checkContent=True,
                                            sortWithMaxBitrate=999999999)

        if 0 == len(urlsTab):
            data = ph.find(baseData, '.setup(', ')')[1]
            videoUrl = ph.search(
                data,
                '''['"]?file['"]?\s*:\s*['"](https?://[^'^"]+?)['"]''')[0]
            if self.cm.isValidUrl(videoUrl):
                videoUrl = strwithmeta(
                    videoUrl, {
                        'User-Agent':
                        self.defaultParams['header']['User-Agent'],
                        'Referer': cItem['url']
                    })
                urlsTab.append({'name': 'direct', 'url': videoUrl})

        if 0 == len(urlsTab):
            videoUrl = ph.search(
                baseData,
                '''['"]?streamurl['"]?\s*:\s*['"](https?://[^'^"]+?)['"]''',
                flags=ph.I)[0]
            if self.cm.isValidUrl(videoUrl):
                videoUrl = strwithmeta(
                    videoUrl, {
                        'User-Agent':
                        self.defaultParams['header']['User-Agent'],
                        'Referer': cItem['url']
                    })
                urlsTab.append({'name': 'direct', 'url': videoUrl})
        return urlsTab