diff --git a/addon.xml b/addon.xml index 6579318c..b8635dd1 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + diff --git a/channels.json b/channels.json new file mode 100644 index 00000000..53f1eb08 --- /dev/null +++ b/channels.json @@ -0,0 +1,52 @@ +{ + "altadefinizione01_club": "https://www.altadefinizione01.cc", + "altadefinizione01_link": "http://altadefinizione01.link", + "altadefinizione01": "https://altadefinizione01.to", + "altadefinizioneclick": "https://altadefinizione.cloud", + + "altadefinizioneclub": "https://altadefinizione.cloud", + "altadefinizionehd": "https://altadefinizionehd.org", + "animeforge": "https://ww1.animeforce.org", + "animeleggendari": "https://animepertutti.com", + "animestream": "https://www.animeworld.it", + "animesubita": "http://www.animesubita.org", + "animetubeita": "http://www.animetubeita.com", + "animevision": "https://www.animevision.it", + "animeworld": "https://www.animeworld.it", + "asiansubita": "http://asiansubita.altervista.org", + "casacinema": "https://www.casacinema.site", + "cb01anime": "http://www.cineblog01.ink/anime/", + "cineblog01": "https://cb01.tools", + "documentaristreamingdb": "https://documentari-streaming-da.com", + "downloadme": "https://www.downloadme.gratis", + "dragonballforever": "https://www.dragonballforever.it", + "dreamsub": "https://www.dreamsub.stream", + "eurostreaming": "https://eurostreaming.gratis", + "eurostreaming_video": "https://www.eurostreaming.best", + "fastsubita": "http://fastsubita.com", + "ffilms":"https://ffilms.org", + "filmgratis": "https://www.filmaltadefinizione.net", + "filmontv": "https://www.comingsoon.it", + "filmpertutti": "https://www.filmpertutti.tube", + "filmsenzalimiti_blue": "https://filmsenzalimiti.best", + "filmsenzalimiti_info": "https://www.filmsenzalimiti.host", + "filmstreaming01": "https://filmstreaming01.com", + "filmstreamingita": "http://filmstreamingita.live", + "guarda_serie": "https://guardaserie.site", + "guardafilm": "http://www.guardafilm.top", + "guardaserie_stream": "https://guardaserie.co", + "guardaserieonline": "http://www.guardaserie.media", + "guardogratis": "http://guardogratis.io", + "ilgeniodellostreaming": "https://ilgeniodellostreaming.pw", + "italiaserie": "https://italiaserie.org", + "italiafilm": "https://www.italia-film.pw", + "italiafilmvedohd": "https://italiafilm.info", + "italiaserie_uno": "https:://italiaserie.org", + "majintoon": "https://toonitalia.org", + "mondoserietv": "https://mondoserietv.com", + "piratestreaming": "https://www.piratestreaming.watch", + "seriehd": "https://www.seriehd.info", + "serietvonline": "https://serietvonline.xyz", + "serietvu": "https://www.serietvu.club", + "tantifilm": "https://www.tantifilm.plus" +} diff --git a/channels/altadefinizione01.py b/channels/altadefinizione01.py index 89698cd7..a9f17b5e 100644 --- a/channels/altadefinizione01.py +++ b/channels/altadefinizione01.py @@ -9,7 +9,10 @@ from platformcode import logger, config from specials import autoplay #URL che reindirizza sempre al dominio corrente -host = "https://altadefinizione01.to" +#host = "https://altadefinizione01.to" + +__channel__ = "altadefinizione01" +host = config.get_addon_version(__channel__) IDIOMAS = {'Italiano': 'IT'} list_language = IDIOMAS.values() diff --git a/channels/altadefinizione01_club.py b/channels/altadefinizione01_club.py index 3185eaa4..b24bf0b2 100644 --- a/channels/altadefinizione01_club.py +++ b/channels/altadefinizione01_club.py @@ -12,10 +12,7 @@ from platformcode import config, logger from specials import autoplay, filtertools __channel__ = "altadefinizione01_club" - -#host = "https://www.altadefinizione01.club/" # host da cambiare -#host = "https://www.altadefinizione01.team/" #aggiornato al 22 marzo 2019 -host = "https://www.altadefinizione01.vision/" #aggiornato al 30-04-209 +host = config.get_channel_url(__channel__) # ======== Funzionalità ============================= diff --git a/channels/altadefinizione01_link.py b/channels/altadefinizione01_link.py index 55f4f1c5..a779c9bc 100644 --- a/channels/altadefinizione01_link.py +++ b/channels/altadefinizione01_link.py @@ -13,19 +13,13 @@ from platformcode import config, logger __channel__ = "altadefinizione01_link" -#host = "https://altadefinizione01.link/" #riaggiornato al 29 aprile 2019 -#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.estate/" # aggiornato al 23 maggio 2019 - # ======== def per utility INIZIO ============================ list_servers = ['supervideo', 'streamcherry','rapidvideo', 'streamango', 'openload'] list_quality = ['default'] -host = config.get_setting("channel_host", __channel__) +#host = config.get_setting("channel_host", __channel__) +host = config.get_channel_url(__channel__) checklinks = config.get_setting('checklinks', __channel__) checklinks_number = config.get_setting('checklinks_number', __channel__) diff --git a/channels/altadefinizioneclick.py b/channels/altadefinizioneclick.py index a2e1031a..e4db4965 100644 --- a/channels/altadefinizioneclick.py +++ b/channels/altadefinizioneclick.py @@ -10,7 +10,9 @@ from core.item import Item from platformcode import logger, config from specials import autoplay -host = config.get_setting("channel_host", 'altadefinizioneclick') +#host = config.get_setting("channel_host", 'altadefinizioneclick') +__channel__ = 'altadefinizioneclick' +host = config.get_channel_url(__channel__) IDIOMAS = {'Italiano': 'IT'} list_language = IDIOMAS.values() @@ -29,7 +31,7 @@ def mainlist(item): support.menu(itemlist, 'Film', 'peliculas', host + "/nuove-uscite/") support.menu(itemlist, 'Per Genere submenu', 'menu', host, args='Film') support.menu(itemlist, 'Per Anno submenu', 'menu', host, args='Anno') - support.menu(itemlist, 'Sub-IIA', 'peliculas', host + "/sub-ita/") + support.menu(itemlist, 'Sub-ITA', 'peliculas', host + "/sub-ita/") support.menu(itemlist, 'Cerca...', 'search', host, 'movie') support.aplay(item, itemlist,list_servers, list_quality) support.channel_config(item, itemlist) diff --git a/channels/animeworld.py b/channels/animeworld.py index f2ef7dd6..94b10340 100644 --- a/channels/animeworld.py +++ b/channels/animeworld.py @@ -28,8 +28,8 @@ def mainlist(item): itemlist =[] - support.menu(itemlist, 'ITA submenu', 'build_menu', host + '/filter?', args=["anime", 'language[]=1']) - support.menu(itemlist, 'Sub-ITA submenu', 'build_menu', host + '/filter?', args=["anime", 'language[]=0']) + support.menu(itemlist, 'ITA submenu bold', 'build_menu', host + '/filter?', args=["anime", 'language[]=1']) + support.menu(itemlist, 'Sub-ITA submenu bold', 'build_menu', host + '/filter?', args=["anime", 'language[]=0']) support.menu(itemlist, 'Archivio A-Z submenu', 'alfabetico', host+'/az-list', args=["tvshow","a-z"]) support.menu(itemlist, 'In corso submenu', 'video', host+'/', args=["in sala"]) support.menu(itemlist, 'Generi submenu', 'generi', host+'/') diff --git a/channels/filmigratis.py b/channels/filmigratis.py index a7bc6a09..a900ae40 100644 --- a/channels/filmigratis.py +++ b/channels/filmigratis.py @@ -191,7 +191,7 @@ def peliculas_serie(item): data = httptools.downloadpage(item.url, headers=headers).data - patron = r'div class="cnt">.*?src="(.*?)".*?title="([A-Z|0-9].*?)".*?[^s]+src="([^"]+).*?small>\s+[^A-Z](.*?)<.*?(.*?)\s[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)

