예제 #1
0
    def listItems(self, cItem):
        printDBG("Vizjer.listItems %s" % cItem)
        page = cItem.get('page', 1)

        url  = cItem['url']
        sort = cItem.get('sort', '')
        if sort not in url:
            url = url + sort

        if '?' in url: url += '&'
        else: url += '?'
        if page > 1: url = url + 'page={0}'.format(page)

        sts, data = self.getPage(url)
        if not sts: return
        self.setMainUrl(data.meta['url'])
            
        nextPage = self.cm.ph.getDataBeetwenNodes(data, ('<ul', '>', 'pagination'), ('</u', '>'))[1]
        if '' != self.cm.ph.getSearchGroups(nextPage, 'page=(%s)[^0-9]' % (page+1))[0]:
            nextPage = True
        else:
            nextPage = False
        
        if 'phrase=' in cItem['url']:
            data = self.cm.ph.getAllItemsBeetwenNodes(data, ('<a', '>', 'clearfix item'), ('</a', '>'))
        else:
            data = data.split('<div class="poster">')[1:]
        
        for item in data:
#            printDBG("Vizjer.listItems item %s" % item)
            url = self.getFullUrl(self.cm.ph.getSearchGroups(item, '''href=['"]([^"^']+?)['"]''')[0])
            if url == '': continue
            icon = self.getFullIconUrl(self.cm.ph.getSearchGroups(item, '''src=['"]([^"^']+?poster[^"^']+?)['"]''')[0])
            title = unescapeHTML(self.cm.ph.getSearchGroups(item, '''title=['"]([^"^']+?)['"]''')[0]).encode('UTF-8')
            desc = unescapeHTML(self.cm.ph.getSearchGroups(item, '''data-text=['"]([^"^']+?)['"]''')[0]).encode('UTF-8')
            if desc == '': desc = self.cleanHtmlStr(self.cm.ph.getDataBeetwenNodes(item, ('<div', '>', 'description'), ('</div', '>'), False)[1])
#            quality = self.cleanHtmlStr(self.cm.ph.getDataBeetwenNodes(item, ('<div', '>', 'quality-version'), ('</div', '>'), False)[1])
            year = self.cleanHtmlStr(self.cm.ph.getDataBeetwenNodes(item, ('<div', '>', 'rate'), ('</div', '>'), False)[1])
            if year != '': desc = _('Year: ') + year + '[/br]' + desc
            if 'serial-online' in url:
                params = {'good_for_fav':True,'category':'list_seasons', 'url':url, 'title':title, 'desc':desc, 'icon':icon}
                self.addDir(params)
            else:
                params = {'good_for_fav':True, 'url':url, 'title':title, 'desc':desc, 'icon':icon}
                self.addVideo(params)
            
        if nextPage:
            params = dict(cItem)
            params.update({'title':_('Next page'), 'page':page + 1})
            self.addDir(params)
예제 #2
0
    def getVideosFromChannelList(self, url, category, page, cItem):
        printDBG('YouTubeParser.getVideosFromChannelList page[%s]' % (page))
        currList = []
        try:
            sts, data = self.cm.getPage(url, {'host': self.HOST})
            if sts:
                if '1' == page:
                    sts, data = CParsingHelper.getDataBeetwenMarkers(
                        data, 'feed-item-container', 'footer-container', False)
                else:
                    data = unescapeHTML(
                        data.decode('unicode-escape')).encode('utf-8').replace(
                            '\/', '/')

                # nextPage
                match = re.search('data-uix-load-more-href="([^"]+?)"', data)
                if not match: nextPage = ""
                else: nextPage = match.group(1).replace('&amp;', '&')

                data = data.split('feed-item-container')
                currList = self.parseListBase(data)

                if '' != nextPage:
                    item = dict(cItem)
                    item.update({
                        'title': _("Next page"),
                        'page': str(int(page) + 1),
                        'url': 'http://www.youtube.com' + nextPage
                    })
                    currList.append(item)
        except:
            printExc()
            return []
        return currList
 def getVideosFromChannelList(self, url, category, page, cItem):
     printDBG('YouTubeParser.getVideosFromChannelList page[%s]' % (page) )
     currList = []
     try:
         sts,data =  self.cm.getPage(url, {'host': self.HOST})
         if sts:
             if '1' == page:
                 sts,data = CParsingHelper.getDataBeetwenMarkers(data, 'feed-item-container', 'footer-container', False)
             else:
                 data = unescapeHTML(data.decode('unicode-escape')).encode('utf-8').replace('\/', '/')
                 
             # nextPage
             match = re.search('data-uix-load-more-href="([^"]+?)"', data)
             if not match: nextPage = ""
             else: nextPage = match.group(1).replace('&amp;', '&')
 
             data = data.split('feed-item-container')
             currList = self.parseListBase(data)
             
             if '' != nextPage:
                 item = dict(cItem)
                 item.update({'title': _("Next page"), 'page': str(int(page) + 1), 'url': 'http://www.youtube.com' + nextPage})
                 currList.append(item)
     except:
         printExc()
         return []
     return currList
