From 479d9042c818c0dd683947753240867f1684f720 Mon Sep 17 00:00:00 2001 From: greko Date: Sun, 26 May 2019 16:15:27 +0200 Subject: [PATCH] Aggiornamento canale Altadefinizione01_link e modifiche a support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Versione definitiva di Altadefinzione01_link 2. modifiche lievi a support poichè nei titoli c'era " invece di ' 3. aggiunta di lang a support --- channels/altadefinizione01_link.json | 6 +- channels/altadefinizione01_link.py | 298 ++++++++++----------------- core/support.py | 27 ++- 3 files changed, 130 insertions(+), 201 deletions(-) diff --git a/channels/altadefinizione01_link.json b/channels/altadefinizione01_link.json index 47cb3ac3..ca5501e2 100644 --- a/channels/altadefinizione01_link.json +++ b/channels/altadefinizione01_link.json @@ -4,9 +4,9 @@ "active": true, "adult": false, "language": ["ita"], - "fanart": "", - "thumbnail": "", - "banner": "http://altadefinizione01.link/templates/Dark/img/logonyy.png", + "fanart": "https://altadefinizione01.estate/templates/Dark/img/nlogo.png", + "thumbnail": "https://altadefinizione01.estate/templates/Dark/img/nlogo.png", + "banner": "https://altadefinizione01.estate/templates/Dark/img/nlogo.png", "fix" : "reimpostato url e modificato file per KOD", "change_date": "2019-30-04", "categories": [ diff --git a/channels/altadefinizione01_link.py b/channels/altadefinizione01_link.py index 7e690035..cd1822f2 100644 --- a/channels/altadefinizione01_link.py +++ b/channels/altadefinizione01_link.py @@ -3,14 +3,12 @@ # -*- Creato per Alfa-addon -*- # -*- e adattato for KOD -*- # -*- By Greko -*- -# -*- last change: 04/05/2019 +# -*- last change: 26/05/2019 - -from channelselector import get_thumb -from core import httptools, scrapertools, servertools, tmdb, support +from specials import autoplay +from core import servertools, support from core.item import Item from platformcode import config, logger -from specials import autoplay, filtertools __channel__ = "altadefinizione01_link" @@ -18,217 +16,143 @@ __channel__ = "altadefinizione01_link" #host = "http://altadefinizione01.art/" # aggiornato al 22 marzo 2019 #host = "https://altadefinizione01.network/" #aggiornato al 22 marzo 2019 #host = "http://altadefinizione01.date/" #aggiornato al 3 maggio 2019 -host = "https://altadefinizione01.voto/" #aggiornato al 3 maggio 2019 +#host = "https://altadefinizione01.voto/" #aggiornato al 3 maggio 2019 +host = "https://altadefinizione01.estate/" # aggiornato al 23 maggio 2019 # ======== def per utility INIZIO ============================ - + +headers = [['Referer', host]] + +list_servers = ['supervideo', 'streamcherry','rapidvideo', 'streamango', 'openload'] +list_quality = ['default'] + checklinks = config.get_setting('checklinks', __channel__) checklinks_number = config.get_setting('checklinks_number', __channel__) -headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'], - ['Referer', host]]#,['Accept-Language','it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3']] - -IDIOMAS = {'Italiano': 'IT'} -list_language = IDIOMAS.values() -list_servers = ['openload', 'streamcherry','rapidvideo', 'streamango', 'supervideo'] -list_quality = ['default'] - # =========== home menu =================== def mainlist(item): - """ - Creo il menu principale del canale - :param item: - :return: itemlist [] - """ - logger.info("%s mainlist log: %s" % (__channel__, item)) - itemlist = [] +""" +Creo il menu principale del canale +:param item: +:return: itemlist [] +""" +support.log() +itemlist = [] - autoplay.init(item.channel, list_servers, list_quality) - # Menu Principale - support.menu(itemlist, 'Film Ultimi Arrivi bold', 'peliculas', host)#, args='film') - support.menu(itemlist, 'Genere', 'categorie', host, args=['','genres']) - support.menu(itemlist, 'Per anno submenu', 'categorie', host, args=['Film per Anno','years']) - support.menu(itemlist, 'Per qualità submenu', 'categorie', host, args=['Film per qualità','quality']) - support.menu(itemlist, 'Al Cinema bold', 'peliculas', host+'film-del-cinema') - support.menu(itemlist, 'Popolari bold', 'categorie', host+'piu-visti.html', args=['popular','']) - support.menu(itemlist, 'Mi sento fortunato bold', 'categorie', host, args=['fortunato','lucky']) - support.menu(itemlist, 'Sub-ITA bold', 'peliculas', host+'film-sub-ita/') - support.menu(itemlist, 'Cerca film submenu', 'search', host) +# Menu Principale +support.menu(itemlist, 'Novità bold', 'peliculas', host) +support.menu(itemlist, 'Film per Genere', 'genres', host, args='genres') +support.menu(itemlist, 'Film per Anno submenu', 'genres', host, args='years') +support.menu(itemlist, 'Film per Qualità submenu', 'genres', host, args='quality') +support.menu(itemlist, 'Al Cinema bold', 'peliculas', host+'film-del-cinema') +support.menu(itemlist, 'Popolari bold', 'peliculas', host+'piu-visti.html') +support.menu(itemlist, 'Mi sento fortunato bold', 'genres', host, args='lucky') +support.menu(itemlist, 'Sub-ITA bold', 'peliculas', host+'film-sub-ita/') +support.menu(itemlist, 'Cerca film submenu', 'search', host) - autoplay.show_option(item.channel, itemlist) - - return itemlist +# per autoplay +autoplay.init(item.channel, list_servers, list_quality) +autoplay.show_option(item.channel, itemlist) -# ======== def in ordine di menu =========================== +return itemlist + +# ======== def in ordine di action dal menu =========================== def peliculas(item): - logger.info("%s mainlist peliculas log: %s" % (__channel__, item)) - itemlist = [] - # scarico la pagina - data = httptools.downloadpage(item.url, headers=headers).data - # da qui fare le opportuni modifiche - patron = 'class="innerImage">.*?href="([^"]+)".*?src="([^"]+)".*?'\ - 'class="ml-item-title">([^"]+)'\ - '(.*?)<.*?class="ml-item-label">.*?class="ml-item-label">(.*?).*?href="([^"]+)".*?src="([^"]+)"'\ + '.*?class="ml-item-title">([^<]+) (\d{4}) <'\ + '.*?class="ml-item-label">.*?class="ml-item-label ml-item-label-.+?"> '\ + '(.+?) .*?class="ml-item-label"> (.+?) \d ' - # Paginazione - support.nextPage(itemlist,item,data,'\d ') - - return itemlist +itemlist = support.scrape(item, patron=patron, listGroups=listGroups, + headers= headers, patronNext=patronNext, + action='findvideos') + +return itemlist # =========== def pagina categorie ====================================== -def categorie(item): - logger.info("%s mainlist categorie log: %s" % (__channel__, item)) - itemlist = [] - # scarico la pagina - data = httptools.downloadpage(item.url, headers=headers).data +def genres(item): +support.log +itemlist = [] +#data = httptools.downloadpage(item.url, headers=headers).data +action = 'peliculas' +if item.args == 'genres': +bloque = r'' +elif item.args == 'years': +bloque = r'' +elif item.args == 'quality': +bloque = r'' +elif item.args == 'lucky': # sono i titoli random nella pagina, cambiano 1 volta al dì +bloque = r'FILM RANDOM.*?class="listSubCat">(.*?)' +action = 'findvideos' + +patron = r'
  • (.*?)<' - # da qui fare le opportuni modifiche - if item.args[1] == 'genres': - bloque = scrapertools.find_single_match(data, '
      (.*?)
    ') - elif item.args[1] == 'years': - bloque = scrapertools.find_single_match(data, '
      (.*?)
    ') - elif item.args[1] == 'quality': - bloque = scrapertools.find_single_match(data, '
      (.*?)
    ') - elif item.args[1] == 'lucky': # sono i titoli random nella pagina, alcuni rimandano solo a server a pagamento - bloque = scrapertools.find_single_match(data, 'FILM RANDOM.*?class="listSubCat">(.*?)') - patron = '
  • (.*?)<' - matches = scrapertools.find_multiple_matches(bloque, patron) +listGroups = ['url','title'] +itemlist = support.scrape(item, patron=patron, listGroups=listGroups, + headers= headers, patron_block = bloque, + action=action) - if item.args[1] == 'lucky': - bloque = scrapertools.find_single_match(data, 'FILM RANDOM.*?class="listSubCat">(.*?)') - patron = '
  • (.*?)<' - matches = scrapertools.find_multiple_matches(bloque, patron) - - for scrapurl, scraptitle in sorted(matches): - if item.args[1] != 'lucky': - url = host+scrapurl - action="peliculas" - else: - url = scrapurl - action = "findvideos_film" - itemlist.append(Item( - channel=item.channel, - action=action, - title = scraptitle, - url=url, - thumbnail=get_thumb(scraptitle, auto = True), - Folder = True, - )) - - return itemlist - - -# =========== def pagina del film con i server per verderlo ============= -# da sistemare che ne da solo 1 come risultato - -def findvideos(item): - logger.info("%s mainlist findvideos_film log: %s" % (__channel__, item)) - itemlist = [] - # scarico la pagina - #data = scrapertools.cache_page(item.url) #non funziona più? - data = httptools.downloadpage(item.url, headers=headers).data - # da qui fare le opportuni modifiche - patron = '' - matches = scrapertools.find_multiple_matches(data, patron) - #logger.info("altadefinizione01_linkMATCHES: %s " % matches) - for scrapedurl in matches: - - try: - itemlist = servertools.find_video_items(data=data) - - for videoitem in itemlist: - logger.info("Videoitemlist2: %s" % videoitem) - videoitem.title = "%s [%s]" % (item.contentTitle, videoitem.title)#"[%s] %s" % (videoitem.server, item.title) #"[%s]" % (videoitem.title) - videoitem.show = item.show - videoitem.contentTitle = item.contentTitle - videoitem.contentType = item.contentType - videoitem.channel = item.channel - videoitem.year = item.infoLabels['year'] - videoitem.infoLabels['plot'] = item.infoLabels['plot'] - except AttributeError: - logger.error("data doesn't contain expected URL") - - # Controlla se i link sono validi - if checklinks: - itemlist = servertools.check_list_links(itemlist, checklinks_number) - - # Requerido para FilterTools - itemlist = filtertools.get_links(itemlist, item, list_language) - - # Requerido para AutoPlay - autoplay.start(itemlist, item) - - # Aggiunge alla videoteca - if item.extra != 'findvideos' and item.extra != "library" and config.get_videolibrary_support() and len(itemlist) != 0 : - support.videolibrary(itemlist, item) - - return itemlist +return itemlist # =========== def per cercare film/serietv ============= #host+/index.php?do=search&story=avatar&subaction=search def search(item, text): - logger.info("%s mainlist search log: %s %s" % (__channel__, item, text)) - itemlist = [] - text = text.replace(" ", "+") - item.url = host+"/index.php?do=search&story=%s&subaction=search" % (text) - #item.extra = "search" - try: - return peliculas(item) - # 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.info("%s mainlist search log: %s" % (__channel__, line)) - return [] +support.log() +itemlist = [] +text = text.replace(" ", "+") +item.url = host+"/index.php?do=search&story=%s&subaction=search" % (text) +try: +return peliculas(item) +# 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.info("%s mainlist search log: %s" % (__channel__, line)) +return [] # =========== def per le novità nel menu principale ============= def newest(categoria): - logger.info("%s mainlist search log: %s" % (__channel__, categoria)) - itemlist = [] - item = Item() - #item.extra = 'film' - try: - if categoria == "film": - item.url = host - item.action = "peliculas" - itemlist = peliculas(item) +support.log(categoria) +itemlist = [] +item = Item() +try: +if categoria == "peliculas": +item.url = host +item.action = "peliculas" +itemlist = peliculas(item) - if itemlist[-1].action == "peliculas": - itemlist.pop() +if itemlist[-1].action == "peliculas": +itemlist.pop() +# Continua la ricerca in caso di errore +except: +import sys +for line in sys.exc_info(): +logger.error("{0}".format(line)) +return [] - # Continua la ricerca in caso di errore - except: - import sys - for line in sys.exc_info(): - logger.error("{0}".format(line)) - return [] +return itemlist - return itemlist +def findvideos(item): +support.log() + +itemlist = support.server(item, headers=headers) + +# Requerido para FilterTools +# itemlist = filtertools.get_links(itemlist, item, list_language) + +# Requerido para AutoPlay +autoplay.start(itemlist, item) + +support.videolibrary(itemlist, item, 'color kod') + +return itemlist diff --git a/core/support.py b/core/support.py index 800a880a..8eb21e4d 100644 --- a/core/support.py +++ b/core/support.py @@ -95,7 +95,7 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data="" patronNext="", action="findvideos", addVideolibrary = True): # patron: the patron to use for scraping page, all capturing group must match with listGroups # listGroups: a list containing the scraping info obtained by your patron, in order - # accepted values are: url, title, thumb, quality, year, plot, duration, genre, rating + # accepted values are: url, title, thumb, quality, year, plot, duration, genre, rating, episode, lang # header: values to pass to request header # blacklist: titles that you want to exclude(service articles for example) @@ -112,7 +112,7 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data="" # patron = 'blablabla' # headers = [['Referer', host]] # blacklist = 'Request a TV serie!' - # return support.scrape(item, itemlist, patron, ['thumb', 'quality', 'url', 'title', 'year', 'plot'], + # return support.scrape(item, itemlist, patron, ['thumb', 'quality', 'url', 'title', 'year', 'plot', 'episode', 'lang'], # headers=headers, blacklist=blacklist) itemlist = [] @@ -133,7 +133,7 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data="" blocks = scrapertoolsV2.find_multiple_matches(block, regex) block = "" for b in blocks: - block += "\n" + b + block += "\n" + str(b) log('BLOCK ', n, '=', block) else: block = data @@ -141,7 +141,7 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data="" matches = scrapertoolsV2.find_multiple_matches(block, patron) log('MATCHES =', matches) - known_keys = ['url', 'title', 'episode', 'thumb', 'quality', 'year', 'plot', 'duration', 'genere', 'rating'] #by greko aggiunto episode + known_keys = ['url', 'title', 'episode', 'thumb', 'quality', 'year', 'plot', 'duration', 'genere', 'rating', 'lang'] for match in matches: if len(listGroups) > len(match): # to fix a bug match = list(match) @@ -154,15 +154,20 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data="" val = scrapertoolsV2.find_single_match(item.url, 'https?://[a-z0-9.-]+') + val scraped[kk] = val - title = scrapertoolsV2.decodeHtmlentities(scraped["title"]).strip() + title = scrapertoolsV2.decodeHtmlentities(scraped["title"]).replace('"', "'").strip() plot = scrapertoolsV2.htmlclean(scrapertoolsV2.decodeHtmlentities(scraped["plot"])) - if scraped["quality"] and scraped["episode"]: # by greko aggiunto episode - longtitle = '[B]' + title + '[/B] - [B]' + scraped["episode"] + '[/B][COLOR blue][' + scraped["quality"] + '][/COLOR]' # by greko aggiunto episode - elif scraped["episode"]: # by greko aggiunto episode - longtitle = '[B]' + title + '[/B] - [B]' + scraped["episode"] + '[/B]' # by greko aggiunto episode - else: - longtitle = '[B]' + title + '[/B]' + longtitle = '[B]' + title + '[/B] ' + if scraped["quality"]: + longtitle += '[COLOR blue][' + scraped["quality"] + '][/COLOR]' + if scraped["episode"]: + longtitle += '[B]' + scraped["episode"] + '[/B]' + if scraped["lang"]: + if 'sub' in scraped["lang"].lower(): + lang = 'Sub-ITA' + else: + lang = 'ITA' + longtitle += '[COLOR blue][' + lang + '][/COLOR]' if item.infoLabels["title"] or item.fulltitle: # if title is set, probably this is a list of episodes or video sources infolabels = item.infoLabels