Fix Canali Live

This commit is contained in:
Alhaziel01
2021-02-05 16:59:06 +01:00
parent 9c8f33f7cf
commit b8ba6f9bba
4 changed files with 70 additions and 28 deletions

View File

@@ -142,7 +142,12 @@ def episodios(item):
return itemlist
def play(item):
if item.filter: item.id = liveDict()[item.filter]['id']
if item.filter:
item.id = liveDict()[item.filter]['id']
item.fulltitle = item.filter
item.forcethumb = True
item.no_return = 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',{})
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):

View File

@@ -118,6 +118,11 @@ def episodios(item):
def play(item):
support.info()
if item.filter:
for it in live(item):
if it.fulltitle == item.filter:
item = it
break
data = support.match(item).data
match = support.match(data, patron='/content/entry/data/(.*?).mp4').match
if match:

View File

@@ -10,6 +10,7 @@ if sys.version_info[0] >= 3: from urllib.parse import urlencode, quote
else: from urllib import urlencode, quote
if sys.version_info[0] >= 3: from concurrent import futures
else: from concurrent_py2 import futures
from collections import OrderedDict
host = ''
DRM = 'com.widevine.alpha'
@@ -120,10 +121,9 @@ def menu(item):
return itemlist
def live(item):
support.info()
itemlist = []
json = current_session.get(item.url).json()['entries']
def liveDict():
livedict = OrderedDict({})
json = current_session.get('https://feed.entertainment.tv.theplatform.eu/f/PR1GhC/mediaset-prod-all-stations?sort=ShortTitle').json()['entries']
for it in json:
urls = []
if it['tuningInstruction'] and not it['mediasetstation$digitalOnly']:
@@ -133,18 +133,25 @@ def live(item):
else:
for key in it['tuningInstruction']['urn:theplatform:tv:location:any']:
urls += key['publicUrls']
plot = support.typo(guide['currentListing']['mediasetlisting$epgTitle'],'bold') + '\n' + guide['currentListing']['mediasetlisting$shortDescription'] + '\n' + guide['currentListing']['description'] + '\n\n' + support.typo('A Seguire:' + guide['nextListing']['mediasetlisting$epgTitle'], 'bold')
title = it['title']
livedict[title] = {}
livedict[title]['urls'] = urls
livedict[title]['plot'] = support.typo(guide['currentListing']['mediasetlisting$epgTitle'],'bold') + '\n' + guide['currentListing']['mediasetlisting$shortDescription'] + '\n' + guide['currentListing']['description'] + '\n\n' + support.typo('A Seguire:' + guide['nextListing']['mediasetlisting$epgTitle'], 'bold')
return livedict
itemlist.append(item.clone(title=support.typo(it['title'], 'bold'),
fulltitle=it['title'],
show=it['title'],
contentTitle=it['title'],
thumbnail=it['thumbnails']['channel_logo-100x100']['url'],
forcethumb=True,
urls=urls,
plot=plot,
action='play',
no_return=True))
def live(item):
support.info()
itemlist = []
for key, value in liveDict().items():
itemlist.append(item.clone(title=support.typo(key, 'bold'),
fulltitle=key,
show=key,
contentTitle=key,
forcethumb=True,
urls=value['urls'],
plot=value['plot'],
action='play',
no_return=True))
return support.thumb(itemlist, live=True)
@@ -204,7 +211,9 @@ def peliculas(item):
plot=it['longDescription'] if 'longDescription' in it else it['description'] if 'description' in it else '',
urls=urls,
seriesid = it.get('seriesId',''),
url=it['mediasetprogram$pageUrl']))
url=it['mediasetprogram$pageUrl'],
forcethumb=True,
no_return=True))
return itemlist
@@ -258,7 +267,9 @@ def episodios(item):
fanart=it['thumbnails']['image_keyframe_poster-1280x720']['url'] if 'image_keyframe_poster-1280x720' in it['thumbnails'] else '',
plot=it['longDescription'] if 'longDescription' in it else it['description'],
urls=urls,
url=it['mediasetprogram$pageUrl']))
url=it['mediasetprogram$pageUrl'],
forcethumb=True,
no_return=True))
if episode:
itemlist = sorted(itemlist, key=lambda it: it.title)
support.videolibrary(itemlist, item)
@@ -267,12 +278,17 @@ def episodios(item):
def findvideos(item):
support.info()
itemlist = [support.Item(server='directo', title='Direct', url=item.urls, action='play')]
itemlist = [support.Item(server='directo', title='Mediaset Play', url=item.urls, action='play')]
return support.server(item, itemlist=itemlist, Download=False)
def play(item):
support.info()
if item.filter:
d = liveDict()[item.filter]
# support.dbg()
item = item.clone(title=support.typo(item.filter, 'bold'), fulltitle=item.filter, urls=d['urls'], plot=d['plot'], action='play', forcethumb=True, no_return=True)
support.thumb(item, live=True)
if not item.urls: urls = item.url
else: urls = item.urls
data = ''
@@ -285,6 +301,10 @@ def play(item):
item.drm = DRM
item.license = lic_url % support.match(sec_data, patron=r'pid=([^|]+)').match
data = support.match(sec_data, patron=r'<video src="([^"]+)').match
break
else:
support.dbg()
data = url
return support.servertools.find_video_items(item, data=data)