예제 #4
0
    def convertList(self, cList):
        hostList = []

        for cItem in cList:
            hostLinks = []
            type = CDisplayListItem.TYPE_UNKNOWN

            if cItem['type'] == 'category':
                if cItem['title'] == 'Wyszukaj':
                    type = CDisplayListItem.TYPE_SEARCH
                else:
                    type = CDisplayListItem.TYPE_CATEGORY
            elif cItem['type'] == 'video':
                type = CDisplayListItem.TYPE_VIDEO
                page = cItem.get('page', '')
                if '' != page:
                    hostLinks.append(CUrlItem("Link", page, 1))

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

            # prepar description
            descTab = ((cItem.get('duration', ''), '|', ''),
                       (cItem.get('gatunek',
                                  ''), '|', ''), (cItem.get('plot',
                                                            ''), '|\t', ''))
            description = ''
            for descItem in descTab:
                if '' != descItem[0]:
                    description += descItem[1] + descItem[0] + descItem[2]

            hostItem = CDisplayListItem(
                name=unescapeHTML(title.decode("utf-8")).encode("utf-8"),
                description=unescapeHTML(
                    description.decode("utf-8")).encode("utf-8"),
                type=type,
                urlItems=hostLinks,
                urlSeparateRequest=1,
                iconimage=icon)
            hostList.append(hostItem)

        return hostList
예제 #5
0
    def convertList(self, cList):
        hostList = []
        
        for cItem in cList:
            hostLinks = []
            type = CDisplayListItem.TYPE_UNKNOWN

            if cItem['type'] == 'category':
                if cItem['title'] == 'Wyszukaj':
                    type = CDisplayListItem.TYPE_SEARCH
                else:
                    type = CDisplayListItem.TYPE_CATEGORY
            elif cItem['type'] == 'video':
                type = CDisplayListItem.TYPE_VIDEO
                page = cItem.get('page', '')
                if '' != page:
                    hostLinks.append(CUrlItem("Link", page, 1))
                
            title     =  cItem.get('title',    '')
            icon      =  cItem.get('icon',     '')

            # prepar description
            descTab = ( (cItem.get('duration', ''), '|', '' ),
                        (cItem.get('gatunek',  ''), '|', '' ),
                        (cItem.get('plot',     ''), '|\t',  '' ) )
            description = ''
            for descItem in descTab:
                if '' != descItem[0]:
                    description += descItem[1] + descItem[0] + descItem[2] 
            
            hostItem = CDisplayListItem( name        = unescapeHTML(title.decode("utf-8")).encode("utf-8"),
                                         description = unescapeHTML(description.decode("utf-8")).encode("utf-8"),
                                         type        = type,
                                         urlItems    = hostLinks,
                                         urlSeparateRequest = 1,
                                         iconimage   = icon )
            hostList.append(hostItem)

        return hostList