' - return support.scrape(item, patron, ['url', 'thumb', 'title'], patron_block=patron_block, action='episodios') + patron = r'
[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)<\/p>' + + matches = support.match(item, patron, patron_block, headers)[0] + + for scrapedurl, scrapedthumbnail, scrapedtitle in matches: + scrapedtitle = cleantitle(scrapedtitle) + + itemlist.append( + Item(channel=item.channel, + action="episodios", + contentType="episode", + title=scrapedtitle, + fulltitle=scrapedtitle, + url=scrapedurl, + show=scrapedtitle, + thumbnail=scrapedthumbnail, + folder=True)) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + return itemlist # ================================================================================================================ @@ -121,9 +140,45 @@ def serietvaggiornate(item): itemlist = [] patron_block = r'
(.*?)<\/div><\/div>]+> ]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^(?:<|\()]+)(?:\(([^\)]+)\))?[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)<[^>]+>' + patron = r']+>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)<[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)<[^>]+>' - return support.scrape(item, patron, ['url', 'thumb', 'episode', 'lang', 'title'], patron_block=patron_block, action='findvideos') + matches = support.match(item, patron, patron_block, headers)[0] + + for scrapedurl, scrapedthumbnail, scrapedep, scrapedtitle in matches: + episode = re.compile(r'^(\d+)x(\d+)', re.DOTALL).findall(scrapedep) # Prendo stagione ed episodioso + scrapedtitle = cleantitle(scrapedtitle) + + contentlanguage = "" + if 'sub-ita' in scrapedep.strip().lower(): + contentlanguage = 'Sub-ITA' + + extra = r']*>' % ( + episode[0][0], episode[0][1].lstrip("0")) + + infoLabels = {} + infoLabels['episode'] = episode[0][1].zfill(2) + infoLabels['season'] = episode[0][0] + + title = str( + "%s - %sx%s %s" % (scrapedtitle, infoLabels['season'], infoLabels['episode'], contentlanguage)).strip() + + itemlist.append( + Item(channel=item.channel, + action="findepvideos", + contentType="episode", + title=title, + show=scrapedtitle, + fulltitle=scrapedtitle, + url=scrapedurl, + extra=extra, + thumbnail=scrapedthumbnail, + contentLanguage=contentlanguage, + infoLabels=infoLabels, + folder=True)) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + return itemlist # ================================================================================================================ diff --git a/channels/mondolunatico2.json b/channels/mondolunatico2.json new file mode 100644 index 00000000..ed77f7a2 --- /dev/null +++ b/channels/mondolunatico2.json @@ -0,0 +1,65 @@ +{ + "id": "mondolunatico2", + "name": "MondoLunatico 2.0", + "language": ["ita"], + "active": true, + "adult": false, + "thumbnail": "mondolunatico2.png", + "banner": "mondolunatico2.png", + "categories": ["tvshow", "movie", "vosi", "anime"], + "settings": [ + { + "id": "include_in_global_search", + "type": "bool", + "label": "Includi in Ricerca Globale", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "include_in_newest_peliculas", + "type": "bool", + "label": "Includi in Novità - Film", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "include_in_newest_italiano", + "type": "bool", + "label": "Includi in Novità - Italiano", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "comprueba_enlaces", + "type": "bool", + "label": "Verifica se i link esistono", + "default": false, + "enabled": true, + "visible": true + }, + { + "id": "comprueba_enlaces_num", + "type": "list", + "label": "Numero di link da verificare", + "default": 1, + "enabled": true, + "visible": "eq(-1,true)", + "lvalues": [ "5", "10", "15", "20" ] + }, + { + "id": "filter_languages", + "type": "list", + "label": "Mostra link in lingua...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "Italiano" + ] + } + ] +} \ No newline at end of file diff --git a/channels/mondolunatico2.py b/channels/mondolunatico2.py new file mode 100644 index 00000000..8de1db93 --- /dev/null +++ b/channels/mondolunatico2.py @@ -0,0 +1,500 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------ +# Canale per MondoLunatico 2.0 +# ------------------------------------------------------------ + +import re +import urlparse +import urllib +import urllib2 +import time + +from channelselector import thumb +from specials import autoplay, filtertools +from core import scrapertools, httptools, tmdb, servertools, support, scrapertoolsV2 +from core.item import Item +from platformcode import logger, config, platformtools + +channel = "mondolunatico2" +host = "https://mondolunatico.org/stream/" +headers = [['Referer', host]] + +list_servers = ['verystream', 'wstream', 'openload', 'streamango'] +list_quality = ['HD', 'default'] + +def mainlist(item): + + # Main options + itemlist = [] + support.menu(itemlist, 'Novità bold', 'carousel', host, contentType='movie', args='movies') + support.menu(itemlist, 'Sub ITA bold', 'carousel_subita', host, contentType='movie', args='movies') + support.menu(itemlist, 'Ultime Richieste Inserite bold', 'carousel_request', host, contentType='movie', args='movies') + support.menu(itemlist, 'Film Nelle Sale bold', 'carousel_cinema', host, contentType='movie', args='movies') + support.menu(itemlist, 'Film Ultimi Inseriti submenu', 'carousel_last', host, contentType='movie', args='movies') + support.menu(itemlist, 'Film Top ImDb submenu', 'top_imdb', host + 'top-imdb/', contentType='movie', args='movies') + support.menu(itemlist, 'Serie TV', 'carousel_episodes', host, contentType='episode', args='tvshows') + support.menu(itemlist, 'Serie TV Top ImDb submenu', 'top_serie', host + 'top-imdb/', contentType='episode', args='tvshows') + support.menu(itemlist, '[COLOR blue]Cerca...[/COLOR] bold', 'search', host) + autoplay.init(item.channel, list_servers, list_quality) + autoplay.show_option(item.channel, itemlist) + + return itemlist + +# --------------------------------------------------------------------------------------------------------------------------------------------- + +def carousel(item, regex=r'