View File

@@ -5,6 +5,7 @@
import inspect
from core import support, jsontools
from platformcode import autorenumber, logger
from collections import OrderedDict
host = support.config.get_channel_url()
headers = [['Referer', host]]
@@ -39,24 +40,31 @@ def search(item, text):
return []
def live(item):
logger.debug()
itemlist=[]
def liveDict():
livedict = OrderedDict({})
urls=[]
matches = support.match(host, patron=r'(/diretta-tv/[^"]+)"[^>]+>([^ ]+)').matches
from datetime import date
today = date.today()
channels = jsontools.load(support.match(host + '/api/more/tvschedule/' + str(today.year) + str(today.month) + str(today.day)).data)['channels']
ch_dict = {}
for channel in channels:
ch_dict[channel['label']] = channel['channelId']
title = channel['label']
livedict[title] = {}
livedict[title]['id'] = channel['channelId']
for url, title in matches:
if url not in urls:
urls.append(url)
info = jsontools.load(support.match(host +'/api/on-air?channelId=' + ch_dict[title]).data)
support.info(info)
plot= '[B]' + info['seriesTitle'] +'[/B]\n' + info['description'] if 'seriesTitle' in info else ''
itemlist.append(item.clone(title=support.typo(title,'bold'), contentTitle=title, fulltitle=title, show=title, url=host+url, plot=plot, action='play', forcethumb=True, no_return=True))
livedict[title]['url'] = host + url
info = jsontools.load(support.match(host +'/api/on-air?channelId=' + livedict[title]['id']).data)
livedict[title]['plot']= '[B]' + info['seriesTitle'] +'[/B]\n' + info['description'] if 'seriesTitle' in info else ''
return livedict
def live(item):
logger.debug()
itemlist=[]
for key, value in liveDict().items():
itemlist.append(item.clone(title=support.typo(key,'bold'), contentTitle=key, fulltitle=key, show=key, url=value['url'], plot=value['plot'], action='play', forcethumb=True, no_return=True))
return support.thumb(itemlist, live=True)
@@ -154,4 +162,8 @@ def findvideos(item):
def play(item):
logger.debug()
if item.filter:
d = liveDict()[item.filter]
item = item.clone(title=support.typo(item.filter, 'bold'), fulltitle=item.filter, url=d['url'], plot=d['plot'], action='play', forcethumb=True, no_return=True)
support.thumb(item, live=True)
return support.servertools.find_video_items(item, data=item.url)