예제 #6
0
 def listItems(self, cItem, category='video'):
     printDBG("MoviesNight.listMovies")
     url = cItem['url']
     if '?' in url:
         post = url.split('?')
         url  = post[0]
         post = post[1] 
     else:
         post = ''
     page = cItem.get('page', 1)
     if page > 1:
         url += '/page/%d/' % page
     if post != '': 
         url += '?' + post
     
     sts, data = self.cm.getPage(url)
     if not sts: return
     
     nextPage = False
     if ('/page/%d/' % (page + 1)) in data:
         nextPage = True
     
     data = self.cm.ph.getDataBeetwenMarkers(data, '<div id="content">', '<div id="footer">', False)[1]
     data = data.split('<div class="home_post_cont post_box">')
     if len(data): del data[0]
     
     for item in data:
         url    = self.cm.ph.getSearchGroups(item, 'href="([^"]+?)"')[0]
         icon   = self.cm.ph.getSearchGroups(item, 'src="([^"]+?)"')[0]
         
         tmp = self.cm.ph.getDataBeetwenMarkers(item, 'title="', '"', False)[1]
         try:
             tmp = unescapeHTML( tmp.decode('utf-8') ).encode('utf-8')
         except:
             printExc()
             tmp = ''
         #printDBG("----------------------------------")
         #printDBG(tmp)
         tmp = tmp.split('<p>')
         desc = self.cleanHtmlStr( tmp[-1].replace('\n', '|') )
         
         params = dict(cItem)
         params.update( {'title': self.cleanHtmlStr( tmp[0] ), 'url':self._getFullUrl(url), 'desc': desc, 'icon':self._getFullUrl(icon)} )
         self.addVideo(params)
     
     if nextPage:
         params = dict(cItem)
         params.update( {'title':_('Next page'), 'page':page+1} )
         self.addDir(params)
예제 #7
0
    def getLinksForVideo(self, cItem):
        printDBG("cda-filmy.getLinksForVideo [%s]" % cItem)

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

        self.cacheLinks = {}

        params = dict(self.defaultParams)
        params['header'] = dict(params['header'])

        cUrl = cItem['url']
        url = cItem['url']

        retTab = []

        params['header']['Referer'] = cUrl
        sts, data = self.getPage(url, params)
        if not sts: return []

        cUrl = data.meta['url']
        self.setMainUrl(cUrl)
        data = self.cm.ph.getDataBeetwenNodes(data, ('<div', '>', 'TPlayerTb'),
                                              ('<span', '>'))[1]
        data = unescapeHTML(data).replace('#038;', '')
        data = self.cm.ph.getAllItemsBeetwenMarkers(data, '<div', '</div>')

        for item in data:
            printDBG("cda-filmy.getLinksForVideo item[%s]" % item)
            url = self.cm.ph.getSearchGroups(item,
                                             '''src=['"]([^"^']+?)['"]''', 1,
                                             True)[0]
            sts, data = self.getPage(url, params)
            if not sts: continue
            playerUrl = self.cm.ph.getSearchGroups(
                data, '''src=['"]([^"^']+?)['"]''', 1, True)[0]
            retTab.append({
                'name': self.up.getHostName(playerUrl),
                'url': strwithmeta(playerUrl, {'Referer': url}),
                'need_resolve': 1
            })

        if len(retTab):
            self.cacheLinks[cacheKey] = retTab
        return retTab
예제 #8
0
    def listItems(self, cItem):
        printDBG("Zaluknij.listItems %s" % cItem)
        page = cItem.get('page', 1)

        url = cItem['url']
        sort = cItem.get('sort', '')
        if sort not in url:
            url = url + sort
        if page > 1:
            url = url + '/?page={0}'.format(page)
        sts, data = self.getPage(url)
        if not sts:
            return
        self.setMainUrl(data.meta['url'])

        nextPage = self.cm.ph.getDataBeetwenNodes(data, ('<ul', '>', 'pagination'), ('</ul', '>'))[1]
        if '' != self.cm.ph.getSearchGroups(nextPage, 'page=(%s)[^0-9]' % (page + 1))[0]:
            nextPage = True
        else:
            nextPage = False

        if 'wyszukiwarka?phrase=' in cItem['url']:
            data = self.cm.ph.getDataBeetwenNodes(data, ('<div', '>', 'advanced-search'), ('<footer', '>'))[1]
        else:
            data = self.cm.ph.getDataBeetwenNodes(data, ('<div', '>', 'item-list'), ('<ul', '>'))[1]
        data = self.cm.ph.getAllItemsBeetwenNodes(data, ('<a', '>'), ('</a', '>'))

        for item in data:
