Fix Serie tv online e discovery
This commit is contained in:
+57
-31
@@ -32,7 +32,8 @@ def Dict(item):
|
|||||||
@support.menu
|
@support.menu
|
||||||
def mainlist(item):
|
def mainlist(item):
|
||||||
top = [('Dirette {bold}', ['', 'live']),
|
top = [('Dirette {bold}', ['', 'live']),
|
||||||
('Programmi {bullet bold tv}', ['', 'peliculas'])]
|
('Programmi {bullet bold tv}', ['/programmi', 'peliculas']),
|
||||||
|
('Generi {bullet bold tv}', ['', 'genres'])]
|
||||||
|
|
||||||
search = ''
|
search = ''
|
||||||
|
|
||||||
@@ -53,9 +54,8 @@ def liveDict():
|
|||||||
|
|
||||||
def search(item, text):
|
def search(item, text):
|
||||||
itemlist = []
|
itemlist = []
|
||||||
support.info(text)
|
item.args = 'search'
|
||||||
item.search = text
|
item.text = text
|
||||||
|
|
||||||
try:
|
try:
|
||||||
itemlist = peliculas(item)
|
itemlist = peliculas(item)
|
||||||
except:
|
except:
|
||||||
@@ -70,42 +70,68 @@ def live(item):
|
|||||||
logger.debug()
|
logger.debug()
|
||||||
itemlist =[]
|
itemlist =[]
|
||||||
for name, values in liveDict().items():
|
for name, values in liveDict().items():
|
||||||
logger.debug(name)
|
|
||||||
itemlist.append(item.clone(title=typo(name), fulltitle=name, plot=values['plot'], url=values['url'], id=values['id'], action='play', forcethumb=True, no_return=True))
|
itemlist.append(item.clone(title=typo(name), fulltitle=name, plot=values['plot'], url=values['url'], id=values['id'], action='play', forcethumb=True, no_return=True))
|
||||||
itemlist.sort(key=lambda item: int(item.id))
|
|
||||||
return support.thumb(itemlist, live=True)
|
return support.thumb(itemlist, live=True)
|
||||||
|
|
||||||
|
|
||||||
|
def genres(item):
|
||||||
|
item.action = 'peliculas'
|
||||||
|
itemlist = [
|
||||||
|
item.clone(title='Attualità e inchiesta', url='/genere/attualita-e-inchiesta'),
|
||||||
|
item.clone(title='Beauty and style', url='/genere/beauty-and-style'),
|
||||||
|
item.clone(title='Serie TV', url='/genere/serie-tv'),
|
||||||
|
item.clone(title='Casa', url='/genere/casa'),
|
||||||
|
item.clone(title='Comedy', url='/genere/comedy'),
|
||||||
|
item.clone(title='Crime', url='/genere/crime'),
|
||||||
|
item.clone(title='Documentari', url='/genere/documentari'),
|
||||||
|
item.clone(title='Discovery + Originals', url='/genere/discoveryplus-original'),
|
||||||
|
item.clone(title='Food', url='/genere/food'),
|
||||||
|
item.clone(title='Medical', url='/genere/medical'),
|
||||||
|
item.clone(title='Motori', url='/genere/motori'),
|
||||||
|
item.clone(title='Natura', url='/genere/natura'),
|
||||||
|
item.clone(title='Paranormal', url='/genere/paranormal'),
|
||||||
|
item.clone(title='People', url='/genere/people'),
|
||||||
|
item.clone(title='Real Adventure', url='/genere/real-adventure'),
|
||||||
|
item.clone(title='Real Life', url='/genere/real-life'),
|
||||||
|
item.clone(title='Scienza e Spazio', url='/genere/scienza-e-spazio'),
|
||||||
|
item.clone(title='Sex and love', url='/genere/sex-and-love'),
|
||||||
|
item.clone(title='Sport', url='/genere/sport'),
|
||||||
|
item.clone(title='Talent Show', url='/genere/talent-show'),
|
||||||
|
]
|
||||||
|
return itemlist
|
||||||
|
|
||||||
|
|
||||||
def peliculas(item):
|
def peliculas(item):
|
||||||
logger.debug()
|
logger.debug()
|
||||||
itemlist =[]
|
itemlist =[]
|
||||||
pdict = session.get(api + '/cms/routes/free?decorators=viewingHistory&include=default', headers=headers).json()['included']
|
if 'search' in item.args:
|
||||||
|
pdict = session.get(api + '/content/shows?include=genres,images,primaryChannel.images,contentPackages&page[size]=12&query=' + item.text, headers=headers).json()['data']
|
||||||
|
else:
|
||||||
|
pdict = session.get(api + '/cms/routes{}?decorators=viewingHistory&include=default'.format(item.url), headers=headers).json()['included']
|
||||||
images = list(filter(lambda x: x['type'] == 'image', pdict))
|
images = list(filter(lambda x: x['type'] == 'image', pdict))
|
||||||
|
|
||||||
for key in pdict:
|
for key in pdict:
|
||||||
if key['type'] == 'show' and 'Free' in str(key.get('relationships',{}).get('contentPackages',{}).get('data',[])):
|
if key['type'] == 'show' and 'Free' in str(key.get('relationships',{}).get('contentPackages',{}).get('data',[])):
|
||||||
logger.debug(key['attributes']['name'], key['type'], '\n', jsontools.dump(key))
|
|
||||||
title = key['attributes']['name']
|
title = key['attributes']['name']
|
||||||
if item.search.lower() in title.lower():
|
plot = key['attributes'].get('description','')
|
||||||
plot = key['attributes']['description']
|
url = '{}/programmi/{}'.format(host, key['attributes']['alternateId'])
|
||||||
url = '{}/programmi/{}'.format(host, key['attributes']['alternateId'])
|
seasons = key['attributes']['seasonNumbers']
|
||||||
seasons = key['attributes']['seasonNumbers']
|
thumbs = [image['attributes']['src'] for image in images if image['id'] == key['relationships']['images']['data'][0]['id']]
|
||||||
thumbs = [image['attributes']['src'] for image in images if image['id'] == key['relationships']['images']['data'][0]['id']]
|
thumb = thumbs[0] if thumbs else item.thumbnail
|
||||||
thumb = thumbs[0] if thumbs else item.thumbnail
|
fanarts = [image['attributes']['src'] for image in images if len(key['relationships']['images']['data']) > 1 and image['id'] == key['relationships']['images']['data'][1]['id']]
|
||||||
fanarts = [image['attributes']['src'] for image in images if len(key['relationships']['images']['data']) > 1 and image['id'] == key['relationships']['images']['data'][1]['id']]
|
fanart = fanarts[0] if fanarts else item.fanart
|
||||||
fanart = fanarts[0] if fanarts else item.fanart
|
itemlist.append(
|
||||||
itemlist.append(
|
item.clone(title=typo(title,'bold'),
|
||||||
item.clone(title=typo(title,'bold'),
|
fulltitle=title,
|
||||||
fulltitle=title,
|
plot=plot,
|
||||||
plot=plot,
|
url=url,
|
||||||
url=url,
|
programid=key['attributes']['alternateId'],
|
||||||
programid=key['attributes']['alternateId'],
|
id=key['id'],
|
||||||
id=key['id'],
|
seasons=seasons,
|
||||||
seasons=seasons,
|
action='episodios',
|
||||||
action='episodios',
|
thumbnail=thumb,
|
||||||
thumbnail=thumb,
|
fanart=fanart,
|
||||||
fanart=fanart,
|
contentType='tvshow'))
|
||||||
contentType='tvshow'))
|
|
||||||
|
|
||||||
return itemlist
|
return itemlist
|
||||||
|
|
||||||
@@ -123,7 +149,7 @@ def episodios(item):
|
|||||||
season = session.get(url, headers=headers).json()
|
season = session.get(url, headers=headers).json()
|
||||||
if season.get('included', {}):
|
if season.get('included', {}):
|
||||||
for episode in season['included']:
|
for episode in season['included']:
|
||||||
if episode['type'] == 'video':
|
if episode['type'] == 'video' and 'Free' in episode['attributes']['packages']:
|
||||||
title = '{}x{:02d} - {}'.format(option['id'], episode['attributes']['episodeNumber'], episode['attributes']['name'])
|
title = '{}x{:02d} - {}'.format(option['id'], episode['attributes']['episodeNumber'], episode['attributes']['name'])
|
||||||
plot = episode['attributes']['description']
|
plot = episode['attributes']['description']
|
||||||
itemlist.append(
|
itemlist.append(
|
||||||
@@ -141,6 +167,7 @@ def episodios(item):
|
|||||||
if itemlist: itemlist.sort(key=lambda it: (int(it.season), int(it.episode)))
|
if itemlist: itemlist.sort(key=lambda it: (int(it.season), int(it.episode)))
|
||||||
return itemlist
|
return itemlist
|
||||||
|
|
||||||
|
|
||||||
def play(item):
|
def play(item):
|
||||||
if item.livefilter:
|
if item.livefilter:
|
||||||
item.id = liveDict()[item.livefilter]['id']
|
item.id = liveDict()[item.livefilter]['id']
|
||||||
@@ -150,11 +177,10 @@ def play(item):
|
|||||||
support.thumb(item, live=True)
|
support.thumb(item, live=True)
|
||||||
if item.contentType == 'episode': data = session.get('{}/playback/v2/videoPlaybackInfo/{}?usePreAuth=true'.format(api, item.id), headers=headers).json().get('data',{}).get('attributes',{})
|
if item.contentType == 'episode': data = session.get('{}/playback/v2/videoPlaybackInfo/{}?usePreAuth=true'.format(api, item.id), headers=headers).json().get('data',{}).get('attributes',{})
|
||||||
else: data = session.get('{}/playback/v2/channelPlaybackInfo/{}?usePreAuth=true'.format(api, item.id), headers=headers).json().get('data',{}).get('attributes',{})
|
else: data = session.get('{}/playback/v2/channelPlaybackInfo/{}?usePreAuth=true'.format(api, item.id), headers=headers).json().get('data',{}).get('attributes',{})
|
||||||
if data['protection'].get('drm_enabled',True):
|
if data.get('protection', {}).get('drm_enabled',True):
|
||||||
url = data['streaming']['dash']['url']
|
url = data['streaming']['dash']['url']
|
||||||
item.drm = 'com.widevine.alpha'
|
item.drm = 'com.widevine.alpha'
|
||||||
item.license = data['protection']['schemes']['widevine']['licenseUrl'] + '|PreAuthorization=' + data['protection']['drmToken'] + '|R{SSM}|'
|
item.license = data['protection']['schemes']['widevine']['licenseUrl'] + '|PreAuthorization=' + data['protection']['drmToken'] + '|R{SSM}|'
|
||||||
else:
|
else:
|
||||||
url = data['streaming']['hls']['url']
|
url = data['streaming']['hls']['url']
|
||||||
logger.debug(item.license)
|
|
||||||
return support.servertools.find_video_items(item, data=url)
|
return support.servertools.find_video_items(item, data=url)
|
||||||
@@ -35,7 +35,7 @@ def mainlist(item):
|
|||||||
|
|
||||||
|
|
||||||
film = ['/ultimi-film-aggiunti/',
|
film = ['/ultimi-film-aggiunti/',
|
||||||
('Lista', ['/lista-film/', 'peliculas', 'lista'])
|
('A-Z', ['/lista-film/', 'peliculas', 'lista'])
|
||||||
]
|
]
|
||||||
|
|
||||||
tvshow = ['',
|
tvshow = ['',
|
||||||
@@ -65,7 +65,7 @@ def peliculas(item):
|
|||||||
|
|
||||||
if item.args == 'search':
|
if item.args == 'search':
|
||||||
patronBlock = r'>Lista Serie Tv</a></li></ul></div><div id="box_movies">(?P<block>.*?)<div id="paginador">'
|
patronBlock = r'>Lista Serie Tv</a></li></ul></div><div id="box_movies">(?P<block>.*?)<div id="paginador">'
|
||||||
patron = r'<div class="movie">[^>]+[^>]+>\s?<img src="(?P<thumb>[^"]+)" alt="(?P<title>.+?)\s?(?P<year>[\d\-]+)?"[^>]+>\s?<a href="(?P<url>[^"]+)">'
|
patron = r'<div class="movie">[^>]+[^>]+>\s*<img src="(?P<thumb>[^"]+)" alt="(?P<title>.+?)(?:(?P<year>\d{4})|")[^>]*>\s*<a href="([^"]+)'
|
||||||
elif item.contentType == 'episode':
|
elif item.contentType == 'episode':
|
||||||
pagination = 35
|
pagination = 35
|
||||||
action = 'findvideos'
|
action = 'findvideos'
|
||||||
@@ -85,7 +85,7 @@ def peliculas(item):
|
|||||||
pagination = 25
|
pagination = 25
|
||||||
|
|
||||||
if item.args == 'lista':
|
if item.args == 'lista':
|
||||||
patron = r'href="(?P<url>[^"]+)"[^>]+>(?P<title>.*?)(?P<year>\d{4})?<'
|
patron = r'href="(?P<url>[^"]+)"[^>]+>(?P<title>.+?)(?:\s(?P<year>\d{4})|<)'
|
||||||
patronBlock = r'Lista dei film disponibili in streaming e anche in download\.</p>(?P<block>.*?)<div class="footer_c">'
|
patronBlock = r'Lista dei film disponibili in streaming e anche in download\.</p>(?P<block>.*?)<div class="footer_c">'
|
||||||
else:
|
else:
|
||||||
patron = r'<tr><td><a href="(?P<url>[^"]+)"(?:|.+?)?>(?: )?[ ]?(?P<title>.*?)[ ]?(?P<quality>HD)?[ ]?(?P<year>\d+)?(?: | HD | Streaming | MD(?: iSTANCE)? )?</a>'
|
patron = r'<tr><td><a href="(?P<url>[^"]+)"(?:|.+?)?>(?: )?[ ]?(?P<title>.*?)[ ]?(?P<quality>HD)?[ ]?(?P<year>\d+)?(?: | HD | Streaming | MD(?: iSTANCE)? )?</a>'
|
||||||
|
|||||||
Reference in New Issue
Block a user