166 lines
5.4 KiB
Python
166 lines
5.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# ------------------------------------------------------------
|
|
# KoD - XBMC Plugin
|
|
# Canale polpotv
|
|
# ------------------------------------------------------------
|
|
|
|
from core import scrapertools, httptools, support, jsontools
|
|
from core.item import Item
|
|
from platformcode import config
|
|
import json, 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):
|
|
menu = [
|
|
('Ultimi Film aggiunti', ['/api/movies?order[releaseDate]=desc&lastReleaseAt[null]=false', 'peliculas', '']),
|
|
('Generi', ['/api/genres', 'search_movie_by_genre', '']),
|
|
('Anni {film}', ['', 'search_movie_by_year', '']),
|
|
('Cerca Film... bold', ['', 'search', ''])
|
|
]
|
|
return locals()
|
|
|
|
def newest(categoria):
|
|
support.log()
|
|
item = Item()
|
|
if categoria == 'peliculas':
|
|
item.contentType = 'movie'
|
|
item.url = host + '/api/movies?order[releaseDate]=desc&lastReleaseAt[null]=false'
|
|
return peliculas(item)
|
|
|
|
def peliculas(item):
|
|
support.log()
|
|
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 support.inspect.stack()[1][3] not in ['newest']:
|
|
support.nextPage(itemlist, item, next_page=json_object['hydra:view']['hydra:next'])
|
|
except:
|
|
pass
|
|
|
|
return itemlist
|
|
|
|
def search(item, texto):
|
|
support.log(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():
|
|
support.logger.error("%s" % line)
|
|
return []
|
|
|
|
def search_movie_by_genre(item):
|
|
support.log()
|
|
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=support.typo(genre['name'],'bold'),
|
|
contentType='movie',
|
|
url="%s/api/movies?genres.id=%s" %(host,genre['id']),
|
|
extra=item.extra))
|
|
return support.thumb(itemlist, True)
|
|
|
|
def search_movie_by_year(item):
|
|
support.log()
|
|
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=support.typo(year_to_search,'bold'),
|
|
action="peliculas"))
|
|
return itemlist
|
|
|
|
def findvideos(item):
|
|
support.log()
|
|
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):
|
|
support.log()
|
|
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=support.typo(scrapedtitle,'bold') + support.typo(movie['lastQuality'].upper(), '_ [] color kod bold'),
|
|
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
|