Files
addon/plugin.video.alfa/channels/toonitalia.py
T

197 lines
6.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# Ringraziamo Icarus crew
# Canale per toonitalia
# ----------------------------------------------------------
import re
import urlparse
from platformcode import logger, config
from core import servertools, httptools, scrapertools
from core.item import Item
from core import tmdb
host = "https://toonitalia.org"
def mainlist(item):
logger.info("[toonitalia.py] Mainlist")
# Menu Principale
itemlist = [Item(channel=item.channel,
action="lista_anime",
title="Lista Anime",
text_color="azure",
url="%s/lista-anime-2/" % host,
extra="tv",
thumbnail="https://i.ytimg.com/vi/IAlbvyBdYdY/maxresdefault.jpg"),
Item(channel=item.channel,
action="lista_anime",
title="Anime Sub Ita",
text_color="azure",
url="%s/lista-anime-sub-ita/" % host,
extra="tv",
thumbnail="https://i.ytimg.com/vi/IAlbvyBdYdY/maxresdefault.jpg"),
Item(channel=item.channel,
action="lista_anime",
title="Film Animazione",
text_color="azure",
url="%s/lista-film-animazione/" % host,
extra="movie",
thumbnail="https://i.ytimg.com/vi/IAlbvyBdYdY/maxresdefault.jpg"),
Item(channel=item.channel,
action="lista_anime",
title="Serie TV",
text_color="azure",
url="%s/lista-serie-tv/" % host,
extra="tv",
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
title="Cerca ...",
text_color="yellow",
action="search",
extra="anime",
thumbnail="http://dc467.4shared.com/img/fEbJqOum/s7/13feaf0c8c0/Search")]
return itemlist
def search(item, texto):
logger.info("[toonitalia.py] Search")
item.url = "%s/?s=%s" % (host, texto)
try:
return src_list(item)
# Continua la ricerca in caso di errore
except:
import sys
for line in sys.exc_info():
logger.error("%s" % line)
return []
def src_list(item):
logger.info("[toonitalia.py] src_list")
itemlist = []
data = httptools.downloadpage(item.url).data
blocchi = re.findall(r'<article id="post(.*?)</article>', data, re.DOTALL)
for blocco in blocchi:
url_title = re.findall(r'<h2 class="entry-title"><a href="([^"]+)"[^>]+>([^<]+)</a></h2>', blocco, re.DOTALL)
scrapedtitle = scrapertools.decodeHtmlentities(url_title[0][1])
scrapedurl = url_title[0][0]
itemlist.append(
Item(channel=item.channel,
action="links",
text_color="azure",
contentType="tv",
title=scrapedtitle,
fulltitle=scrapedtitle,
url=scrapedurl,
show=scrapedtitle,
extra=item.extra,
folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist
def lista_anime(item):
logger.info("[toonitalia.py] Lista_anime")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url).data
# Definisce il Blocco in cui cercare
blocco = scrapertools.find_single_match(data, '<ul class="lcp_catlist"[^>]+>(.*?)</ul>')
patron = '<a href="([^"]+)".*?>([^"]+)</a>'
matches = re.compile(patron, re.DOTALL).finditer(blocco)
for match in matches:
scrapedtitle = scrapertools.unescape(match.group(2))
scrapedurl = match.group(1)
itemlist.append(
Item(channel=item.channel,
action="links",
text_color="azure",
contentType="tv",
title=scrapedtitle,
fulltitle=scrapedtitle,
url=scrapedurl,
show=scrapedtitle,
extra=item.extra,
folder=True))
return itemlist
def links(item):
logger.info("[toonitalia.py] Links")
itemlist = []
data = httptools.downloadpage(item.url).data
patron = r'<span style="color:#[^;]+;">[Ll]inks?\s*'
patron += r'([^<]+)<\/span>(?:<\/p>\s*|<br\s*\/>)(.*?)(?:<\/p>|\s*<a name)'
blocchi = scrapertools.find_multiple_matches(data, patron)
if not len(blocchi) > 0:
patron = r'<a name="Links?\s*([^"]+)"><\/a>(.*?)<\/p>'
blocchi = scrapertools.find_multiple_matches(data, patron)
for scrapedtitle, blocco in blocchi:
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle)
itemlist.append(
Item(channel=item.channel,
action="episodi",
text_color="orange",
title="Guarda con %s" % scrapedtitle,
url=blocco,
extra=scrapedtitle,
thumbnail=item.thumbnail,
folder=True))
return itemlist
def episodi(item):
logger.info("[toonitalia.py] Episodi")
itemlist = []
patron = ''
if 'openload' in item.extra.lower():
patron = r'<a href="([^"]+)"[^>]+>(?:[^>]+>[^>]+>[^>]+>\s*<b>|)([^<]+)(?:</b>|</a>)'
else:
patron = r'<a href="([^"]+)"[^>]+>([^<]+)</a>'
matches = re.findall(patron, item.url, re.DOTALL)
for scrapedurl, scrapedtitle in matches:
if 'wikipedia' in scrapedurl: continue
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle).replace("×", "x")
itemlist.append(
Item(channel=item.channel,
action="findvideos",
contentType="tv",
title=scrapedtitle,
text_color="azure",
fulltitle=scrapedtitle,
url=scrapedurl,
extra="tv",
show=item.show,
thumbnail=item.thumbnail,
folder=True))
return itemlist
def findvideos(item):
logger.info("[toonitalia.py] Findvideos")
itemlist = servertools.find_video_items(data=item.url)
for videoitem in itemlist:
server = re.sub(r'[-\[\]\s]+', '', videoitem.title)
videoitem.title = "".join(["[%s] " % color(server.capitalize(), 'orange'), item.title])
videoitem.text_color = "azure"
videoitem.fulltitle = item.fulltitle
videoitem.show = item.show
videoitem.thumbnail = item.thumbnail
videoitem.channel = item.channel
return itemlist
\r