Ultime Richieste Inserite

(.*?)
', contentType="movie"): + logger.info("[mondolunatico2.py] carousel") + itemlist = [] + + data = httptools.downloadpage(item.url, headers=headers).data + + block = scrapertools.find_single_match(data,regex) + + patron = r'
Film SubITA(.*?)
', contentType="movie") +# --------------------------------------------------------------------------------------------------------------------------------------------- +def carousel_request(item): + return carousel(item, regex=r'

Ultime Richieste Inserite

(.*?)
', contentType="movie") +# --------------------------------------------------------------------------------------------------------------------------------------------- +def carousel_cinema(item): + return carousel(item, regex=r'

Nelle Sale

(.*?)
', contentType="movie") +# --------------------------------------------------------------------------------------------------------------------------------------------- +def carousel_last(item): + return carousel(item, regex=r'

Ultimi Film Inseriti

(.*?)
', contentType="movie") +# --------------------------------------------------------------------------------------------------------------------------------------------- +def carousel_episodes(item): + return carousel(item, regex=r'

Serie TV

(.*?)
', contentType="episode") +# --------------------------------------------------------------------------------------------------------------------------------------------- + +def top_imdb(item, contentType='movie', regex=r'(.*?)

'): + logger.info("[mondolunatico2.py] top_imdb") + itemlist = [] + + minpage = 20 + p = 1 + if '{}' in item.url: + item.url, p = item.url.split('{}') + p = int(p) + + data = httptools.downloadpage(item.url, headers=headers).data + + block = scrapertools.find_single_match(data, regex) + + patron = r"
i: continue + if i >= p * minpage: break + scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle) + scrapedtitle = re.sub(r'[0-9]{4}', "", scrapedtitle) + scrapedthumbnail = scrapedthumbnail.replace ("-90x135","").replace("/w92/", "/w600_and_h900_bestv2/") + itemlist.append( + Item(channel=channel, + action="findvideos" if "movie" in contentType else "episodios", + contentType=item.contentType, + contentTitle=scrapedtitle, + title=scrapedtitle, + fulltitle=scrapedtitle, + url=scrapedurl, + show=scrapedtitle, + thumbnail=scrapedthumbnail, + args=item.args)) + + if len(matches) >= p * minpage: + thumbnail = thumb(itemlist=[]) + scrapedurl = item.url + '{}' + str(p + 1) + itemlist.append( + Item(channel=channel, + contentType=item.contentType, + action="top_imdb", + title="[COLOR blue][B]Successivo >[/B][/COLOR]", + thumbnail=thumbnail, + url=scrapedurl)) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + return itemlist + +# --------------------------------------------------------------------------------------------------------------------------------------------- +def top_serie(item): + return top_imdb(item, contentType='episode', regex=r'

TVShows

(.*?)