#            printDBG("Zaluknij.listItems item %s" % item)
            url = self.getFullUrl(self.cm.ph.getSearchGroups(item, '''href=['"]([^"^']+?)['"]''')[0])
            if url == '':
                continue
            icon = self.getFullIconUrl(self.cm.ph.getSearchGroups(item, '''src=['"]([^"^']+?)['"]''')[0])
            title = unescapeHTML(self.cm.ph.getSearchGroups(item, '''alt=['"]([^"^']+?)['"]''')[0]).encode('UTF-8')
            desc = self.cleanHtmlStr(item)
            if '/serial-online/' in url:
                params = {'good_for_fav': True, 'category': 'list_seasons', 'url': url, 'title': title, 'desc': desc, 'icon': icon}
                self.addDir(params)
            else:
                params = {'good_for_fav': True, 'url': url, 'title': title, 'desc': desc, 'icon': icon}
                self.addVideo(params)

        if nextPage:
            params = dict(cItem)
            params.update({'title': _('Next page'), 'page': page + 1})
            self.addDir(params)
예제 #9
0
    def listSeries(self, cItem):
        printDBG("cda-filmy.listSeries")
        sts, data = self.getPage(cItem['url'])
        if not sts: return
        self.setMainUrl(data.meta['url'])

        data = self.cm.ph.getAllItemsBeetwenNodes(data, ('<div', '>', 'Wdgt AABox'), ('</table', '>'))
        for sitem in data:
            season = self.cleanHtmlStr(self.cm.ph.getDataBeetwenNodes(sitem, ('<div', '>', 'Title AA-Season'), ('</div', '>'))[1])
            tmp = self.cm.ph.getDataBeetwenMarkers(sitem, '<table>', '</tbody>')[1]
            tmp = self.cm.ph.getAllItemsBeetwenNodes(sitem, ('<tr', '>'), ('</tr', '>'))
            for item in tmp:
#                item = unescapeHTML(item)
                printDBG("cda-filmy.listSeries item %s" % item)
                url = self.getFullUrl(self.cm.ph.getSearchGroups(item, '''href=['"]([^"^']+?)['"]''')[0])
                if url == '': continue
                icon = self.getFullIconUrl(self.cm.ph.getSearchGroups(unescapeHTML(item), '''src=['"]([^"^']+?)['"]''')[0])
                title = season + ' - ' + self.cleanHtmlStr(self.cm.ph.getDataBeetwenNodes(item, ('<td', '>', 'MvTbTtl'), ('</td', '>'))[1])
                params = {'good_for_fav':True, 'url':url, 'title':title, 'icon':icon}
                self.addVideo(params)
예제 #10
0
    def getVideosFromChannelList(self, url, category, page):
        printDBG('YouTubeParser.getVideosFromChannelList page[%s]' % (page))
        currList = []
        #try:
        if 1:
            sts, data = self.cm.getPage(url, {'host': self.HOST})
            if sts:
                if '1' == page:
                    sts, data = CParsingHelper.getDataBeetwenMarkers(
                        data, 'video-page-content', 'footer-container', False)
                else:
                    data = unescapeHTML(
                        data.decode('unicode-escape')).encode('utf-8').replace(
                            '\/', '/')

                # nextPage
                match = re.search('data-uix-load-more-href="([^"]+?)"', data)
                if not match: nextPage = ""
                else: nextPage = match.group(1).replace('&amp;', '&')

                data = data.split('context-data-item')
                currList = self.parseListBase(data)

                if '' != nextPage:
                    item = {
                        'type': 'category',
                        'category': category,
                        'title': 'Następna strona',
                        'page': str(int(page) + 1),
                        'url': 'http://www.youtube.com' + nextPage
                    }
                    currList.append(item)
        #except:
        else:
            printDBG('YouTubeParser.getVideosFromChannelList Exception')
            return []
        return currList
