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

View File

@@ -32,7 +32,8 @@ def Dict(item):
@support.menu
def mainlist(item):
top = [('Dirette {bold}', ['', 'live']),
('Programmi {bullet bold tv}', ['', 'peliculas'])]
('Programmi {bullet bold tv}', ['/programmi', 'peliculas']),
('Generi {bullet bold tv}', ['', 'genres'])]
search = ''
@@ -53,9 +54,8 @@ def liveDict():
def search(item, text):
itemlist = []
support.info(text)
item.search = text
item.args = 'search'
item.text = text
try:
itemlist = peliculas(item)
except:
@@ -70,42 +70,68 @@ def live(item):
logger.debug()
itemlist =[]
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.sort(key=lambda item: int(item.id))
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):
logger.debug()
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))
for key in pdict:
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']
if item.search.lower() in title.lower():
plot = key['attributes']['description']
url = '{}/programmi/{}'.format(host, key['attributes']['alternateId'])
seasons = key['attributes']['seasonNumbers']
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
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
itemlist.append(
item.clone(title=typo(title,'bold'),
fulltitle=title,
plot=plot,
url=url,
programid=key['attributes']['alternateId'],
id=key['id'],
seasons=seasons,
action='episodios',
thumbnail=thumb,
fanart=fanart,
contentType='tvshow'))
plot = key['attributes'].get('description','')
url = '{}/programmi/{}'.format(host, key['attributes']['alternateId'])
seasons = key['attributes']['seasonNumbers']
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
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
itemlist.append(
item.clone(title=typo(title,'bold'),
fulltitle=title,
plot=plot,
url=url,
programid=key['attributes']['alternateId'],
id=key['id'],
seasons=seasons,
action='episodios',
thumbnail=thumb,
fanart=fanart,
contentType='tvshow'))
return itemlist
@@ -123,7 +149,7 @@ def episodios(item):
season = session.get(url, headers=headers).json()
if season.get('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'])
plot = episode['attributes']['description']
itemlist.append(
@@ -141,6 +167,7 @@ def episodios(item):
if itemlist: itemlist.sort(key=lambda it: (int(it.season), int(it.episode)))
return itemlist
def play(item):
if item.livefilter:
item.id = liveDict()[item.livefilter]['id']
@@ -150,11 +177,10 @@ def play(item):
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',{})
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']
item.drm = 'com.widevine.alpha'
item.license = data['protection']['schemes']['widevine']['licenseUrl'] + '|PreAuthorization=' + data['protection']['drmToken'] + '|R{SSM}|'
else:
url = data['streaming']['hls']['url']
logger.debug(item.license)
return support.servertools.find_video_items(item, data=url)

View File

@@ -35,7 +35,7 @@ def mainlist(item):
film = ['/ultimi-film-aggiunti/',
('Lista', ['/lista-film/', 'peliculas', 'lista'])
('A-Z', ['/lista-film/', 'peliculas', 'lista'])
]
tvshow = ['',
@@ -65,7 +65,7 @@ def peliculas(item):
if item.args == 'search':
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':
pagination = 35
action = 'findvideos'
@@ -85,7 +85,7 @@ def peliculas(item):
pagination = 25
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">'
else:
patron = r'<tr><td><a href="(?P<url>[^"]+)"(?:|.+?)?>(?:&nbsp;&nbsp;)?[ ]?(?P<title>.*?)[ ]?(?P<quality>HD)?[ ]?(?P<year>\d+)?(?: | HD | Streaming | MD(?: iSTANCE)? )?</a>'