# -*- coding: utf-8 -*- import re import urllib import urlparse from channelselector import get_thumb from core import httptools from core import scrapertools from core import servertools from core.item import Item from platformcode import logger host = "http://torrentlocura.com/" def mainlist(item): logger.info() thumb_movie = get_thumb("channels_movie.png") thumb_tvshow = get_thumb("channels_tvshow.png") thumb_anime = get_thumb("channels_anime.png") thumb_search = get_thumb("search.png") itemlist = list() itemlist.append(Item(channel=item.channel, action="submenu", title="Películas", url=host, thumbnail=thumb_movie, pattern="peliculas")) itemlist.append( Item(channel=item.channel, action="submenu", title="Series", url=host, thumbnail=thumb_tvshow, pattern="series")) itemlist.append( Item(channel=item.channel, action="anime", title="Anime", url=host, thumbnail=thumb_anime, pattern="anime")) itemlist.append(Item(channel=item.channel, action="search", title="Buscar", url=host + "buscar", thumbnail=thumb_search)) return itemlist def search(item, texto): logger.info("search:" + texto) # texto = texto.replace(" ", "+") try: item.post = "q=%s" % texto item.pattern = "buscar-list" itemlist = listado2(item) return itemlist # Se captura la excepción, para no interrumpir al buscador global si un canal falla except: import sys for line in sys.exc_info(): logger.error("%s" % line) return [] def anime(item): logger.info() itemlist = [] title = "Anime" url = host + "anime" itemlist.append(item.clone(channel=item.channel, action="listado", title=title, url=url, pattern="pelilist")) itemlist.append( item.clone(channel=item.channel, action="alfabeto", title=title + " [A-Z]", url=url, thumbnail=item.thumbnail[:-4] + "_az.png", pattern="pelilist")) return itemlist def submenu(item): logger.info() itemlist = [] data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data) # data = unicode(data, "iso-8859-1", errors="replace").encode("utf-8") pattern = '
  • .*?' % (host, item.pattern) data = scrapertools.get_match(data, pattern) pattern = '([^>]+)' matches = re.compile(pattern, re.DOTALL).findall(data) for scrapedurl, scrapedtitle in matches: title = scrapedtitle.strip() url = scrapedurl if item.pattern in title.lower(): itemlist.append(item.clone(channel=item.channel, action="listado", title=title, url=url, pattern="pelilist")) itemlist.append( item.clone(channel=item.channel, action="alfabeto", title=title + " [A-Z]", url=url, thumbnail=item.thumbnail[:-4] + "_az.png", pattern="pelilist")) return itemlist def alfabeto(item): logger.info() itemlist = [] data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data) # data = unicode(data, "iso-8859-1", errors="replace").encode("utf-8") pattern = '' data = scrapertools.get_match(data, pattern) patron = ']+>([^>]+)' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle in matches: title = scrapedtitle.upper() url = scrapedurl itemlist.append(Item(channel=item.channel, action="listado", title=title, url=url, pattern=item.pattern)) return itemlist def listado(item): logger.info() itemlist = [] data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data) data = unicode(data, "iso-8859-1", errors="replace").encode("utf-8") # logger.debug("data %s " % data) next_page = scrapertools.find_single_match(data, '