# -*- coding: utf-8 -*- # ------------------------------------------------------------ # Canale per AnimeSaturn # Thanks to 4l3x87 # ---------------------------------------------------------- import re import urlparse import channelselector from core import httptools, tmdb, support, scrapertools, jsontools from core.item import Item from core.support import log from platformcode import logger, config from specials import autoplay, autorenumber __channel__ = "animesaturn" host = config.get_setting("channel_host", __channel__) headers = [['Referer', host]] IDIOMAS = {'Italiano': 'IT'} list_language = IDIOMAS.values() list_servers = ['openload', 'fembed', 'animeworld'] list_quality = ['default', '480p', '720p', '1080p'] def mainlist(item): log() itemlist = [] support.menu(itemlist, 'Novità bold', 'ultimiep', "%s/fetch_pages.php?request=episodes" % host, 'tvshow') support.menu(itemlist, 'Anime bold', 'lista_anime', "%s/animelist?load_all=1" % host) support.menu(itemlist, 'Archivio A-Z submenu', 'list_az', '%s/animelist?load_all=1' % host, args=['tvshow', 'alfabetico']) support.menu(itemlist, 'Cerca', 'search', host) support.aplay(item, itemlist, list_servers, list_quality) support.channel_config(item, itemlist) return itemlist # ---------------------------------------------------------------------------------------------------------------- def cleantitle(scrapedtitle): scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle.strip()) scrapedtitle = scrapedtitle.replace('[HD]', '').replace('’', '\'').replace('×', 'x').replace('"', "'") year = scrapertools.find_single_match(scrapedtitle, '\((\d{4})\)') if year: scrapedtitle = scrapedtitle.replace('(' + year + ')', '') return scrapedtitle.strip() # ================================================================================================================ # ---------------------------------------------------------------------------------------------------------------- def lista_anime(item): log() itemlist = [] PERPAGE = 15 p = 1 if '{}' in item.url: item.url, p = item.url.split('{}') p = int(p) if '||' in item.url: series = item.url.split('\n\n') matches = [] for i, serie in enumerate(series): matches.append(serie.split('||')) else: # Estrae i contenuti patron = r']*?>[^>]*?>(.+?)<' matches = support.match(item, patron, headers=headers)[0] scrapedplot = "" scrapedthumbnail = "" for i, (scrapedurl, scrapedtitle) in enumerate(matches): if (p - 1) * PERPAGE > i: continue if i >= p * PERPAGE: break title = cleantitle(scrapedtitle).replace('(ita)', '(ITA)') movie = False showtitle = title if '(ITA)' in title: title = title.replace('(ITA)', '').strip() showtitle = title else: title += ' ' + support.typo('Sub-ITA', '_ [] color kod') infoLabels = {} if 'Akira' in title: movie = True infoLabels['year'] = 1988 if 'Dragon Ball Super Movie' in title: movie = True infoLabels['year'] = 2019 itemlist.append( Item(channel=item.channel, extra=item.extra, action="episodios" if movie == False else 'findvideos', title=title, url=scrapedurl, thumbnail=scrapedthumbnail, fulltitle=showtitle, show=showtitle, contentTitle=showtitle, plot=scrapedplot, contentType='episode' if movie == False else 'movie', originalUrl=scrapedurl, infoLabels=infoLabels, folder=True)) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) autorenumber.renumber(itemlist) # Paginazione if len(matches) >= p * PERPAGE: support.nextPage(itemlist, item, next_page=(item.url + '{}' + str(p + 1))) return itemlist # ================================================================================================================ # ---------------------------------------------------------------------------------------------------------------- def episodios(item): log() itemlist = [] data = httptools.downloadpage(item.url, headers=headers, ignore_response_code=True).data anime_id = scrapertools.find_single_match(data, r'\?anime_id=(\d+)') # movie or series movie = scrapertools.find_single_match(data, r'\Episodi:\s(\d*)\sMovie') data = httptools.downloadpage( host + "/loading_anime?anime_id=" + anime_id, headers={ 'X-Requested-With': 'XMLHttpRequest' }).data patron = r'