Merge branch 'master' of github.com:kodiondemand/plugin.video.alfa

This commit is contained in:
mac12m99
2019-04-30 23:01:11 +02:00
7 changed files with 147 additions and 165 deletions
+6 -6
View File
@@ -1,11 +1,11 @@
{ {
"id": "animeleggendari", "id": "animeleggendari",
"name": "AnimeLeggendari", "name": "AnimePerTutti",
"active": true, "active": true,
"adult": false, "adult": false,
"language": ["ita"], "language": ["ita"],
"thumbnail": "https://animeleggendari.com/wp-content/uploads/2018/01/123header.jpg", "thumbnail": "animepertutti.png",
"bannermenu": "https://animeleggendari.com/wp-content/uploads/2018/01/123header.jpg", "bannermenu": "animepertutti.png",
"categories": ["anime"], "categories": ["anime"],
"settings": [ "settings": [
{ {
@@ -20,9 +20,9 @@
"id": "include_in_newest_anime", "id": "include_in_newest_anime",
"type": "bool", "type": "bool",
"label": "Includi in Novità - Anime", "label": "Includi in Novità - Anime",
"default": false, "default": true,
"enabled": false, "enabled": true,
"visible": false "visible": true
}, },
{ {
"id": "include_in_newest_italiano", "id": "include_in_newest_italiano",
+111 -147
View File
@@ -1,18 +1,18 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# ------------------------------------------------------------ # ------------------------------------------------------------
# Ringraziamo Icarus crew
# Canale per animeleggendari # Canale per animeleggendari
# ------------------------------------------------------------ # ------------------------------------------------------------
import re import re
from channels import autoplay from channels import filtertools, autoplay, support, autorenumber
from channels import filtertools, support from channels.support import log, menu
from core import servertools, httptools, scrapertools, tmdb from core import servertools, httptools, scrapertoolsV2, scrapertools, tmdb
from platformcode import logger, config from platformcode import logger, config
from core.item import Item from core.item import Item
from lib.js2py.host import jsfunctions
host = "https://animeleggendari.com" host = "https://animepertutti.com"
# Richiesto per Autoplay # Richiesto per Autoplay
IDIOMAS = {'Italiano': 'IT'} IDIOMAS = {'Italiano': 'IT'}
@@ -24,57 +24,29 @@ __comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'animeleggendari
__comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'animeleggendari') __comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'animeleggendari')
def mainlist(item): def mainlist(item):
logger.info('[animeleggendari.py] mainlist') log()
# Richiesto per Autoplay itemlist = []
autoplay.init(item.channel, list_servers, list_quality) menu(itemlist, 'Anime Leggendari', 'peliculas', host + '/category/anime-leggendari/')
menu(itemlist, 'Anime ITA', 'peliculas', host + '/category/anime-ita/')
itemlist = [Item(channel=item.channel, menu(itemlist, 'Anime SUB-ITA', 'peliculas', host + '/category/anime-sub-ita/')
action="lista_anime", menu(itemlist, 'Anime Conclusi', 'peliculas', host + '/category/serie-anime-concluse/')
title="[B]Anime Leggendari[/B]", menu(itemlist, 'Anime in Corso', 'peliculas', host + '/category/anime-in-corso/')
url="%s/category/anime-leggendari/" % host, menu(itemlist, 'Genere', 'genres', host)
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"), menu(itemlist, 'Cerca...', 'search')
Item(channel=item.channel, menu(itemlist, 'novita', 'newest')
action="lista_anime",
title="Anime [B]ITA[/B]",
url="%s/category/anime-ita/" % host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
action="lista_anime",
title="Anime [B]SUB ITA[/B]",
url="%s/category/anime-sub-ita/" % host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
action="lista_anime",
title="Conclusi",
url="%s/category/serie-anime-concluse/" % host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
action="lista_anime",
title="In Corso",
url="%s/category/anime-in-corso/" % host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
action="generi",
title="Generi >",
url=host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
action="search",
title="[B]Cerca...[/B]",
thumbnail="http://dc467.4shared.com/img/fEbJqOum/s7/13feaf0c8c0/Search")]
# Autoplay visualizza voce menu autoplay.init(item.channel, list_servers, list_quality)
autoplay.show_option(item.channel, itemlist) autoplay.show_option(item.channel, itemlist)
return itemlist return itemlist
def search(item, texto): def search(item, texto):
logger.info('[animeleggendari.py] search') log(texto)
item.url = host + "/?s=" + texto item.url = host + "/?s=" + texto
try: try:
return lista_anime(item) return peliculas(item)
# Continua la ricerca in caso di errore # Continua la ricerca in caso di errore
except: except:
@@ -83,139 +55,131 @@ def search(item, texto):
logger.error("%s" % line) logger.error("%s" % line)
return [] return []
def generi(item): def last_ep(item):
logger.info('[animeleggendari.py] generi') log('ANIME PER TUTTI')
return support.scrape(item, '<a href="([^"]+)">([^<]+)<', ['url','title'],patron_block='<ul class="mh-tab-content-posts">(.*?)<\/ul>', action='findvideos')
def newest(categoria):
log('ANIME PER TUTTI')
log(categoria)
itemlist = [] itemlist = []
item = Item()
try:
if categoria == "anime":
item.url = host
item.action = "last_ep"
itemlist = last_ep(item)
data = httptools.downloadpage(item.url).data.replace('\n','').replace('\t','') if itemlist[-1].action == "last_ep":
logger.info("[animeleggendari.py] generi= "+data) itemlist.pop()
# Continua la ricerca in caso di errore
blocco =scrapertools.find_single_match(data, r'Generi.*?<ul.*?>(.*?)<\/ul>') except:
logger.info("[animeleggendari.py] blocco= "+blocco) import sys
patron = '<a href="([^"]+)">([^<]+)<' for line in sys.exc_info():
logger.error("{0}".format(line))
matches = re.compile(patron, re.DOTALL).findall(blocco) return []
logger.info("[animeleggendari.py] matches= "+str(matches))
for scrapedurl, scrapedtitle in matches:
title = scrapedtitle.replace('Anime ','')
itemlist.append(
Item(channel=item.channel,
action="lista_anime",
title=title,
url=scrapedurl))
return itemlist return itemlist
def lista_anime(item): def genres(item):
logger.info('[animeleggendari.py] lista_anime') itemlist = support.scrape(item, '<a href="([^"]+)">([^<]+)<', ['url', 'title'], action='peliculas', patron_block=r'Generi.*?<ul.*?>(.*?)<\/ul>', blacklist=['Contattaci','Privacy Policy', 'DMCA'])
return support.thumb(itemlist)
def peliculas(item):
log()
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url).data blacklist = ['top 10 anime da vedere']
patron = r'<a class="[^"]+" href="([^"]+)" title="([^"]+)"><img[^s]+src="([^"]+)"[^>]+' matches, data = support.match(item, r'<a class="[^"]+" href="([^"]+)" title="([^"]+)"><img[^s]+src="([^"]+)"[^>]+')
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle, scrapedthumbnail in matches: for url, title, thumb in matches:
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle.strip()).replace("streaming", "") title = scrapertoolsV2.decodeHtmlentities(title.strip()).replace("streaming", "")
if 'top 10 anime da vedere' in scrapedtitle.lower(): continue lang = scrapertoolsV2.find_single_match(title, r"((?:SUB ITA|ITA))")
videoType = ''
if 'movie' in title.lower():
videoType = ' - (MOVIE)'
if 'ova' in title.lower():
videoType = ' - (OAV)'
cleantitle = title.replace(lang, "").replace('(Streaming & Download)', '').replace('( Streaming & Download )', '').replace('OAV', '').replace('OVA', '').replace('MOVIE', '').strip()
if not videoType :
contentType="tvshow"
action="episodios"
else:
contentType="movie"
action="findvideos"
if not title.lower() in blacklist:
itemlist.append(
Item(channel=item.channel,
action=action,
contentType=contentType,
title=support.typo(cleantitle + videoType, 'bold') + support.typo(lang,'_ [] color kod'),
fulltitle=cleantitle,
show=cleantitle,
url=url,
thumbnail=thumb))
lang = scrapertools.find_single_match(scrapedtitle, r"((?:SUB ITA|ITA))")
cleantitle = scrapedtitle.replace(lang, "").replace('(Streaming & Download)', '')
cleantitle = cleantitle.replace('OAV', '').replace('OVA', '').replace('MOVIE', '')
itemlist.append(
Item(channel=item.channel,
action="episodios",
contentType="tvshow" if 'movie' not in scrapedtitle.lower() and 'ova' not in scrapedtitle.lower() else "movie",
text_color="azure",
title=scrapedtitle.replace('(Streaming & Download)', '').replace(lang, '[B][' + lang + '][/B]'),
fulltitle=cleantitle,
url=scrapedurl,
show=cleantitle,
thumbnail=scrapedthumbnail,
folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
autorenumber.renumber(itemlist)
patronvideos = r'<a class="next page-numbers" href="([^"]+)">' support.nextPage(itemlist, item, data, r'<a class="next page-numbers" href="([^"]+)">')
matches = re.compile(patronvideos, re.DOTALL).findall(data)
if len(matches) > 0:
itemlist.append(
Item(channel=item.channel,
action="lista_anime",
title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]",
url=scrapedurl,
thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png",
folder=True))
return itemlist return itemlist
def episodios(item): def episodios(item):
logger.info('[animeleggendari.py] episodios') log()
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
blocco = scrapertools.find_single_match(data, r'(?:<p style="text-align: left;">|<div class="pagination clearfix">\s*)(.*?)</span></a></div>') block = scrapertoolsV2.find_single_match(data, r'(?:<p style="text-align: left;">|<div class="pagination clearfix">\s*)(.*?)</span></a></div>')
# Il primo episodio è la pagina stessa
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="findvideos", action='findvideos',
contentType=item.contentType, contentType=item.contentType,
title="Episodio: 1", title=support.typo('Episodio 1 bold'),
text_color="azure", fulltitle=item.title,
fulltitle="%s %s %s " % (support.color(item.title, "deepskyblue"), support.color("|", "azure"), support.color("1", "orange")),
url=item.url, url=item.url,
thumbnail=item.thumbnail, thumbnail=item.thumbnail))
folder=True))
if blocco != "": if block:
patron = r'<a href="([^"]+)".*?><span class="pagelink">(\d+)</span></a>' matches = re.compile(r'<a href="([^"]+)".*?><span class="pagelink">(\d+)</span></a>', re.DOTALL).findall(data)
matches = re.compile(patron, re.DOTALL).findall(data) for url, number in matches:
for scrapedurl, scrapednumber in matches:
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="findvideos", action='findvideos',
contentType=item.contentType, contentType=item.contentType,
title="Episodio: %s" % scrapednumber, title=support.typo('Episodio ' + number,'bold'),
text_color="azure", fulltitle=item.title,
fulltitle="%s %s %s " % (support.color(item.title, "deepskyblue"), support.color("|", "azure"), support.color(scrapednumber, "orange")), url=url,
url=scrapedurl, thumbnail=item.thumbnail))
thumbnail=item.thumbnail,
folder=True)) autorenumber.renumber(itemlist, item)
support.videolibrary
if config.get_videolibrary_support() and len(itemlist) != 0:
itemlist.append(
Item(channel=item.channel,
title="[COLOR lightblue]%s[/COLOR]" % config.get_localized_string(30161),
url=item.url,
action="add_serie_to_library",
extra="episodi",
show=item.show))
return itemlist return itemlist
def findvideos(item): def findvideos(item):
logger.info('[animeleggendari.py] findvideos') log()
data = ''
matches = support.match(item, 'str="([^"]+)"')[0]
if matches:
for match in matches:
data += str(jsfunctions.unescape(re.sub('@|g','%', match)))
data += str(match)
log('DATA',data)
if 'animepertutti' in data:
log('ANIMEPERTUTTI!')
else:
data = ''
data = httptools.downloadpage(item.url).data itemlist = support.server(item,data)
itemlist = servertools.find_video_items(data=data)
for videoitem in itemlist:
server = re.sub(r'[-\[\]\s]+', '', videoitem.title)
videoitem.title = "".join(["[%s] " % support.color(server.capitalize(), 'orange'), item.title])
videoitem.fulltitle = item.fulltitle
videoitem.show = item.show
videoitem.thumbnail = item.thumbnail
videoitem.channel = item.channel
# Richiesto per Verifica se i link esistono
if __comprueba_enlaces__: if __comprueba_enlaces__:
itemlist = servertools.check_list_links(itemlist, __comprueba_enlaces_num__) itemlist = servertools.check_list_links(itemlist, __comprueba_enlaces_num__)
# Richiesto per FilterTools
itemlist = filtertools.get_links(itemlist, item, list_language) itemlist = filtertools.get_links(itemlist, item, list_language)
# Autoplay
autoplay.start(itemlist, item) autoplay.start(itemlist, item)
return itemlist return itemlist
+18 -8
View File
@@ -59,8 +59,12 @@ def add_season(data=None):
if season != "": if season != "":
heading = config.get_localized_string(70687) heading = config.get_localized_string(70687)
episode = platformtools.dialog_numeric(0, heading) episode = platformtools.dialog_numeric(0, heading)
if episode != "": if episode == "0":
return [int(season), int(episode)] heading = config.get_localized_string(70688)
special = platformtools.dialog_numeric(0, heading)
return [int(season), int(episode), int(special)]
elif episode != '':
return [int(season), int(episode), '']
def write_data(channel, show, data): def write_data(channel, show, data):
@@ -94,10 +98,11 @@ def renumber(itemlist, item='', typography=''):
if item: if item:
try: try:
dict_series = jsontools.get_node_from_file(item.channel, TAG_TVSHOW_RENUMERATE) dict_series = jsontools.get_node_from_file(item.channel, TAG_TVSHOW_RENUMERATE)
SERIES = dict_series[item.show]['season_episode'] SERIES = dict_series[item.show.rstrip()]['season_episode']
S = SERIES[0] S = SERIES[0]
E = SERIES[1] E = SERIES[1]
ID = SERIES[2] SP = SERIES[2]
ID = SERIES[3]
page = 1 page = 1
epList = [] epList = []
@@ -111,18 +116,23 @@ def renumber(itemlist, item='', typography=''):
for episodes in data['data']: for episodes in data['data']:
if episodes['airedSeason'] >= S: if episodes['airedSeason'] >= S:
if E == 0: if E == 0:
epList.append(str(episodes['airedSeason']) + 'x0') epList.append([0, SP])
E = 1 E = 1
if episodes['airedEpisodeNumber'] >= E: if episodes['airedEpisodeNumber'] >= E:
epList.append(str(episodes['airedSeason']) + 'x' + str(episodes['airedEpisodeNumber'])) epList.append([episodes['airedSeason'], episodes['airedEpisodeNumber']])
page = page + 1 page = page + 1
else: else:
exist = False exist = False
epList.sort()
ep = 0 ep = 0
for item in itemlist: for item in itemlist:
item.title = typo(epList[ep] + ' - ', typography) + item.title s = str(epList[ep][0])
e = str(epList[ep][1])
item.title = typo(s + 'x'+ e + ' - ', typography) + item.title
ep = ep + 1 ep = ep + 1
except: except:
return itemlist return itemlist
else: else:
+5 -1
View File
@@ -10020,7 +10020,7 @@ msgid "Do you want to update Quasar to avoid errors?"
msgstr "" msgstr ""
msgctxt "#70585" msgctxt "#70585"
msgid "RENUMBERING" msgid "[B]Renumbering[/B] (beta)"
msgstr "" msgstr ""
msgctxt "#70586" msgctxt "#70586"
@@ -10435,4 +10435,8 @@ msgstr ""
msgctxt "#70687" msgctxt "#70687"
msgid "Enter the number of the starting episode" msgid "Enter the number of the starting episode"
msgstr ""
msgctxt "#70688"
msgid "Episode 0 is a special episode, enter the number of this episode"
msgstr "" msgstr ""
+7 -3
View File
@@ -5004,8 +5004,8 @@ msgid "Do you want to update Quasar to avoid errors?"
msgstr "Vuoi aggiornare Quasar per evitare errori?" msgstr "Vuoi aggiornare Quasar per evitare errori?"
msgctxt "#70585" msgctxt "#70585"
msgid "RENUMBERING" msgid "[B]Renumbering[/B] (beta)"
msgstr "RINUMERAZIONE" msgstr "[B]Rinumerazione[/B] (beta)"
msgctxt "#70586" msgctxt "#70586"
msgid "Set up series number..." msgid "Set up series number..."
@@ -5424,4 +5424,8 @@ msgstr "Inserisci il numero della stagione di partenza"
msgctxt "#70687" msgctxt "#70687"
msgid "Enter the number of the starting episode" msgid "Enter the number of the starting episode"
msgstr "Inserisci il numero dell'episodio di partenza" msgstr "Inserisci il numero dell'episodio di partenza"
msgctxt "#70688"
msgid "Episode 0 is a special episode, enter the number of this episode"
msgstr "L'episodio 0 è un episodio speciale, inserisci il numero di questo episodio"
Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB