def exploreItem(self, cItem): printDBG("HDFilmeTV.exploreItem") params = MergeDicts(self.defaultParams, {'user-agent': self.USER_AGENT, 'referer': self.MAIN_URL, "accept-encoding" : "gzip", "accept" : "text/html"}) sts, data = self.getPageCF(cItem['url'], params) #printDBG(data) if not sts: return movieId = self.cm.ph.getSearchGroups(data, '''data-movie-id=['"]([^'^"]+?)['"]''')[0] printDBG("movieId ------->" + movieId) trailerUrl = '' linksPageUrl = '' links = re.findall('''<a[^>]*?class="btn btn-xemnow pull-right"[^>]*?href=['"]([^'^"]+?)['"][^>]*?>(.*?)</a>''', data, re.S) for l in links: if 'Trailer' in l[1]: trailerUrl = l[0] elif 'STREAM' in l[1]: linksPageUrl = l[0] # trailer section if trailerUrl: if trailerUrl == "javascript:": # find url in javascript code printDBG("HDFilmeTV.exploreItem. Find trailer url in javascript code") movieData = self.getMovieDatainJS(data) if 'id' in movieData: trailerUrl = self.getTrailerUrlinJS(data, movieData) printDBG("trailerUrl: \"%s\" " % trailerUrl) params['referer'] = movieData['url'] sts, trailer_data = self.getPageCF(trailerUrl, params) if not sts: return #printDBG(data) # find url in iframe #<iframe class="film-screen-content" width="100%" height="100%" frameborder="0" allowfullscreen="" allow="autoplay" src="https://www.youtube.com/embed/JH0WldpM8Hw?autohide=1&fs=1&modestbranding=1&iv_load_policy=3&rel=0&showinfo=0&version=2&hd=0&fs=0&enablejsapi=1&playerapiid=ytplayer&autoplay=1&loop=1"></iframe> tmp = self.cm.ph.getDataBeetwenMarkers(trailer_data, '<iframe', '</iframe>')[1] trailerUrl = self.cm.ph.getSearchGroups(tmp, '''src=['"]([^'^"]+?)['"]''')[0] params = dict(cItem) params.update({'good_for_fav': False, 'title':'%s [%s]' % (cItem['title'], _('Trailer')), 'urls':[{'name':'trailer', 'url': strwithmeta(trailerUrl.replace('&', '&'), {'trailer': 1}), 'need_resolve':1}]}) self.addVideo(params) else: trailerUrl = self.getFullUrl(trailerUrl) params = dict(cItem) params.update({'good_for_fav': False, 'title':'%s [%s]' % (cItem['title'], _('Trailer')), 'urls':[{'name':'trailer', 'url' : strwithmeta(trailerUrl.replace('&', '&'), {'trailer': 1}), 'need_resolve':1}]}) self.addVideo(params) # find links page url # example #<a title="The Ranch staffel 4 Stream" class="btn btn-xemnow pull-right" style="margin-left:5px" href="https://hdfilme.cc/the-ranch-staffel-4-13803-stream/folge-1"> printDBG("HDFilmeTV.exploreItem. Find url of page with links - often url + '/deutsch' ") sts, linkspage_data = self.getPageCF(linksPageUrl, params) if not sts: return #printDBG(data) #printDBG(">>>>>>>>>>>>>>>>>>>>>>>>") episodesTab = [] episodesLinks = {} data=[] parts = self.cm.ph.getAllItemsBeetwenMarkers(linkspage_data, '<section class="box">', '</section>') for part in parts: data_part = self.cm.ph.getAllItemsBeetwenMarkers(part, '<i class="fa fa-chevron-right">', '</ul>') #'<ul class="list-inline list-film"' if data_part: data.extend(data_part) for server in data: serverName = self.cleanHtmlStr( self.cm.ph.getDataBeetwenMarkers(server, '<i ', '</div>')[1] ) serverData = ph.findall(server, '<li>', '</li>') for link in serverData: #printDBG("----->" + link) episodeName = self.cleanHtmlStr( link ) episodeUrl = self.getFullUrl( self.cm.ph.getSearchGroups(link, '''href=['"]([^'^"]+?)['"]''')[0] ) episodeId = self.cm.ph.getSearchGroups(link, '''data-episode-id=['"]([^'^"]+?)['"]''')[0] if not episodeUrl.startswith('http'): continue if episodeName not in episodesTab: episodesTab.append(episodeName) episodesLinks[episodeName] = [] params={'name':serverName, 'url': strwithmeta(episodeUrl.replace('&', '&'), {'episodeId':episodeId, 'movieId': movieId}) , 'need_resolve':1} #printDBG("------------->" + str(params)) episodesLinks[episodeName].append(params) baseTitleReObj = re.compile('''staffel\s*[0-9]+?$''', flags=re.IGNORECASE) baseTitle = cItem['title'] season = self.cm.ph.getSearchGroups(cItem['url'], '''staf[f]+?el-([0-9]+?)-''')[0] if season == '': season = self.cm.ph.getSearchGroups(baseTitle, '''staffel\s*([0-9]+?)$''', ignoreCase=True)[0] if season != '': baseTitle = baseTitleReObj.sub('', baseTitle, 1).strip() try: episodesTab.sort(key=lambda item: self.c_int(item)) except Exception: printExc() for episode in episodesTab: title = baseTitle if season != '': title += ': ' + 's%se%s'% (season.zfill(2), episode.zfill(2)) elif len(episodesTab) > 1: title += ': ' + 'e%s'% (episode.zfill(2)) params = dict(cItem) params.update({'good_for_fav': False, 'title':title, 'urls': episodesLinks[episode]}) self.addVideo(params)
def exploreItem(self, cItem): printDBG("VidCorn.exploreItem") self.cacheLinks = {} if not self.loggedIn: self.sessionEx.open(MessageBox, 'Debes iniciar sesión para ver los enlaces.', type=MessageBox.TYPE_ERROR, timeout=10) sts, data = self.getPage(cItem['url']) if not sts: return cUrl = self.getFullUrl(self.cm.meta['url']) self.setMainUrl(cUrl) desc = [] descObj = self.getArticleContent(cItem, data)[0] for item in descObj['other_info']['custom_items_list']: desc.append(item[1]) desc = ' | '.join(desc) + '[/br]' + descObj['text'] trailer = self.cm.ph.getDataBeetwenNodes(data, ('<div', '>', 'trailer'), ('<button', '>', 'onclick'), False)[1] printDBG(trailer) title = self.cleanHtmlStr(trailer) trailer = self.getFullUrl( self.cm.ph.getSearchGroups( trailer, '''<iframe[^>]+?src=['"]([^"^']+?)["']''', 1, True)[0], cUrl) if trailer: params = dict(cItem) params.update({ 'good_for_fav': False, 'title': title, 'url': strwithmeta(trailer, {'Referer': cUrl}), 'desc': desc, 'prev_url': cUrl }) self.addVideo(params) movieId = self.cm.ph.getSearchGroups( data, '''data\-movie\-id=['"]([^"^']+?)["']''', 1, True)[0] if not movieId: return url = self.getFullUrl('/services/fetch_links') sts, data = self.getPage(url, post_data={ 'movie': movieId, 'data_type': cItem['f_type'] }) if not sts: return linksTab = self._getLinks(cUrl, data) if len(linksTab): self.cacheLinks[cUrl] = linksTab params = dict(cItem) params.update({ 'good_for_fav': False, 'url': cUrl, 'desc': desc, 'prev_url': cUrl }) self.addVideo(params) else: data = self.cm.ph.rgetAllItemsBeetwenNodes( data, ('</div', '>'), ('<a', '>', 'data-season')) for seasonData in data: episodes = [] sTitle = self.cleanHtmlStr( self.cm.ph.getDataBeetwenMarkers(seasonData, '<h4', '</h4>')[1]) sNum = self.cm.ph.getSearchGroups( seasonData, '''data\-season=['"]([^"^']+?)["']''', 1, True)[0] seasonData = self.cm.ph.getAllItemsBeetwenNodes( seasonData.split('panel-body', 1)[-1], ('<a', '>', '#temporada'), ('</a', '>')) for item in seasonData: episodeId = self.cm.ph.getSearchGroups( item, '''data\-episodio=['"]([^"^']+?)["']''', 1, True)[0] url = cItem['url'] + self.cm.ph.getSearchGroups( item, '''href=['"](#[^"^']+?)["']''', 1, True)[0] tab = [] tmp = self.cm.ph.getAllItemsBeetwenMarkers( item, '<span', '</span>') for t in tmp: t = self.cleanHtmlStr(t) if t: tab.append(t) if len(tab): eNum = tab[0] else: eNum = url.rsplit('-', 1)[-1] if len(tab) > 1: title = tab[1] else: title = '' #desc = ' | '.join(tab[2:]) tab = [] tmp = self.cm.ph.getAllItemsBeetwenMarkers( item, '<small', '</small>') for t in tmp: t = self.cleanHtmlStr(t) if t: tab.append(t) #desc += '[/br]' + ' | '.join(tab) title = '%s: s%se%s %s' % (cItem['title'], sNum.zfill(2), eNum.zfill(2), title) params = MergeDicts( cItem, { 'good_for_fav': False, 'type': 'video', 'title': title, 'url': url, 'episode_id': episodeId, 'desc': desc, 'prev_url': cUrl }) episodes.append(params) if len(episodes): params = dict(cItem) params.update({ 'good_for_fav': False, 'category': 'sub_items', 'title': sTitle, 'sub_items': episodes, 'prev_url': cUrl, 'desc': desc }) self.addDir(params)
def listItems(self, cItem, nextCategory): nextPage = False try: tuhe = cItem['url'] page = cItem.get('page', 1) tumd = cItem['md'] if tuhe != '': tuhe = tuhe + '/oldal/' + str(page) sts, data = self.cm.getPage(tuhe, self.defaultParams) if not sts: return if len(data) == 0: return Pgntr = self.cm.ph.getDataBeetwenMarkers( data, '<div class="blog-pagenat-wthree">', '</div>')[1] if 'Következő' in Pgntr: nextPage = True else: nextPage = False data = self.cm.ph.getAllItemsBeetwenMarkers( data, "<div class='col-md-2 w3l-movie-gride-agile'", "div class='clearfix'>") if len(data) == 0: return for item in data: url = self.getFullUrl( self.cm.ph.getSearchGroups( item, 'href=[\'"]([^"^\']+?)[\'"]')[0]) if not self.cm.isValidUrl(url): continue title = self.cm.ph.getSearchGroups( item, '<a title=[\'"]([^"^\']+?)[\'"]')[0].strip() if title == '': continue icon = self.cm.ph.getSearchGroups( item, 'src=[\'"]([^"^\']+?)[\'"]')[0].strip() tmp_ny = self.cm.ph.getDataBeetwenMarkers( item, '<img src=', '>')[1] nyelv = self.cm.ph.getSearchGroups( tmp_ny, 'title=[\'"]([^"^\']+?)[\'"]')[0].strip() if nyelv == '': nyelv = ' ' kev = self.cm.ph.getDataBeetwenMarkers( item, "<div class='mid-2'>(", ")<", False)[1] if kev == '': kev = ' ' desc = nyelv + '\nKiadás éve: ' + kev params = MergeDicts( cItem, { 'category': nextCategory, 'title': title, 'url': url, 'desc': desc, 'icon': icon, 'nylv': nyelv, 'md': tumd }) self.addDir(params) if nextPage and len(self.currList) > 0: params = dict(cItem) params.update({ 'title': _("Next page"), 'page': page + 1, 'desc': 'Nyugi...\nVan még további tartalom, lapozz tovább!!!' }) self.addDir(params) except Exception: return
def listItems(self, cItem, nextCategory): printDBG("HDFilmeTV.listItems") itemsPerPage = 50 page = cItem.get('page', 1) url = cItem['url'] params = MergeDicts( self.defaultParams, { 'header': { 'User-Agent': self.USER_AGENT, "Accept-Encoding": "gzip", "Accept": "text/html", "content-length": "14", "content-type": "application/x-www-form-urlencoded; charset=UTF-8", "Origin": self.MAIN_URL, "Referer": url, "x-requested-with": "XMLHttpRequest" } }) query = {} if 'search_pattern' in cItem: query = {'key': cItem['search_pattern'], 'page': page} else: query = { 'page': page, 'category': cItem['genre'], 'country': cItem['country'], 'sort': cItem['sort'], 'sort_type': cItem['sort_type'] } url += "?" + urllib.urlencode(query) sts, data = self.getPageCF(url, params, post_data={'load': 'full-page'}) #printDBG(data) if not sts: return nextPage = self.cm.ph.getDataBeetwenMarkers(data, '<ul class="pagination', '</ul>', False)[1] if 'data-page="{0}"'.format(page + 1) in nextPage: #printDBG("Next page found!") nextPage = True else: nextPage = False numOfItems = 0 data = self.cm.ph.getDataBeetwenMarkers(data, '<ul class="products row">', '</ul>')[1] data = ph.findall(data, '<li>', '</li>') #printDBG(str(data)) for item in data: # icon icon = self.cm.ph.getSearchGroups( item, '''data-src=['"]([^'^"]+?)['"]''')[0] if icon == '': icon = cItem['icon'] # url url = self.cm.ph.getSearchGroups(item, '''href=['"]([^'^"]+?)['"]''')[0] if url == '': continue #title title = self.cleanHtmlStr( self.cm.ph.getDataBeetwenMarkers( item, '<div class="title-product">', '</div>')[1]) if title == '': title = self.cleanHtmlStr( self.cm.ph.getDataBeetwenMarkers(item, '<h3 ', '</h3>')[1]) #desc desc = self.cleanHtmlStr(item) params = dict(cItem) params.update({ 'good_for_fav': True, 'category': nextCategory, 'title': title, 'url': self.getFullUrl(url), 'icon': self.getIconUrl(icon), 'desc': desc }) #printDBG("----> movie item ------> " + str(params)) self.addDir(params) numOfItems += 1 if nextPage or numOfItems >= itemsPerPage: params = dict(cItem) params.update({ 'good_for_fav': False, 'title': _('Next page'), 'page': (page + 1) }) self.addMore(params)
def listItems(self, cItem, nextCategory): url = cItem['url'] page = cItem.get('page', 1) sort = cItem.get('f_sort', '') query = '' if cItem.get('use_query', False): url = self.getFullUrl('/kereses/') query += 'search_type=%s&' % cItem.get('f_search_type', '0') query += 'search_where=%s&' % cItem.get('f_search_where', '0') query += 'search_rating_start=%s&search_rating_end=10&' % cItem.get('f_search_rating_start', '1') query += 'search_year_from=%s&search_year_to=%s&' % (cItem.get('f_year', '1900'), cItem.get('f_year', '2090')) if 'f_search_sync_' in cItem: query += 'search_sync_%s=%s&' % (cItem['f_search_sync_'], cItem['f_search_sync_']) if 'f_search_categ_' in cItem: query += 'search_categ_%s=%s&' % (cItem['f_search_categ_'], cItem['f_search_categ_']) if 'f_search_qual_' in cItem: query += 'search_qual_%s=%s&' % (cItem['f_search_qual_'], cItem['f_search_qual_']) if 'f_search_share_' in cItem: query += 'search_share_%s=%s&' % (cItem['f_search_share_'], cItem['f_search_share_']) if query.endswith('&'): query = query[:-1] printDBG('>>> query[%s]' % query) if not url.endswith('/'): url += '/' if sort != '': url += sort + '/' if query != '': url += base64.b64encode(query) if page > 1: url += '?page=%s' % page sts, data = self.getPage(url) if not sts: return nextPage = self.cm.ph.getDataBeetwenMarkers(data, 'pagination', '</ul>')[1] if '' != self.cm.ph.getSearchGroups(nextPage, 'page=(%s)[^0-9]' % (page+1))[0]: nextPage = True else: nextPage = False data = self.cm.ph.getDataBeetwenMarkers(data, '<ul class="small-block-grid', '</ul>')[1] data = self.cm.ph.getAllItemsBeetwenMarkers(data, '<li', '</li>') reFlagObj = re.compile('''<img[^>]+?src=['"][^"^']+?/([^/]+?)\.png['"]''') for item in data: url = self.getFullUrl( self.cm.ph.getSearchGroups(item, '''href=['"]([^"^']+?)['"]''')[0] ) if not self.cm.isValidUrl(url): continue icon = self.getFullIconUrl( self.cm.ph.getSearchGroups(item, '''data-original=['"]([^"^']+?\.jpe?g)''')[0] ) title = self.cleanHtmlStr( self.cm.ph.getDataBeetwenMarkers(item, '<strong', '</strong>')[1] ) if title == '': title = self.cleanHtmlStr( self.cm.ph.getDataBeetwenMarkers(item, '<h2', '</h2>')[1] ) # desc start descTab = [] tmp = self.cm.ph.getDataBeetwenMarkers(item, '</strong>', '</div>')[1] flags = reFlagObj.findall(tmp) if len(flags): descTab.append(' | '.join(flags)) tmp = tmp.split('<br>') for t in tmp: t = self.cleanHtmlStr(t) if t == '': continue descTab.append(t) ###### params = MergeDicts(cItem, {'good_for_fav': True, 'category':nextCategory, 'title':title, 'url':url, 'desc':'[/br]'.join(descTab), 'icon':icon}) self.addDir(params) if nextPage and len(self.currList) > 0: params = dict(cItem) params.update({'title':_("Next page"), 'page':page+1, 'desc':'Nyugi...\nVan még további tartalom, lapozz tovább!!!'}) self.addDir(params)
def listMainMenu(self, cItem): printDBG("GuardaSerieClick.listMainMenu") params = MergeDicts( self.defaultParams, { 'user-agent': self.USER_AGENT, 'referer': self.MAIN_URL, "accept-encoding": "gzip", "accept": "text/html" }) sts, data = self.getPageCF(self.getMainUrl(), params) if not sts: return self.setMainUrl(self.cm.meta['url']) #item = self.cm.ph.getDataBeetwenNodes(data, ('<a', '>', 'lista-serie'), ('</a', '>'))[1] #title = self.cleanHtmlStr(item) #url = self.getFullUrl(self.cm.ph.getSearchGroups(item, '''href=['"]([^"^']+?)['"]''')[0]) params = dict(cItem) #params.update({'name':'category', 'category':'sections', 'title':title, 'url':url}) params.update({ 'name': 'category', 'category': 'sections', 'title': 'LISTA SERIE', 'url': self.getFullUrl('/lista-serie-tv') }) self.addDir(params) data = self.cm.ph.getDataBeetwenNodes(data, ('<a', '>', 'dropdown'), ('</ul', '>'))[1].split( '<ul', 1) sTitle = self.cleanHtmlStr(data[0]) subtItems = [] data = self.cm.ph.getAllItemsBeetwenMarkers(data[-1], '<a', '</a>') for item in data: url = self.getFullUrl( self.cm.ph.getSearchGroups(item, '''href=['"]([^"^']+?)['"]''')[0]) title = self.cleanHtmlStr(item) params = dict(cItem) params.update({ 'name': 'category', 'category': 'list_items', 'title': title, 'url': url }) subtItems.append(params) params = dict(cItem) params.update({ 'name': 'category', 'category': 'sub_items', 'sub_items': subtItems, 'title': sTitle }) self.addDir(params) MAIN_CAT_TAB = [{ 'category': 'search', 'title': _('Search'), 'search_item': True }, { 'category': 'search_history', 'title': _('Search history') }] self.listsTab(MAIN_CAT_TAB, cItem)
def listItems(self, cItem, nextCategory1, nextCategory2): printDBG("CartoonHD.listItems") page = cItem.get('page', 1) if page == 1: url = cItem['url'] + '/' + cItem.get('sort_by', '') + '/' + str(page) else: url = cItem['url'] params = dict(self.defaultParams) params['header'] = self.AJAX_HEADER sts, data = self.cm.getPage(url, params) if not sts: return nextPage = self.cm.ph.getDataBeetwenNodes( data, ('<a', '>', 'next-page-button'), ('</a', '>'))[1] nextPage = self.getFullUrl( self.cm.ph.getSearchGroups(nextPage, '''href=["']([^"^']+?)['"]''')[0]) data = self.cm.ph.getDataBeetwenMarkers(data, '<div class="flipBox"', '</main>', True)[1] data = data.split('</section>') if len(data): del data[-1] for item in data: icon = self.getFullUrl( self.cm.ph.getSearchGroups(item, 'src="([^"]+?\.jpg[^"]*?)"')[0]) desc = 'IMDb ' + self.cm.ph.getSearchGroups( item, '>([ 0-9.]+?)<')[0] + ', ' desc += self.cleanHtmlStr(' '.join( self.cm.ph.getAllItemsBeetwenMarkers(item, '<p>', '</p>', False))) tmp = self.cm.ph.rgetAllItemsBeetwenMarkers( item, '</a>', '<a', True) url = '' for t in tmp: if url == '': url = self.getFullUrl( self.cm.ph.getSearchGroups( t, '''href=["']([^"^']+?)['"]''')[0]) title = self.cleanHtmlStr(t) if title != '': break if url.startswith('http'): params = MergeDicts( cItem, { 'good_for_fav': True, 'title': title, 'url': url, 'desc': desc, 'icon': icon }) if '/series/' in url and '/episode/' not in url: params['category'] = nextCategory2 else: params['category'] = nextCategory1 self.addDir(params) if nextPage != '': params = dict(cItem) params.update({ 'title': _("Next page"), 'url': nextPage, 'page': page + 1 }) self.addDir(params)
def listItems(self, cItem, nextCategory): nextPage = False link_tmb = {} try: tuhe = cItem['url'] page = cItem.get('page', 1) tumd = cItem['md'] if tuhe != '': tuhe = tuhe + '&page=' + str(page) sts, data = self.cm.getPage(tuhe) if not sts: return if len(data) == 0: return data = json_loads(data) if len(data) > 0: pg = int(data['page']) ppg = int(data['perPage']) titms = data['totalItems'] if titms > pg * ppg: nextPage = True dtitms = data.get('items', []) if len(dtitms) > 0: for item in dtitms: id = item['id'] if id == '': continue title = item['title'] if title == '': continue leiras = item['plot'] if leiras != '': leiras_rov = re.sub( r'^(.{400}).*$', '\g<1>...', leiras.replace('\n', '').strip()) else: leiras_rov = ' ' link_nyelv = item['link_nyelv'] if link_nyelv == None: link_nyelv = ' ' imdb_rating = item['imdb_rating'] if imdb_rating == None: imdb_rating = ' ' runtime = item['runtime'] if runtime == None: runtime = ' ' views = item['views'] if views == None: views = 1 release_date = item['release_date'] if release_date == None: release_date = ' ' genre = item['genre'] if genre == None: genre = ' ' icon = item['poster'] desc = link_nyelv + '\nMűfaj: ' + genre + '\nKiadási dátum: ' + release_date + ' | Hossz: ' + runtime + ' | Nézettség: ' + str( views ) + ' | IMDB pont: ' + imdb_rating + '\n\n' + leiras_rov if tumd == 'series': furl = zlib.decompress( base64.b64decode( 'eJzLKCkpKLbS10/LzMlNz9dLTtbPz8vJzEvVLc4vyq9KLMnP1gcA634NOg==' )) + str(id) + '-' params = MergeDicts( cItem, { 'category': 'list_evad', 'id': id, 'title': title, 'url': furl, 'desc': desc, 'icon': icon, 'leiras': leiras }) else: furl = zlib.decompress( base64.b64decode( 'eJzLKCkpKLbS10/LzMlNz9dLTtbPz8vJzEvVBQmkZusDAMOEC8Y=' )) + str(id) + '-' params = MergeDicts( cItem, { 'category': nextCategory, 'id': id, 'title': title, 'url': furl, 'desc': desc, 'icon': icon, 'leiras': leiras }) self.addDir(params) if nextPage and len(self.currList) > 0: params = dict(cItem) params.update({ 'title': _("Next page"), 'page': page + 1, 'desc': 'Nyugi...\nVan még további tartalom, lapozz tovább!!!' }) self.addDir(params) except Exception: return