diff --git a/plugin.video.alfa/channels/cinemastreaming.json b/plugin.video.alfa/channels/cinemastreaming.json index d229b77b..a738a680 100644 --- a/plugin.video.alfa/channels/cinemastreaming.json +++ b/plugin.video.alfa/channels/cinemastreaming.json @@ -2,7 +2,7 @@ "id": "cinemastreaming", "name": "Cinemastreaming", "language": ["ita"], - "active": false, + "active": true, "adult": false, "thumbnail": "https://www.telegramitalia.it/wp-content/uploads/2018/02/IMG_20180222_214809_805.jpg", "banner": "https://www.telegramitalia.it/wp-content/uploads/2018/02/IMG_20180222_214809_805.jpg", diff --git a/plugin.video.alfa/channels/cinemastreaming.py b/plugin.video.alfa/channels/cinemastreaming.py index 84d3df33..e03a1f3e 100644 --- a/plugin.video.alfa/channels/cinemastreaming.py +++ b/plugin.video.alfa/channels/cinemastreaming.py @@ -4,77 +4,184 @@ # ------------------------------------------------------------ import re -from channels import filtertools -from core import scrapertools, servertools, httptools +from channels import filtertools, support, autoplay +from core import scrapertools, servertools, httptools, scrapertoolsV2 from core.item import Item -from platformcode import config -from core import tmdb -host = 'https://cinemastreaming.info' +host = 'https://cinemastreaming.icu' + +IDIOMAS = {'Italiano': 'IT'} +list_language = IDIOMAS.values() +list_servers = ['openload', 'streamango'] +list_quality = ['1080p', '1080p 3D', 'SD', 'CAM', 'default'] headers = [['Referer', host]] + def mainlist(item): - log() + support.log() # Menu Principale + itemlist = [] + support.menu(itemlist, 'Film bold', 'peliculas', host + '/film/') + support.menu(itemlist, 'Per genere submenu', 'menu', host, args="Film per Genere") + support.menu(itemlist, 'Anime bold', 'peliculas', host + '/category/anime/') + support.menu(itemlist, 'Serie TV bold', 'peliculas', host + '/serie-tv/', contentType='episode') + support.menu(itemlist, 'Ultime Uscite submenu', 'peliculas', host + "/stagioni/", "episode", args='latests') + support.menu(itemlist, 'Ultimi Episodi submenu', 'peliculas_latest_ep', host + "/episodi/", "episode", args='lateste') + support.menu(itemlist, '[COLOR blue]Cerca...[/COLOR]', 'search') - itemlist = [Item(channel = item.channel, - contentType = 'movie', - title = 'Film', - url = host + '/film/', - action = 'video', - thumbnail = '', - fanart = '' - ), - ] - - return itemlist - -def video(item): - log() - - itemlist = [] # Creo una lista Vuota - - # Carica la pagina - data = httptools.downloadpage(item.url, headers=headers).data - block = scrapertools.find_single_match(data, r'
(.*?)<\/main>') - block = re.sub('\t|\n', '', block) - - patron = r'.*?.*?src="([^"]+)".*?>.*?

([^<]+)<\/h3>(.*?)<\/article>' - matches = re.compile(patron, re.DOTALL).findall(block) - - for scrapedurl, scrapedthumb, scrapedtitle, scrapedinfo in matches: - log('Info Block', scrapedinfo) - patron = r'(.*?)<\/span>.*?(.*?)<\/span>.*?

(.*?)<\/p>.*?

(.*?)<\/p>

.*?(.*?)<\/a>.*?