예제 #11
0
    def listItems(self, cItem):
        printDBG("Zaluknij.listItems %s" % cItem)
        page = cItem.get('page', 1)

        url = cItem['url']
        if page > 1:
            url = url + '/page/{0}'.format(page)
        sts, data = self.getPage(url)
        if not sts:
            return
        self.setMainUrl(data.meta['url'])

        nextPage = self.cm.ph.getDataBeetwenNodes(data,
                                                  ('<div', '>', 'pagination'),
                                                  ('</div', '>'))[1]
        if '' != self.cm.ph.getSearchGroups(nextPage, 'page/(%s)[^0-9]' %
                                            (page + 1))[0]:
            nextPage = True
        else:
            nextPage = False

        if 'tvshows' in cItem['url']:
            data = self.cm.ph.getDataBeetwenNodes(
                data, ('<div', '>', 'archive-content'),
                ('<div', '>', 'pagination'))[1]

        if '?s=' in cItem['url']:
            data = self.cm.ph.getAllItemsBeetwenNodes(data, ('<article', '>'),
                                                      ('</article', '>'))
        else:
            data = self.cm.ph.getAllItemsBeetwenNodes(
                data, ('<article', '>', 'item'), ('</article', '>'))

        for item in data:
            #            printDBG("Zaluknij.listItems item %s" % item)
            url = self.getFullUrl(
                self.cm.ph.getSearchGroups(item,
                                           '''href=['"]([^"^']+?)['"]''')[0])
            if url == '':
                continue
            icon = self.getFullIconUrl(
                self.cm.ph.getSearchGroups(item,
                                           '''src=['"]([^"^']+?)['"]''')[0])
            title = unescapeHTML(
                self.cm.ph.getSearchGroups(
                    item, '''alt=['"]([^"^']+?)['"]''')[0]).encode('UTF-8')
            desc = self.cleanHtmlStr(item)
            if '/tvshows/' in url:
                params = {
                    'good_for_fav': True,
                    'category': 'list_seasons',
                    'url': url,
                    'title': title,
                    'desc': desc,
                    'icon': icon
                }
                self.addDir(params)
            else:
                params = {
                    'good_for_fav': True,
                    'url': url,
                    'title': title,
                    'desc': desc,
                    'icon': icon
                }
                self.addVideo(params)

        if nextPage:
            params = dict(cItem)
            params.update({'title': _('Next page'), 'page': page + 1})
            self.addDir(params)
