From e957dd2c726ee284732305cbea5db774caa07d19 Mon Sep 17 00:00:00 2001 From: ilmich Date: Sat, 9 Mar 2024 08:19:05 +0100 Subject: [PATCH] italiafilm: fix channel search --- channels/italiafilm.py | 49 +++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/channels/italiafilm.py b/channels/italiafilm.py index 279a9360..fe5f7cdc 100644 --- a/channels/italiafilm.py +++ b/channels/italiafilm.py @@ -3,8 +3,8 @@ # Canale per 'italifilm' # ------------------------------------------------------------ -from core import support, httptools -from platformcode import config +from core import support, httptools, scrapertools, tmdb +from platformcode import config, logger host = config.get_channel_url() headers = [['Referer', host]] @@ -37,24 +37,43 @@ def list(item): return locals() - -@support.scrape def peliculas(item): - patronBlock = r'
(?P.*?)
' - patron = r'\d+)\)).*?class="[^"]+">[^' - patronNext = r'(?:&rarr|→)' - return locals() + data = httptools.downloadpage(item.url).data + itemlist = [] + for it in support.match(data, patron=[r'
[^"]+)" title="(?P[^"]+)(?:\((?P<year>\d+)\))" class="[^"]+"><img class="lazyload" data-src="(?P<thumb>[^"]+)" alt="[^"]+".*?></a>']).matches: + infoLabels = dict() + infoLabels['title'] = it[1] + infoLabels['mediatype'] = 'movie' + itemlist.append(item.clone(action='findvideos', thumbnail = host + it[3].replace(' ','%20'), title = support.cleantitle(it[1]), url= it[0], infoLabels=infoLabels)) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + if item.args == 'search': + next = support.match(data, patron=['<a name="nextlink".*list_submit\((\d+)\);.*(?:&rarr|→)']).matches + else: + next = support.match(data, patron=['<a href="([^"]+)">(?:&rarr|→)']).matches + + if next: + if item.args == 'search': + item.url = "{}/?{}".format(host, support.urlencode({"story": item.search_text,"do": "search","subaction": "search", "search_start": next[0]})) + else: + item.url = next[0] + support.nextPage(itemlist = itemlist, item = item, next_page=item.url) + + return itemlist -@support.scrape def search(item, text): - actLike = 'peliculas' - support.info('search', text) - data = httptools.downloadpage(item.url, post={"story": text,"do": "search","subaction": "search"}).data - patron = r'<div class="entry-summary.*?<a href="(?P<url>[^"]+)" title="(?P<title>[^"]+)(?:\((?P<year>\d+)\))" class="[^"]+"><img class="lazyload" data-src="(?P<thumb>[^"]+)" alt="[^"]+".*?></a>' - - return locals() + item.args = 'search' + item.url = "{}/?{}".format(host, support.urlencode({"story": text,"do": "search","subaction": "search", "search_start": item.page})) + item.search_text = text + try: + return peliculas(item) + except: + import sys + for line in sys.exc_info(): + logger.error("search except: %s" % line) + return [] #action di default def findvideos(item):