(.*?)<\/p>' - info = re.compile(patron, re.DOTALL).findall(scrapedinfo) - for year, rating, plot, genre, director, cast in info: - genre = scrapertools.find_multiple_matches(genre, r'(.*?)<\/a>') - cast = scrapertools.find_multiple_matches(cast, r'(.*?)<\/a>') - - infoLabels = {} - infoLabels['Year'] = year - infoLabels['Rating'] = rating - infoLabels['Plot'] = plot - infoLabels['Genre'] = genre - infoLabels['Director'] = director - infoLabels['Cast'] = cast - - itemlist.append( - Item(channel=item.channel, - action="findvideos", - contentType=item.contentType, - title=scrapedtitle, - fulltitle=scrapedtitle, - url=scrapedurl, - thumbnail=scrapedthumb, - infoLabels = infoLabels, - show=scrapedtitle)) + autoplay.init(item.channel, list_servers, list_quality) + autoplay.show_option(item.channel, itemlist) return itemlist -def log(stringa1="", stringa2=""): - import inspect, os - from platformcode import logger - logger.info("[" + os.path.basename(__file__) + "] - [" + inspect.stack()[1][3] + "] " + str(stringa1) + str(stringa2)) \ No newline at end of file +def peliculas(item): + support.log() + list_groups = ["url", "thumb", "title", "year", "rating", "duration"] + + patron = r'([^<]+).*?Year">' + + if item.args == "latests": + patron += r'([^<]+)' + else: + patron += r'(\d{4}).*?AAIco-star.*?>([^<]+).*?AAIco-access_time">([^<]+).*?Qlty' + + patron_next = r'page-numbers current.*?href="([^"]+)"' + + if item.contentType == "movie": + patron += r'\">([^<]+)' + list_groups.append("quality") + + action = "findvideos" if item.contentType == "movie" or item.args == "lateste" else "episodios" + + return support.scrape(item, patron, list_groups, patronNext=patron_next, action=action) + + +def peliculas_latest_ep(item): + + patron = r'([^<]+)<\/span>([^<]+).*?([^<]+)' + + data = httptools.downloadpage(item.url).data + + matches = re.compile(patron, re.DOTALL).findall(data) + itemlist = [] + for scrapedurl, scrapedthumbnail, scrapednum, scrapedep, scrapedtitle in matches: + itemlist.append( + Item(channel=item.channel, + action="findvideos", + contentType=item.contentType, + title="[B]" + scrapednum + "[/B]" + scrapedep + " - " + scrapedtitle, + fulltitle=scrapedep + " " + scrapedtitle, + show=scrapedep + " " + scrapedtitle, + url=scrapedurl, + extra=item.extra, + thumbnail="http:" + scrapedthumbnail, + infoLabels=item.infoLabels + )) + + support.nextPage(itemlist, item, data, r'page-numbers current.*?href="([^"]+)"') + + return itemlist + + +def peliculas_menu(item): + itemlist = peliculas(item) + return itemlist[:-1] + + +def episodios(item): + patron = r'(.*?)<\/a>.*?>\d{4}<' + list_groups = ["url", "title", "year"] + + itemlist = support.scrape(item, patron, list_groups) + + for itm in itemlist: + fixedtitle = scrapertools.get_season_and_episode(itm.url) + itm.title = fixedtitle + " - " + itm.title + itm.fulltitle = fixedtitle + " - " + itm.fulltitle + + return itemlist + + +def menu(item): + patron_block = r'

' + patron = r'menu-category-list">([^<]+)<' + list_groups = ["url", "title"] + + return support.scrape(item, patron, list_groups, blacklist="Anime", action="peliculas_menu", patron_block=patron_block) + + +def search(item, texto): + support.log("s=", texto) + item.url = host + "/?s=" + texto + try: + return peliculas(item) + # Continua la ricerca in caso di errore + except Exception, e: + import traceback + traceback.print_stack() + support.log(str(e)) + return [] + + +def newest(categoria): + support.log("newest" + categoria) + itemlist = [] + item = Item() + try: + if categoria == "series": + item.url = host + "/episodi/" + item.action = "peliculas" + item.args = "lateste" + item.contentType = "episode" + itemlist = peliculas(item) + + if itemlist[-1].action == "peliculas": + itemlist.pop() + + # Continua la ricerca in caso di errore + except Exception, e: + import traceback + traceback.print_stack() + support.log(str(e)) + return [] + + return itemlist + + +def findvideos(item): + itemlist = [] + data = scrapertoolsV2.decodeHtmlentities(httptools.downloadpage(item.url).data) + btns = re.compile(r'data-tplayernv="Opt.*?>([^<]+)([^<]+)', re.DOTALL).findall(data) + matches = re.compile(r']+)"' + data = httptools.downloadpage(item.url).data + url = scrapertoolsV2.find_single_match(data, patron) + + itemlist = support.server(item, url) + + return itemlist