Fix Serie tv online e discovery

This commit is contained in:
Alhaziel01
2021-02-13 12:38:20 +01:00
parent 2d7a950362
commit 6cefae53f6
2 changed files with 60 additions and 34 deletions
+57 -31
View File
@@ -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)
+3 -3
View File
@@ -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>[^"]+)"(?:|.+?)?>(?:&nbsp;&nbsp;)?[ ]?(?P<title>.*?)[ ]?(?P<quality>HD)?[ ]?(?P<year>\d+)?(?: | HD | Streaming | MD(?: iSTANCE)? )?</a>' patron = r'<tr><td><a href="(?P<url>[^"]+)"(?:|.+?)?>(?:&nbsp;&nbsp;)?[ ]?(?P<title>.*?)[ ]?(?P<quality>HD)?[ ]?(?P<year>\d+)?(?: | HD | Streaming | MD(?: iSTANCE)? )?</a>'