예제 #12
0
    def listItems(self, cItem):
        printDBG("Dudeplayer.listItems [%s]" % cItem)
        page = cItem.get('page', 1)

        cUrl = cItem['url']
        if page > 1:
            cUrl = cUrl + '/page/{0}'.format(page)
        sts, data = self.getPage(cUrl)
        if not sts:
            return
        self.setMainUrl(data.meta['url'])
        printDBG("Dudeplayer.listMovieFilters data [%s]" % data)

        while '/blockscript/detector.php' in data:
            captchaTitle = self.cm.ph.getAllItemsBeetwenMarkers(data, '<h3', '</h3>')

            if len(captchaTitle):
                captchaTitle = self.cleanHtmlStr(captchaTitle[-1])

            # parse form data
            data = self.cm.ph.getDataBeetwenMarkers(data, '<form', '</form>')[1]
            jscode = self.cm.ph.getDataBeetwenNodes(data, ('<script', '>'), ('</script', '>'), False)[1]
            jscode = jscode.replace('document.writeln', 't=') + 'console.log(t)'
            ret = js_execute(jscode)
            if ret['sts'] and 0 == ret['code']:
                imgUrl = self.getFullUrl(self.cm.ph.getSearchGroups(ret['data'], '''src=['"]([^"^']+?)['"]''')[0])
            actionUrl = self.getFullUrl(self.cm.ph.getSearchGroups(data, 'action="([^"]+?)"')[0], cUrl)
            tmp = self.cm.ph.getAllItemsBeetwenMarkers(data, '<input type="hidden"', '>')
            captcha_post_data = {}
            for it in tmp:
                val = self.cm.ph.getSearchGroups(it, '''\svalue=['"]?([^'^"^\s]+?)['"\s]''')[0].strip()
                name = self.cm.ph.getSearchGroups(it, '''\sname=['"]([^'^"]+?)['"]''')[0]
                captcha_post_data[name] = val

            params = dict(self.defaultParams)
            filePath = GetTmpDir('.iptvplayer_captcha.jpg')
            rm(filePath)
            ret = self.cm.saveWebFile(filePath, imgUrl.replace('&amp;', '&'), params)
            if not ret.get('sts'):
                SetIPTVPlayerLastHostError(_('Fail to get "%s".') % imgUrl)
            params = deepcopy(IPTVMultipleInputBox.DEF_PARAMS)
            params['accep_label'] = _('Send')
            params['title'] = _('Captcha')
            params['status_text'] = captchaTitle
            params['with_accept_button'] = True
            params['list'] = []
            item = deepcopy(IPTVMultipleInputBox.DEF_INPUT_PARAMS)
            item['label_size'] = (160, 75)
            item['input_size'] = (480, 25)
            item['icon_path'] = filePath
            item['title'] = _('Answer')
            item['input']['text'] = ''
            params['list'].append(item)

            ret = 0
            retArg = self.sessionEx.waitForFinishOpen(IPTVMultipleInputBox, params)
            if retArg and len(retArg) and retArg[0]:
                captcha_post_data['val'] = retArg[0][0]
                paramsUrl = dict(self.ajaxParams)
                paramsUrl['header'] = dict(paramsUrl['header'])
                paramsUrl['header']['Referer'] = cUrl
                sts, data = self.cm.getPage(actionUrl, paramsUrl, captcha_post_data)

        nextPage = self.cm.ph.getDataBeetwenNodes(data, ('<div', '>', 'pagination'), ('</div', '>'))[1]
        if '' != self.cm.ph.getSearchGroups(nextPage, 'page/(%s)[^0-9]' % (page + 1))[0]:
            nextPage = True
        else:
            nextPage = False

        if '?s=' in cItem['url']:
            data = self.cm.ph.getAllItemsBeetwenNodes(data, ('<article', '>'), ('</article', '>'))
        else:
            data = self.cm.ph.getAllItemsBeetwenNodes(data, ('<article', '>', 'item'), ('</article', '>'))

        for item in data:
#            printDBG("Dudeplayer.listItems item %s" % item)
            if 'post-featured-' in item:
                continue
            url = self.getFullUrl(self.cm.ph.getSearchGroups(item, '''href=['"]([^"^']+?)['"]''')[0])
            if url == '':
                continue
            icon = self.getFullIconUrl(self.cm.ph.getSearchGroups(item, '''src=['"]([^"^']+?)['"]''')[0])
            title = unescapeHTML(self.cm.ph.getSearchGroups(item, '''alt=['"]([^"^']+?)['"]''')[0]).encode('UTF-8')
            desc = self.cleanHtmlStr(item)
            if '/tvshows/' in url:
                params = {'good_for_fav': True, 'category': 'list_seasons', 'url': url, 'title': title, 'desc': desc, 'icon': icon}
                self.addDir(params)
            else:
                params = {'good_for_fav': True, 'url': url, 'title': title, 'desc': desc, 'icon': icon}
                self.addVideo(params)

        if nextPage:
            params = dict(cItem)
            params.update({'title': _('Next page'), 'page': page + 1})
            self.addDir(params)