From c44c53bec06739748fb2418896d0a97a8f008d33 Mon Sep 17 00:00:00 2001 From: alfa_addon_10 Date: Sat, 30 Sep 2017 17:24:45 +0200 Subject: [PATCH] fix pagination, revamp channel --- plugin.video.alfa/channels/datoporn.py | 2 +- plugin.video.alfa/channels/seriesyonkis.py | 478 +++++---------------- 2 files changed, 107 insertions(+), 373 deletions(-) diff --git a/plugin.video.alfa/channels/datoporn.py b/plugin.video.alfa/channels/datoporn.py index 1afb3615..a63ebc25 100755 --- a/plugin.video.alfa/channels/datoporn.py +++ b/plugin.video.alfa/channels/datoporn.py @@ -40,7 +40,7 @@ def lista(item): server="datoporn", fanart=scrapedthumbnail.replace("_t.jpg", ".jpg"))) # Extrae la marca de siguiente página - next_page = scrapertools.find_single_match(data, 'Next') + next_page = scrapertools.find_single_match(data, 'Next') if next_page and itemlist: itemlist.append(item.clone(action="lista", title=">> Página Siguiente", url=next_page)) diff --git a/plugin.video.alfa/channels/seriesyonkis.py b/plugin.video.alfa/channels/seriesyonkis.py index 530d1aa2..20c61a64 100755 --- a/plugin.video.alfa/channels/seriesyonkis.py +++ b/plugin.video.alfa/channels/seriesyonkis.py @@ -1,47 +1,82 @@ # -*- coding: utf-8 -*- import re -import urllib -import urllib2 import urlparse +from core import httptools from core import scrapertools from core import servertools from core.item import Item from platformcode import config, logger +host = 'https://yonkis.to' + def mainlist(item): logger.info() - itemlist = [] - itemlist.append(Item(channel=item.channel, action="listalfabetico", title="Listado alfabetico", - url="http://www.seriesyonkis.sx", - fanart=item.fanart)) - itemlist.append(Item(channel=item.channel, action="mostviewed", title="Series más vistas", - url="http://www.seriesyonkis.sx/series-mas-vistas", - fanart=item.fanart)) - itemlist.append( - Item(channel=item.channel, action="search", title="Buscar", url="http://www.seriesyonkis.sx/buscar/serie", - fanart=item.fanart)) + itemlist = list() + itemlist.append(Item(channel=item.channel, action="alfabetico", title="Listado alfabetico", url=host)) + itemlist.append(Item(channel=item.channel, action="mas_vistas", title="Series más vistas", + url=host + "/series-mas-vistas")) + itemlist.append(Item(channel=item.channel, action="ultimos", title="Últimos episodios añadidos", + url=host)) + itemlist.append(Item(channel=item.channel, action="search", title="Buscar", url=host + "/buscar/serie")) return itemlist -def search(item, texto, categoria="*"): +def alfabetico(item): logger.info() + + itemlist = list() + + itemlist.append(Item(channel=item.channel, action="series", title="0-9", url=host + "/lista-de-series/0-9")) + for letra in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': + itemlist.append(Item(channel=item.channel, action="series", title=letra, url=host+"/lista-de-series/"+letra)) + + return itemlist + + +def mas_vistas(item): + logger.info() + + data = httptools.downloadpage(item.url).data + matches = re.compile('', re.S).findall(data) + itemlist = [] + for scrapedtitle, scrapedurl, scrapedthumbnail in matches: + scrapedurl = urlparse.urljoin(item.url, scrapedurl) + scrapedthumbnail = urlparse.urljoin(item.url, scrapedthumbnail.replace("/90/", "/150/")) - if categoria not in ("*", "S"): return itemlist ## <-- + itemlist.append( + Item(channel=item.channel, action="episodios", title=scrapedtitle, fulltitle=scrapedtitle, url=scrapedurl, + thumbnail=scrapedthumbnail, show=scrapedtitle, fanart=item.fanart)) - if item.url == "": - item.url = "http://www.seriesyonkis.sx/buscar/serie" - url = "http://www.seriesyonkis.sx/buscar/serie" # write ur URL here - post = 'keyword=' + texto[0:18] + '&search_type=serie' + return itemlist + + +def search(item, texto): + logger.info() + + itemlist = [] + post = "keyword=%s&search_type=serie" % texto + data = httptools.downloadpage(item.url, post=post).data - data = scrapertools.cache_page(url, post=post) try: - return getsearchresults(item, data, "episodios") + patron = '([^<]+)' + matches = re.compile(patron, re.DOTALL).findall(data) + for scrapedurl, scrapedtitle, scrapedthumb, scrapedplot in matches: + title = scrapedtitle.strip() + url = host + scrapedurl + thumb = host + scrapedthumb.replace("/90/", "/150/") + plot = re.sub(r"\n|\r|\t|\s{2,}", "", scrapedplot.strip()) + logger.debug("title=[" + title + "], url=[" + url + "], thumbnail=[" + thumb + "]") + + itemlist.append(Item(channel=item.channel, action="episodios", title=title, fulltitle=title, url=url, + thumbnail=thumb, plot=plot, show=title)) + + return itemlist # Se captura la excepción, para no interrumpir al buscador global si un canal falla except: import sys @@ -50,90 +85,21 @@ def search(item, texto, categoria="*"): return [] -def getsearchresults(item, data, action): - itemlist = [] - - patron = '_results_wrapper">(.*?)