diff --git a/channels/discoveryplus.py b/channels/discoveryplus.py index 46fa28e3..75a3dbdd 100644 --- a/channels/discoveryplus.py +++ b/channels/discoveryplus.py @@ -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) \ No newline at end of file diff --git a/channels/serietvonline.py b/channels/serietvonline.py index 69d34d9f..3b69688c 100644 --- a/channels/serietvonline.py +++ b/channels/serietvonline.py @@ -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
(?P.*?)