From 82feca4ca22b43b09945dca3c975bbc5f5f3a09c Mon Sep 17 00:00:00 2001 From: thepasto Date: Mon, 15 Apr 2019 22:41:50 +0200 Subject: [PATCH 01/10] Vedohd small fixes --- plugin.video.alfa/channels/vedohd.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/vedohd.py b/plugin.video.alfa/channels/vedohd.py index 71e3c5ba..4850640c 100644 --- a/plugin.video.alfa/channels/vedohd.py +++ b/plugin.video.alfa/channels/vedohd.py @@ -101,12 +101,14 @@ def findvideos(item): def generos(item): + findhost() patron = '([a-zA-Z]+)' return support.scrape(item, patron, ['url', 'title'], patron_block='Genere', action='peliculas', url_host=host) def year(item): - patron = '([a-zA-Z]+)' + findhost() + patron = r'(\d+)' return support.scrape(item, patron, ['url', 'title'], patron_block='Anno', action='peliculas', url_host=host) From 3b51f610d0ded221e848f63d2027e99a08ccf04a Mon Sep 17 00:00:00 2001 From: thepasto Date: Mon, 15 Apr 2019 22:42:35 +0200 Subject: [PATCH 02/10] Italiaserie updated and enabled --- plugin.video.alfa/channels/italiaserie.json | 2 +- plugin.video.alfa/channels/italiaserie.py | 311 +++++--------------- 2 files changed, 81 insertions(+), 232 deletions(-) diff --git a/plugin.video.alfa/channels/italiaserie.json b/plugin.video.alfa/channels/italiaserie.json index ce9d7686..ba094b25 100644 --- a/plugin.video.alfa/channels/italiaserie.json +++ b/plugin.video.alfa/channels/italiaserie.json @@ -1,7 +1,7 @@ { "id": "italiaserie", "name": "Italia Serie", - "active": false, + "active": true, "adult": false, "language": ["ita"], "thumbnail": "https:\/\/raw.githubusercontent.com\/Zanzibar82\/images\/master\/posters\/italiaserie.png", diff --git a/plugin.video.alfa/channels/italiaserie.py b/plugin.video.alfa/channels/italiaserie.py index 073f522a..2e0ae31e 100644 --- a/plugin.video.alfa/channels/italiaserie.py +++ b/plugin.video.alfa/channels/italiaserie.py @@ -4,34 +4,36 @@ # Canale per italiaserie # ---------------------------------------------------------- import re -import urlparse -from core import httptools, scrapertools, servertools -from core.item import Item +import autoplay +import filtertools +import support +from core import httptools, scrapertools from core import tmdb -from lib import unshortenit -from platformcode import config, logger +from core.item import Item +from platformcode import logger host = "https://italiaserie.org" +list_servers = ['speedvideo'] +list_quality = ['1080p', '720p', '480p'] + +IDIOMAS = {'Italiano': 'IT'} +list_language = IDIOMAS.values() + def mainlist(item): - logger.info("kod.italiaserie mainlist") - itemlist = [Item(channel=item.channel, - title="[COLOR azure]Aggiornamenti Serie TV[/COLOR]", - action="peliculas", - 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, - title="[COLOR azure]Ultimi Episodi[/COLOR]", - action="latestep", - url="%s/aggiornamento-episodi/" % 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, - title="[COLOR yellow]Cerca...[/COLOR]", - action="search", - extra="tvshow", - thumbnail="http://dc467.4shared.com/img/fEbJqOum/s7/13feaf0c8c0/Search")] + support.log() + itemlist = [] + + support.menu(itemlist, 'Ultime Uscite', 'peliculas', host + "/category/serie-tv/", "episode") + support.menu(itemlist, 'Ultimi Episodi', 'peliculas', host + "/ultimi-episodi/", "episode", 'latest') + support.menu(itemlist, 'Categorie', 'menu', host, "episode", args="Serie-Tv per Genere") + support.menu(itemlist, 'Cerca...', 'search', host, 'episode', args='serie') + + autoplay.init(item.channel, list_servers, list_quality) + autoplay.show_option(item.channel, itemlist) + return itemlist @@ -41,11 +43,13 @@ def newest(categoria): item = Item() try: if categoria == "series": - item.url = "%s/aggiornamento-episodi/" % host - item.action = "latestep" - itemlist = latestep(item) + item.url = host + "/ultimi-episodi/" + item.action = "peliculas" + item.args = "latest" + item.contentType = "episode" + itemlist = peliculas(item) - if itemlist[-1].action == "latestep": + if itemlist[-1].action == "peliculas": itemlist.pop() # Continua la ricerca in caso di errore @@ -58,107 +62,38 @@ def newest(categoria): return itemlist -def latestep(item): - itemlist = [] - - data = httptools.downloadpage(item.url).data - blocco = scrapertools.find_single_match(data, - r'

Aggiornamento Episodi

\s*
(.*?)

 

') - patron = r'(?:]+>||)(]*>([^<]+)<\/a>' - matches = re.compile(patron, re.DOTALL).findall(blocco) - - for scrapedtitle, scrapedurl, scraped_number_and_title in matches: - scrapedlang = scrapertools.find_single_match(scraped_number_and_title, r'(SUB-ITA)') - scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle).replace(scrapedlang, scrapedlang) - scrapedtitle = scrapertools.htmlclean(scrapedtitle).strip() - fulltitle = scrapedtitle.replace("–", "").replace(' ', '').strip() - - scraped_number_and_title = scrapertools.decodeHtmlentities(scraped_number_and_title.replace('×', 'x')) - seasonandep = scrapertools.find_single_match(scraped_number_and_title, r'(\d+x[0-9\-?]+)') - extra = r'%s(.*?)(?:|

)' - - # Multi Ep - if re.compile(r'[,-]\s*\d+', re.DOTALL).findall(scraped_number_and_title): - season = scrapertools.find_single_match(scraped_number_and_title, r'(\d+x)') - scraped_number_and_title = scraped_number_and_title.split(',') - for ep in scraped_number_and_title: - ep = (season + ep if season not in ep else ep).strip() - seasonandep = scrapertools.find_single_match(ep, r'(\d+x[0-9\-?]+)') - completetitle = "%s %s" % (scrapedtitle, ep) - - itemlist.append( - Item(channel=item.channel, - action="findepvideos", - title=completetitle, - contentSerieName=completetitle, - fulltitle=fulltitle, - url=scrapedurl, - extra=extra % seasonandep.replace('x', '×'), - folder=True)) - continue - - # Ep singolo - correct_scraped_number = seasonandep.replace('x', '×') - extra = extra % (correct_scraped_number) - completetitle = ("%s %s %s" % ( - scrapedtitle, scraped_number_and_title, "(%s)" % scrapedlang if scrapedlang else scrapedlang)).strip() - itemlist.append( - Item(channel=item.channel, - action="findepvideos", - title=completetitle, - contentSerieName=completetitle, - fulltitle=fulltitle, - url=scrapedurl, - extra=extra, - folder=True)) - - tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) - return itemlist - - def peliculas(item): logger.info("kod.italiaserie peliculas") - itemlist = [] + patron = r'
\s*\s*]+>' + list_groups = ["url", "title", "thumb"] - # Carica la pagina - data = httptools.downloadpage(item.url).data + support.log(item.tojson()) - # Estrae i contenuti - patron = '
\s*\s*]+>' - matches = re.compile(patron, re.DOTALL).findall(data) + if item.args == "latest": + patron += r'.*?aj-eps">(.*?)' + data = httptools.downloadpage(item.url).data + matches = re.compile(patron, re.S).findall(data) + itemlist = [] - for scrapedurl, scrapedtitle, scrapedthumbnail in matches: - scrapedplot = "" - scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle) - scrapedurl = scrapedurl.replace("-1/", "-links/") + for scrapedurl, scrapedtitle, scrapedthumbnail, scrapedep in matches: + itemlist.append( + Item(channel=item.channel, + action="seasons", + contentType=item.contentType, + title="[B]" + scrapedtitle + "[/B] " + scrapedep, + fulltitle=scrapedtitle, + show=scrapedtitle, + url=scrapedurl, + extra=item.extra, + args=scrapedep + )) - itemlist.append( - Item(channel=item.channel, - action="episodios", - fulltitle=scrapedtitle, - show=scrapedtitle, - title="[COLOR azure]" + scrapedtitle + "[/COLOR]", - url=scrapedurl, - thumbnail=scrapedthumbnail, - plot=scrapedplot, - folder=True)) + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + return itemlist + else: + patron_next = r']*>', '', scrapedtitle).strip() - if scrapedtitle != 'Categorie': - scrapedtitle = scrapedtitle.replace('×', 'x') - scrapedtitle = scrapedtitle.replace('×', 'x') - itemlist.append( - Item(channel=item.channel, - action="findvideos", - contentType="episode", - title="[COLOR azure]%s[/COLOR]" % (scrapedtitle + " (" + lang_title + ")"), - url=data, - thumbnail=item.thumbnail, - extra=item.extra, - fulltitle=scrapedtitle + " (" + lang_title + ")" + ' - ' + item.show, - show=item.show)) +def menu(item): + patron = r'
  • (.*?)' + return support.scrape(item, patron, ["url", "title"], action="peliculas") - logger.info("[italiaserie.py] episodios") - itemlist = [] +def seasons(item): + patron = r'
    ' + itemlist = support.scrape(item, patron, ["title", "url"], action="episodios") - # Download pagina - data = httptools.downloadpage(item.url).data - data = scrapertools.decodeHtmlentities(data) - if 'CLICCA QUI PER GUARDARE TUTTI GLI EPISODI' in data: - item.url = re.sub('\-\d+[^\d]+$', '-links', item.url) - data = httptools.downloadpage(item.url).data - data = scrapertools.decodeHtmlentities(data) - data = scrapertools.find_single_match(data, '
    (.*?)
    ') + if item.args != "": + s, ep = scrapertools.find_single_match(item.args, r'(\d+)x(\d+)\s') + s = (int(s) - 1) + lastitem = itemlist[s] + lastitem.args = ep - lang_titles = [] - starts = [] - patron = r"Stagione.*?ITA" - matches = re.compile(patron, re.IGNORECASE).finditer(data) - for match in matches: - season_title = match.group() - if season_title != '': - lang_titles.append('SUB ITA' if 'SUB' in season_title.upper() else 'ITA') - starts.append(match.end()) - - i = 1 - len_lang_titles = len(lang_titles) - - while i <= len_lang_titles: - inizio = starts[i - 1] - fine = starts[i] if i < len_lang_titles else -1 - - html = data[inizio:fine] - lang_title = lang_titles[i - 1] - - load_episodios(html, item, itemlist, lang_title) - - i += 1 - - 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="episodios", - show=item.show)) + return episodios(lastitem) return itemlist +def episodios(item): + patron = r'