예제 #1
0
 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'])
예제 #2
0
 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)
예제 #3
0
 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()
예제 #4
0
 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()
예제 #5
0
 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()
예제 #6
0
 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)
예제 #7
0
 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()
예제 #8
0
 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()
예제 #9
0
 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()
예제 #10
0
 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()
예제 #11
0
 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()
예제 #12
0
 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()
예제 #13
0
 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()
예제 #14
0
 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)
예제 #15
0
 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()
예제 #16
0
 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()
예제 #17
0
 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)
예제 #18
0
 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)
예제 #19
0
 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()
예제 #20
0
 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()
예제 #21
0
    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)
예제 #22
0
 def apri_ricerca(self, sez):
     text = kodiutils.getKeyboardText(kodiutils.LANGUAGE(32131))
     self.elenco_cerca_sezione(sez, text, 1)
예제 #23
0
    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)