def riproduci_guid(self, guid): res = self.med.OttieniInfoDaGuid(guid) if not res or 'media' not in res: kodiutils.showOkDialog(kodiutils.LANGUAGE(32132), kodiutils.LANGUAGE(32136)) kodiutils.setResolvedUrl(solved=False) return self.riproduci_video(res['media'][0]['pid'])
def elenco_magazine(self, newsFeedUrl, page_action=""): arts = self.__getDirectoryArt() els, nextPage, prevPage = self.med.OttieniMagazine( newsFeedUrl, self.iperpage) update_listing = (page_action == 'next' or page_action == 'prev') if nextPage: kodiutils.addListItem(kodiutils.LANGUAGE(32130), { 'mode': 'magazine', 'newsFeedUrl': nextPage, 'page_action': 'next' }, properties={'SpecialSort': 'top'}, arts=self.__getForwardArt()) if prevPage: kodiutils.addListItem(kodiutils.LANGUAGE(32129), { 'mode': 'magazine', 'newsFeedUrl': prevPage, 'page_action': 'prev' }, properties={'SpecialSort': 'top'}, arts=self.__getBackwardArt()) for sec in els: if 'metainfo' in sec and 'ddg_url' in sec['metainfo']: kodiutils.addListItem(sec["title"], { 'mode': 'magazine', 'ddg_url': sec['metainfo']['ddg_url'] }, arts=arts) kodiutils.log(('update_listing: {}').format(str(update_listing)), 4) kodiutils.endScript(update_listing=update_listing)
def canali_live_play(self, guid): res = self.med.OttieniLiveStream(guid) infos = {} arts = {} title = '' if 'currentListing' in res[0]: self.__imposta_tipo_media(res[0]['currentListing']['program']) infos = _gather_info(res[0]['currentListing']) arts = _gather_art(res[0]['currentListing']['program']) title = ' - ' + infos['title'] if 'tuningInstruction' in res[0]: data = {'mode': 'live'} vdata = res[0]['tuningInstruction']['urn:theplatform:tv:location:any'] for v in vdata: if v['format'] == 'application/x-mpegURL': data['id'] = v['releasePids'][0] else: data['mid'] = v['releasePids'][0] kodiutils.addListItem(kodiutils.LANGUAGE(32137) + title, data, videoInfo=infos, arts=arts, isFolder=False) if ('currentListing' in res[0] and res[0]['currentListing']['mediasetlisting$restartAllowed']): url = res[0]['currentListing']['restartUrl'] vid = url.rpartition('/')[-1] kodiutils.addListItem(kodiutils.LANGUAGE(32138) + title, {'mode': 'video', 'pid': vid}, videoInfo=infos, arts=arts, isFolder=False) kodiutils.endScript()
def tv_root(self): arts = self.__getDirectoryArt() kodiutils.addListItem(kodiutils.LANGUAGE(32111), {'mode': 'canali_live'}, arts=arts) kodiutils.addListItem(kodiutils.LANGUAGE(32113), {'mode': 'guida_tv'}, arts=arts) kodiutils.endScript()
def elenco_tutto_root(self): kodiutils.addListItem(kodiutils.LANGUAGE(32121), { 'mode': 'tutto', 'all': 'true' }) kodiutils.addListItem(kodiutils.LANGUAGE(32122), { 'mode': 'tutto', 'all': 'false' }) kodiutils.endScript()
def riproduci_guid(self, guid='', offset=None): kodiutils.log('riproduci_guid: guid={}, offset={}'.format( guid, offset)) res = self.med.OttieniInfoDaGuid(guid) if not res or 'media' not in res: kodiutils.showOkDialog(kodiutils.LANGUAGE(32132), kodiutils.LANGUAGE(32136)) kodiutils.setResolvedUrl(solved=False) return self.riproduci_video(guid=guid, pid=res['media'][0]['pid'], offset=offset)
def elenco_cerca_sezione(self, sez, text, page=None): switcher = { 'programmi': 'CWSEARCHBRAND', 'clip': 'CWSEARCHCLIP', 'episodi': 'CWSEARCHEPISODE', 'film': 'CWSEARCHMOVIE' } sezcode = switcher.get(sez) if text: els, hasmore = self.med.Cerca(text, sezcode, pageels=self.iperpage, page=page) if els: exttitle = { 'programmi': False, 'clip': True, 'episodi': True, 'film': False } self.__analizza_elenco(els, True, titlewd=exttitle.get(sez, False)) if hasmore: kodiutils.addListItem( kodiutils.LANGUAGE(32130), { 'mode': 'cerca', 'search': text, 'type': sez, 'page': page + 1 if page else 2 }) kodiutils.endScript()
def elenco_sezione(self, sid, page=None): els, hasmore = self.med.OttieniProgrammiGenere( sid, pageels=self.iperpage, page=page) if els: self.__analizza_elenco(els, True) if hasmore: kodiutils.addListItem(kodiutils.LANGUAGE( 32130), {'mode': 'sezione', 'id': sid, 'page': page + 1 if page else 2}) kodiutils.endScript()
def elenco_cerca_root(self): kodiutils.addListItem(kodiutils.LANGUAGE(32115), { 'mode': 'cerca', 'type': 'programmi' }) kodiutils.addListItem(kodiutils.LANGUAGE(32116), { 'mode': 'cerca', 'type': 'clip' }) kodiutils.addListItem(kodiutils.LANGUAGE(32117), { 'mode': 'cerca', 'type': 'episodi' }) kodiutils.addListItem(kodiutils.LANGUAGE(32103), { 'mode': 'cerca', 'type': 'film' }) kodiutils.endScript()
def root(self): arts = self.__getDirectoryArt() kodiutils.addListItem('On Demand', {'mode': 'ondemand'}, arts=arts) kodiutils.addListItem('TV', {'mode': 'tv'}, arts=arts) kodiutils.addListItem('Play Cult', {'mode': 'cult'}, arts=arts) kodiutils.addListItem(kodiutils.LANGUAGE(32107), {'mode': 'cerca'}, arts=arts) kodiutils.addListItem('Le tue liste', {'mode': 'personal'}, arts=arts) kodiutils.endScript()
def elenco_kids_tutti(self, inonda, page=None): kodiutils.setContent('tvshows') els, hasmore = self.med.OttieniKids(inonda, pageels=self.iperpage, page=page) if els: self.__analizza_elenco(els) if hasmore: kodiutils.addListItem(kodiutils.LANGUAGE(32130), {'mode': 'kids', 'all': 'false' if inonda else 'true', 'page': page + 1 if page else 2}) kodiutils.endScript()
def elenco_tutto_lettere(self, inonda): letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '#'] kodiutils.addListItem(kodiutils.LANGUAGE( 32121), {'mode': 'tutto', 'all': 'false' if inonda else 'true', 'letter': 'all'}) for letter in letters: kodiutils.addListItem(letter.upper(), {'mode': 'tutto', 'all': 'false' if inonda else 'true', 'letter': letter}) kodiutils.endScript()
def canali_live_play(self, guid): res = self.med.OttieniLiveStream(guid) infos = {} arts = {} title = '' if 'currentListing' in res[0]: listing = res[0]['currentListing'] program = listing['program'] if 'program' in listing else {} self.__imposta_tipo_media(program) infos = _gather_info(listing) arts = _gather_art(program) title = program['title'] if 'title' in program else infos['title'] title = kodiutils.py2_decode(title) if 'tuningInstruction' in res[0]: data = {'mode': 'live'} vdata = res[0]['tuningInstruction'][ 'urn:theplatform:tv:location:any'] for v in vdata: if v['format'] == 'application/x-mpegURL': data['id'] = v['releasePids'][0] else: data['mid'] = v['releasePids'][0] infos['title'] = kodiutils.LANGUAGE(32137) + ' - ' + title kodiutils.addListItem(infos['title'], data, videoInfo=infos, arts=arts, properties={'ResumeTime': '0.0'}, isFolder=False) if ('currentListing' in res[0] and res[0]['currentListing']['mediasetlisting$restartAllowed']): url = res[0]['currentListing']['restartUrl'] vid = url.rpartition('/')[-1] infos['title'] = kodiutils.LANGUAGE(32138) + ' - ' + title kodiutils.addListItem(infos['title'], { 'mode': 'video', 'pid': vid }, videoInfo=infos, arts=arts, properties={'ResumeTime': '0.0'}, isFolder=False) kodiutils.endScript()
def elenco_video_list(self, sub_brand_id, mode='programma', sort='', page=0, size=0): kodiutils.log( "[main] elenco_video_list: sub_brand_id={},mode={},sort={},page={},size={}" .format(str(sub_brand_id), str(mode), str(sort), str(page), str(size))) # sort = 'mediasetprogram$publishInfo_lastPublished|{}'.format(order) page = int(page) size = int(size) update_listing = (page > 0) page = page if page else 1 if not size: size = self.iperpage els, hasMore = self.med.OttieniVideoSezione(sub_brand_id, sort=sort, page=page, size=size) if hasMore: kodiutils.addListItem(kodiutils.LANGUAGE(32130), { 'mode': mode, 'sub_brand_id': sub_brand_id, 'sort': sort, 'page': page + 1, 'size': size }, properties={'SpecialSort': 'top'}, arts=self.__getForwardArt()) if page > 1: kodiutils.addListItem(kodiutils.LANGUAGE(32129), { 'mode': mode, 'sub_brand_id': sub_brand_id, 'sort': sort, 'page': page - 1, 'size': size }, properties={'SpecialSort': 'top'}, arts=self.__getBackwardArt()) self.__analizza_elenco(els, True) kodiutils.endScript(update_listing=update_listing)
def root(self): # kodiutils.addListItem(kodiutils.LANGUAGE(32101), {'mode': 'tutto'}) kodiutils.addListItem(kodiutils.LANGUAGE(32106), {'mode': 'programmi'}) kodiutils.addListItem(kodiutils.LANGUAGE(32102), {'mode': 'fiction'}) kodiutils.addListItem(kodiutils.LANGUAGE(32103), {'mode': 'film'}) kodiutils.addListItem(kodiutils.LANGUAGE(32104), {'mode': 'kids'}) kodiutils.addListItem(kodiutils.LANGUAGE(32105), {'mode': 'documentari'}) kodiutils.addListItem(kodiutils.LANGUAGE(32111), {'mode': 'canali_live'}) kodiutils.addListItem(kodiutils.LANGUAGE(32113), {'mode': 'guida_tv'}) kodiutils.addListItem(kodiutils.LANGUAGE(32107), {'mode': 'cerca'}) kodiutils.endScript()
def elenco_tutto_lettera(self, inonda, lettera, page=None): kodiutils.setContent('videos') els, hasmore = self.med.OttieniTuttoLettera( lettera, inonda, pageels=self.iperpage, page=page) if els: self.__analizza_elenco(els) if hasmore: kodiutils.addListItem(kodiutils.LANGUAGE(32130), {'mode': 'tutto', 'all': 'false' if inonda else 'true', 'letter': lettera, 'page': page + 1 if page else 2}) kodiutils.endScript()
def elenco_sezione(self, id, page=0, sort='mediasetprogram$seasonTitle', order='asc', size=20): kodiutils.log( "[main] elenco_sezione: id={},page={},sort={},order={}".format( str(id), str(page), str(sort), str(order))) els, hasmore = self.med.OttieniProgrammiGenere(id, size, page, sort, order) kodiutils.log( 'elenco_sezione size={},hasmore={}: {}'.format( str(size), str(hasmore), str(els)), 4) update_listing = int(page) > 0 if page else False page = int(page) if page else 1 if els: if hasmore: kodiutils.addListItem(kodiutils.LANGUAGE(32130), { 'mode': 'sezione', 'id': id, 'page': page + 1 }, properties={'SpecialSort': 'top'}, arts=self.__getForwardArt()) if page > 1: kodiutils.addListItem(kodiutils.LANGUAGE(32129), { 'mode': 'sezione', 'id': id, 'page': page - 1 }, properties={'SpecialSort': 'top'}, arts=self.__getBackwardArt()) self.__analizza_elenco(els, True) # else: # kodiutils.addListItem('Ordina {}'.format('DESC' if sort and order == 'asc' else 'ASC'), { # 'mode': 'sezione', 'id': id, # 'sort': sort if sort else 'title', # 'order': 'desc' if sort and order == 'asc' else 'asc'}) kodiutils.endScript(update_listing=update_listing)
def elenco_cult(self, feedurl, page_action=""): els, nextPage, prevPage = self.med.OttieniCult(feedurl, self.iperpage) update_listing = (page_action == 'next' or page_action == 'prev') kodiutils.log(('elenco_cult: {}').format(str(update_listing)), 4) if nextPage: kodiutils.addListItem(kodiutils.LANGUAGE(32130), { 'mode': 'cult', 'feedurl': nextPage, 'page_action': 'next' }, properties={'SpecialSort': 'top'}, arts=self.__getForwardArt()) if prevPage: kodiutils.addListItem(kodiutils.LANGUAGE(32129), { 'mode': 'cult', 'feedurl': prevPage, 'page_action': 'prev' }, properties={'SpecialSort': 'top'}, arts=self.__getBackwardArt()) self.__analizza_elenco(els, True) kodiutils.endScript(update_listing=update_listing)
def elenco_cerca_root(self): arts = self.__getDirectoryArt() kodiutils.addListItem(kodiutils.LANGUAGE(32115), { 'mode': 'cerca', 'type': 'programmi' }, arts=arts) kodiutils.addListItem(kodiutils.LANGUAGE(32116), { 'mode': 'cerca', 'type': 'clip' }, arts=arts) kodiutils.addListItem(kodiutils.LANGUAGE(32117), { 'mode': 'cerca', 'type': 'episodi' }, arts=arts) kodiutils.addListItem(kodiutils.LANGUAGE(32103), { 'mode': 'cerca', 'type': 'film' }, arts=arts) kodiutils.endScript()
def elenco_video_list(self, subBrandId, start): if (kodiutils.getSettingAsBool('sortmediaset')): sort = 'mediasetprogram$publishInfo_lastPublished|desc' else: sort = 'mediasetprogram$publishInfo_lastPublished' els = self.med.OttieniVideoSezione(subBrandId, sort=sort, erange=self.__imposta_range(start)) self.__analizza_elenco(els, True) if len(els) == self.iperpage: kodiutils.addListItem( kodiutils.LANGUAGE(32130), { 'mode': 'programma', 'sub_brand_id': subBrandId, 'start': start + self.iperpage }) kodiutils.endScript()
def riproduci_video(self, pid, live=False): from inputstreamhelper import Helper # pylint: disable=import-error kodiutils.log("Trying to get the video from pid" + pid) data = self.med.OttieniDatiVideo(pid, live) if data['type'] == 'video/mp4': kodiutils.setResolvedUrl(data['url']) return is_helper = Helper('mpd', 'com.widevine.alpha' if data['security'] else None) if not is_helper.check_inputstream(): kodiutils.showOkDialog(kodiutils.LANGUAGE(32132), kodiutils.LANGUAGE(32133)) kodiutils.setResolvedUrl(solved=False) return headers = '&User-Agent={useragent}'.format(useragent=self.ua) props = {'manifest_type': 'mpd', 'stream_headers': headers} if data['security']: user = kodiutils.getSetting('email') password = kodiutils.getSetting('password') if user == '' or password == '': kodiutils.showOkDialog(kodiutils.LANGUAGE(32132), kodiutils.LANGUAGE(32134)) kodiutils.setResolvedUrl(solved=False) return if not self.med.login(user, password): kodiutils.showOkDialog(kodiutils.LANGUAGE(32132), kodiutils.LANGUAGE(32135)) kodiutils.setResolvedUrl(solved=False) return headers += '&Accept=*/*&Content-Type=' props['license_type'] = 'com.widevine.alpha' props['stream_headers'] = headers url = self.med.OttieniWidevineAuthUrl(data['pid']) props['license_key'] = '{url}|{headers}|R{{SSM}}|'.format( url=url, headers=headers) headers = { 'user-agent': self.ua, 't-apigw': self.med.apigw, 't-cts': self.med.cts } kodiutils.setResolvedUrl(data['url'], headers=headers, ins=is_helper.inputstream_addon, insdata=props)
def apri_ricerca(self, sez): text = kodiutils.getKeyboardText(kodiutils.LANGUAGE(32131)) self.elenco_cerca_sezione(sez, text, 1)
def riproduci_video(self, guid=None, pid=None, live=False, offset=None): from inputstreamhelper import Helper # pylint: disable=import-error # kodiutils.log("Trying to get the video from pid %s" % pid) kodiutils.log( 'riproduci_video: guid={}, pid={}, live={}, offset={}'.format( guid, pid, live, offset)) data = self.med.OttieniDatiVideo(pid, live) kodiutils.log('riproduci_video: data={}'.format(str(data))) if data['type'] == 'video/mp4': kodiutils.setResolvedUrl(data['url']) return is_helper = Helper('mpd', 'com.widevine.alpha' if data['security'] else None) if not is_helper.check_inputstream(): kodiutils.showOkDialog(kodiutils.LANGUAGE(32132), kodiutils.LANGUAGE(32133)) kodiutils.setResolvedUrl(solved=False) return headers = '&User-Agent={useragent}'.format(useragent=self.ua) props = {'manifest_type': 'mpd', 'stream_headers': headers} properties = {'ResumeTime': '0.0'} isAutenticated = False scrobbling = kodiutils.getSettingAsNum('scrobbling') if scrobbling and not self.isAnonimous: properties['guid'] = guid if scrobbling == self.ADDON_SCROBBLING_CUSTOM: if offset: properties['offset'] = str(offset) else: user = kodiutils.getSetting('email') password = kodiutils.getSetting('password') isAutenticated = self.med.login(user, password) if isAutenticated: offset = self.med.getProgress(guid) if offset: properties['offset'] = str(offset) if data['security']: if not isAutenticated: user = kodiutils.getSetting('email') password = kodiutils.getSetting('password') if user == '' or password == '': kodiutils.showOkDialog(kodiutils.LANGUAGE(32132), kodiutils.LANGUAGE(32134)) kodiutils.setResolvedUrl(solved=False) return if not self.med.login(user, password): kodiutils.showOkDialog(kodiutils.LANGUAGE(32132), kodiutils.LANGUAGE(32135)) kodiutils.setResolvedUrl(solved=False) return headers += '&Accept=*/*&Content-Type=' props['license_type'] = 'com.widevine.alpha' props['stream_headers'] = headers url = self.med.OttieniWidevineAuthUrl(data['pid']) props['license_key'] = '{url}|{headers}|R{{SSM}}|'.format( url=url, headers=headers) headers = { 'user-agent': self.ua, 't-apigw': self.med.apigw, 't-cts': self.med.cts } kodiutils.log("riproduci_video properties: %s" % properties) kodiutils.setResolvedUrl(data['url'], headers=headers, ins=is_helper.inputstream_addon, insdata=props, properties=properties)