diff --git a/channels.json b/channels.json index fd24875f..1fec6e20 100644 --- a/channels.json +++ b/channels.json @@ -42,7 +42,7 @@ "hd4me": "https://hd4me.net", "ilgeniodellostreaming": "https://ilgeniodellostreaming.pet", "ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.gold", - "italiaserie": "https://italiaserie.eu", + "italiaserie": "https://italiaserie.run", "mondoserietv": "https://mondoserietv.fun", "piratestreaming": "https://www.piratestreaming.deals", "polpotv": "https://polpotv.life", diff --git a/channels/guardaserieicu.py b/channels/guardaserieicu.py index c92a0a42..4d60f951 100644 --- a/channels/guardaserieicu.py +++ b/channels/guardaserieicu.py @@ -28,7 +28,7 @@ def mainlist(item): @support.scrape def peliculas(item): patronBlock = r'movies-list movies-list-full(?P.*?)footer>' - patron = r'
]+> ]+>[^>]+>[^>]+>(?P[^<]+).*?jt-info[^>]+>[^:]+:\s*(?P<rating>[^<]+).*?rel="tag">(?P<year>\d+).*?jt-info">(?P<duration>\d+)' + patron = r'<div data-movie-id[^>]+>\s*<a href="(?P<url>[^"]+)"[^>]+>[^>]+>[^>]+><img src="(?P<thumbnail>[^"]+)[^>]+>[^>]+>[^>]+>[^>]+>(?P<title>[^<]+).*?jt-info[^>]+>[^:]+:\s*(?P<rating>[^<]+)[^>]+>[^>]+>[^>]+>(?P<year>\d*)[^>]+>[^>]+>[^>]+>(?P<duration>\d*)' patronNext = '<li class=.active.>.*?href=.(.*?).>' action = 'episodios' return locals() diff --git a/channels/italiaserie.py b/channels/italiaserie.py index b56d643b..e7a75716 100644 --- a/channels/italiaserie.py +++ b/channels/italiaserie.py @@ -2,22 +2,11 @@ # ------------------------------------------------------------ # Canale per italiaserie # ------------------------------------------------------------ -""" - - Problemi noti che non superano il test del canale: - Avvisi: - - - Ulteriori info: - -""" - -import re from core import support, httptools, scrapertools from core.item import Item -from platformcode import config +from platformcode import config, logger host = config.get_channel_url() headers = [['Referer', host]] @@ -25,11 +14,11 @@ headers = [['Referer', host]] @support.menu def mainlist(item): - support.info() - - tvshow = ['/category/serie-tv/', - ('Aggiornamenti', ['/ultimi-episodi/', 'peliculas', 'update']), - ('Generi', ['', 'category', 'Serie-Tv per Genere']) + tvshow = ['', + ('Aggiornamenti', ['/aggiornamento-episodi/', 'peliculas', 'update']), + ('Top 10', ['/top-10', 'peliculas', 'top']), + ('Netflix {tv submenu}', ['/genere/netflix', 'peliculas']), + ('A-Z', ['/lista-completa', 'peliculas', 'a-z']) ] return locals() @@ -37,44 +26,46 @@ def mainlist(item): @support.scrape def peliculas(item): - support.info() - action = 'episodios' - patron = r'<div class="post-thumb">\s*<a href="(?P<url>[^"]+)" '\ - 'title="(?P<title>[^"]+)">\s*<img src="(?P<thumb>[^"]+)"[^>]+>' + patron = r'<div class="post-thumb">\s*<a href="(?P<url>[^"]+)" title="(?P<title>[^"\[]+)[^>]+>\s*<img src="(?P<thumb>[^"]+)"[^>]+>' if item.args == 'update': - patron += r'.*?aj-eps">(?P<episode>.+?)[ ]?(?P<lang>Sub-Ita|Ita)</span>' + pagination = '' + patron = r'br />(?P<title>[^–]+)[^<]+<a href="(?P<url>[^"]+)">(?P<episode>[^ ]+)\s*(?P<title2>[^\(<]+)(?:\((?P<lang>[^\)]+))??' action = 'findvideos' + if item.args == 'top': + patron = r'<a href="(?P<url>[^"]+)">(?P<title>[^<]+)</a>[^>]+>[^>]+>[^>]+><img.*?src="(?P<thumb>[^"]+)"[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>:\s*(?P<rating>[^/]+)' + if item.args =='a-z': + pagination = '' + patron = r'<li ><a href="(?P<url>[^"]+)" title="(?P<title>[^"]+)"' patronNext = r'<a class="next page-numbers" href="(.*?)">' -## debug = True + def itemHook(item): + item.title = support.re.sub(r'<[^>]+>','', item.title) + return item + return locals() @support.scrape def episodios(item): - support.info() + res = support.match(item, patron=r'<a href="([^"]+)">>') + if res.match: data = support.match(res.match).data + else: data = res.data - patronBlock = r'</i> Stagione (?P<block>(?P<season>\d+)</div> '\ - '<div class="su-spoiler-content".*?)<div class="clearfix">' - patron = r'(?:(?P<season>\d+)?</div> <div class="su-spoiler-content"(:?.+?)?> )?'\ - '<div class="su-link-ep">\s+<a.*?href="(?P<url>[^"]+)".*?strong>[ ]'\ - '(?P<title>.+?)[ ](?P<episode>\d+-\d+|\d+)[ ](?:-\s+(?P<title2>.+?))?'\ - '[ ]?(?:(?P<lang>Sub-ITA))?[ ]?</strong>' + patronBlock = r'(?:Stagione|STAGIONE)\s*(?P<lang>[^<]+)?(?:</p>)?(?P<block>.*?)</p>' + patron = r'(?:p>|/>)(?P<title>[^–]+)–(?P<data>.*?)(?:<br|$)' - - #debug = True + def itemHook(item): + item.title = support.re.sub('<[^>]+>','', item.title) + return item return locals() @support.scrape def category(item): - support.info() - action = 'peliculas' patron = r'<li class="cat-item.*?href="(?P<url>[^"]+)".*?>(?P<title>.*?)</a>' - return locals() @@ -111,41 +102,28 @@ def newest(categoria): except: import sys for line in sys.exc_info(): - support.info("{0}".format(line)) + logger.error("{0}".format(line)) return [] return itemlist def findvideos(item): - support.info() + logger.debug() if item.args == 'update': itemlist = [] item.infoLabels['mediatype'] = 'episode' - data = httptools.downloadpage(item.url, headers=headers).data - data = re.sub('\n|\t', ' ', data) - data = re.sub(r'>\s+<', '> <', data) - url_video = scrapertools.find_single_match(data, r'<a rel="[^"]+" target="[^"]+" act="[^"]+"\s+href="([^"]+)" class="[^"]+-link".+?\d+.+?</strong> </a>', -1) - url_serie = scrapertools.find_single_match(data, r'<link rel="canonical" href="([^"]+)" />') + data = support.match(item.url, headers=headers).data + url_video = support.match(data, patron=r'<a rel="[^"]+" target="[^"]+" act="[^"]+"\s+href="([^"]+)" class="[^"]+-link".+?\d+.+?</strong> </a>').matches + url_serie = support.match(data, patron=r'<link rel="canonical" href="([^"]+)" />').matches goseries = support.typo("Vai alla Serie:", ' bold') series = support.typo(item.contentSerieName, ' bold color kod') itemlist = support.server(item, data=url_video) - itemlist.append( - Item(channel=item.channel, - title=goseries + series, - fulltitle=item.fulltitle, - show=item.show, - contentType='tvshow', - contentSerieName=item.contentSerieName, - url=url_serie, - action='episodios', - contentTitle=item.contentSerieName, - plot = goseries + series + "con tutte le puntate", - )) + itemlist.append(item.clone(title=goseries + series, contentType='tvshow', url=url_serie, action='episodios', plot = goseries + series + "con tutte le puntate")) return itemlist else: - return support.server(item, data=item.url) + return support.server(item, data=item.data)