diff --git a/channels.json b/channels.json index af2f9220..aa156b8a 100644 --- a/channels.json +++ b/channels.json @@ -41,6 +41,7 @@ "mondolunatico2": "https://mondolunatico.org/stream", "mondoserietv": "https://mondoserietv.com", "piratestreaming": "https://www.piratestreaming.media", + "polpotv": "https://polpo.tv", "seriehd": "https://www.seriehd.zone", "serietvonline": "https://serietvonline.tech", "serietvsubita": "http://serietvsubita.xyz", diff --git a/channels/polpotv.json b/channels/polpotv.json new file mode 100644 index 00000000..e47c4dca --- /dev/null +++ b/channels/polpotv.json @@ -0,0 +1,22 @@ +{ + "id": "polpotv", + "name": "PolpoTV", + "language": ["ita"], + "active": true, + "adult": false, + "thumbnail": "https://polpo.tv/build/assets/apple-touch-icon-152x152.png", + "banner": "https://polpo.tv/build/assets/apple-touch-icon-152x152.png", + "categories": [ + "movie" + ], + "settings": [ + { + "id": "include_in_global_search", + "type": "bool", + "label": "Includi ricerca globale", + "default": false, + "enabled": false, + "visible": true + } + ] +} diff --git a/channels/polpotv.py b/channels/polpotv.py new file mode 100644 index 00000000..77833849 --- /dev/null +++ b/channels/polpotv.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------ +# kod - XBMC Plugin +# Canale polpotv +# ------------------------------------------------------------ + +from platformcode import logger +from core import scrapertools, httptools, support +from core.item import Item +from platformcode import config +from core import jsontools +import json +import datetime + +__channel__ = "polpotv" +host = config.get_channel_url(__channel__) + +headers = [['Accept', 'application/ld+json']] + +list_servers = ['directo'] +list_quality = ['1080p','720p','480p','360p'] + +@support.menu +def mainlist(item): + film = [ + ('Ultimi Film aggiunti', ['/api/movies?order[lastReleaseAt]=desc', 'peliculas', '']), + ('Generi', ['/api/genres', 'search_movie_by_genre', '']), + ('Anni', ['', 'search_movie_by_year', '']), + ] + return locals() + +def peliculas(item): + logger.info("kod.polpotv peliculas") + itemlist = [] + data = httptools.downloadpage(item.url, headers=headers).data + json_object = jsontools.load(data) + + for movie in json_object['hydra:member']: + itemlist.extend(get_itemlist_movie(movie,item)) + + try: + if json_object['hydra:view']['hydra:next'] is not None: + itemlist.append( + Item(channel=item.channel, + action="peliculas", + title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]", + url="%s"%host +json_object['hydra:view']['hydra:next'], + extra=item.extra, + thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png")) + except: + pass + + return itemlist + +def search(item, texto): + logger.info("kod.polpotv " + item.url + " search " + texto) + itemlist=[] + try: + item.url = host + "/api/movies?originalTitle="+texto+"&translations.name=" +texto + data = httptools.downloadpage(item.url, headers=headers).data + json_object = jsontools.load(data) + for movie in json_object['hydra:member']: + itemlist.extend(get_itemlist_movie(movie,item)) + return itemlist + # Continua la ricerca in caso di errore + except: + import sys + for line in sys.exc_info(): + logger.error("%s" % line) + return [] + +def search_movie_by_genre(item): + logger.info("kod.polpotv search_movie_by_genre") + itemlist = [] + data = httptools.downloadpage(item.url, headers=headers).data + json_object = jsontools.load(data) + for genre in json_object['hydra:member']: + itemlist.append( + Item(channel=item.channel, + action="peliculas", + title="[COLOR azure]" + genre['name'] + "[/COLOR]", + contentType='movie', + url="%s/api/movies?genres.id=%s" %(host,genre['id']), + extra=item.extra)) + return itemlist + +def search_movie_by_year(item): + logger.info("kod.polpo.tv search_movie_by_year") + now = datetime.datetime.now() + year = int(now.year) + itemlist = [] + for i in range(100): + year_to_search = year - i + itemlist.append(Item(channel=item.channel, + url="%s/api/movies?releaseDate=%s" %(host,year_to_search), + plot="1", + type="movie", + title="[COLOR azure]%s[/COLOR]" % year_to_search, + action="peliculas")) + return itemlist + +def findvideos(item): + logger.info("kod.polpotv peliculas") + itemlist = [] + try: + data = httptools.downloadpage(item.url, headers=headers).data + json_object = jsontools.load(data) + for video in json_object['hydra:member'][0]['playlist']['videos']: + data = httptools.downloadpage(video['src'], headers={'Origin': host},follow_redirects=None).data + patron = 'href="([^"]+)"' + video_link = scrapertools.find_single_match(data, patron) + itemlist.append( + Item( + channel=item.channel, + action="play", + thumbnail=item.thumbnail, + url=video_link, + server='directo', + quality=str(video['size'])+ 'p', + folder=False)) + except: + pass + return support.server(item, itemlist=itemlist) + +def get_itemlist_movie(movie,item): + logger.info("kod.polpotv get_itemlist_movie") + itemlist=[] + try: + if movie['originalLanguage']['id']=='it': + scrapedtitle=movie['originalTitle'] + else: + scrapedtitle=movie['translations'][1]['name'] + if scrapedtitle=='': + scrapedtitle=movie['originalTitle'] + except: + scrapedtitle=movie['originalTitle'] + try: + scrapedplot=movie['translations'][1]['overview'] + except: + scrapedplot = "" + try: + scrapedthumbnail="http://"+movie['posterPath'] + except: + scrapedthumbnail="" + try: + scrapedfanart="http://"+movie['backdropPath'] + except: + scrapedfanart="" + infoLabels = {} + infoLabels['tmdbid']=movie['tmdbId'] + itemlist.append( + Item(channel=item.channel, + action="findvideos", + title="[COLOR azure]"+ scrapedtitle + "[/COLOR]" + " [COLOR yellow]["+movie['lastQuality']+"][/COLOR] ", + fulltitle=scrapedtitle, + show=scrapedtitle, + plot=scrapedplot, + fanart=scrapedfanart, + thumbnail=scrapedthumbnail, + contentType='movie', + contentTitle=scrapedtitle, + url="%s%s/releases" %(host,movie['@id'] ), + infoLabels=infoLabels, + extra=item.extra)) + return itemlist diff --git a/core/support.py b/core/support.py index 105463c9..b916dfb0 100644 --- a/core/support.py +++ b/core/support.py @@ -933,7 +933,7 @@ def server(item, data='', itemlist=[], headers='', AutoPlay=True, CheckLinks=Tru videoitem.server = findS[2] videoitem.title = findS[0] item.title = item.contentTitle if config.get_localized_string(30161) in item.title else item.title - videoitem.title = item.fulltitle + typo(videoitem.title, '_ color kod []') + (typo(videoitem.quality, '_ color kod []') if videoitem.quality else "") + videoitem.title = item.fulltitle + (typo(videoitem.title, '_ color kod []') if videoitem.title else "") + (typo(videoitem.quality, '_ color kod []') if videoitem.quality else "") videoitem.fulltitle = item.fulltitle videoitem.show = item.show videoitem.thumbnail = item.thumbnail