Пример #1
0
    def resolve(self, item, captcha_cb=None, select_cb=None):
        result = []
        item = item.copy()
        play = get_params(item['url'])['play']
        playable = self.selectLiveChannel(play)
        if not playable:
            playable = ivysilani.Programme(play)
            image = ""  #os.path.join(_addon_.getAddonInfo('path'), 'resources', 'media', 'logo_' + playable.ID.lower() + '_400x225.png')
        if isinstance(playable, ivysilani.Programme):
            image = playable.imageURL
        manifest = util.request(playable.url(ivysilani.Quality("web")))
        #for m in re.finditer('#EXT-X-STREAM-INF:PROGRAM-ID=\d+,BANDWIDTH=(?P<bandwidth>\d+)\s(?P<chunklist>[^\s]+)', manifest, re.DOTALL):
        for m in re.finditer(
                '#EXT-X-STREAM-INF:PROGRAM-ID=\d+,BANDWIDTH=(?P<bandwidth>\d+),AUDIO="\d+"\s(?P<chunklist>[^\s]+)',
                manifest, re.DOTALL):
            item = self.video_item()
            item['title'] = _toString(playable.title)
            bandwidth = int(m.group('bandwidth'))
            if bandwidth < 500000:
                item['quality'] = "144p"
            if bandwidth >= 500000 and bandwidth < 1032000:
                item['quality'] = "288p"
            elif bandwidth >= 1032000 and bandwidth < 2048000:
                item['quality'] = "404p"
            elif bandwidth >= 2048000 and bandwidth < 3584000:
                item['quality'] = "576p"
            else:
                item['quality'] = "720p"
            item['url'] = m.group('chunklist')
            result.append(item)
        result = sorted(result, key=lambda i: i['quality'], reverse=True)
        if len(result) > 0 and select_cb:
            return select_cb(result)

        return result
Пример #2
0
 def listContext(what, ID, page):
     xbmcplugin.setContent(_handle_, "episodes")
     programme = ivysilani.Programme(ID)
     l = []
     if what == "related":
         l = programme.related(page)
     elif what == "episodes":
         l = programme.episodes(page)
     elif what == "bonuses":
         l = programme.bonuses(page)
     if page > 1:
         addDirectoryItem('[B]<< ' + _lang_(30007) + '[/B]',
                          _baseurl_ + "?" + what + "=" + ID + "&page=" +
                          str(page - 1),
                          image=_previous_)
     for item in l:
         plot = None
         if hasattr(item, "synopsis") and item.synopsis:
             plot = item.synopsis
         addDirectoryItem(item.title,
                          _baseurl_ + "?play=" + item.ID,
                          ID=item.ID,
                          related=True,
                          plot=plot,
                          image=item.imageURL)
     if len(l) == ivysilani.PAGE_SIZE:
         addDirectoryItem('[B]' + _lang_(30006) + ' >>[/B]',
                          _baseurl_ + "?" + what + "=" + ID + "&page=" +
                          str(page + 1),
                          image=_next_)
     _setViewMode("Media info")
     xbmcplugin.endOfDirectory(_handle_,
                               updateListing=(page > 1),
                               cacheToDisc=False)
Пример #3
0
 def listContext(self, what, ID, page):
     result = []
     programme = ivysilani.Programme(ID)
     l = []
     if what == "related":
         l = programme.related(page)
     elif what == "episodes":
         l = programme.episodes(page)
     elif what == "bonuses":
         l = programme.bonuses(page)
     if page > 1:
         item = self.dir_item()
         item['title'] = '[B]<< ' + _lang_(30007) + '[/B]'
         item['url'] = _baseurl_ + "?" + what + "=" + ID + "&page=" + str(
             page - 1)
         #item['img'] = _previous_
         result.append(item)
         #addDirectoryItem('[B]<< ' + _lang_(30007) + '[/B]', _baseurl_ + "?" + what + "=" + ID + "&page=" + str(page - 1), image=_previous_)
     for item in l:
         plot = None
         if hasattr(item, "synopsis") and item.synopsis:
             plot = item.synopsis
         itm = self.video_item()
         itm['title'] = item.title
         itm['url'] = _baseurl_ + "?play=" + item.ID
         itm['plot'] = plot
         itm['img'] = item.imageURL
         # cm.append((_lang_(30003), "XBMC.Container.Update(" + _baseurl_ + "?related=" + ID + ")"))
         # cm.append((_lang_(30004), "XBMC.Container.Update(" + _baseurl_ + "?episodes=" + ID + ")"))
         # cm.append((_lang_(30005), "XBMC.Container.Update(" + _baseurl_ + "?bonuses=" + ID + ")"))
         itm['menu'] = {}
         itm['menu'][_lang_(30003)] = {
             'list': _baseurl_ + "?related=" + item.ID,
             'action-type': 'list'
         }
         itm['menu'][_lang_(30004)] = {
             'list': _baseurl_ + "?episodes=" + item.ID,
             'action-type': 'list'
         }
         itm['menu'][_lang_(30005)] = {
             'list': _baseurl_ + "?bonuses=" + item.ID,
             'action-type': 'list'
         }
         result.append(itm)
         #addDirectoryItem(item.title, _baseurl_ + "?play=" + item.ID, ID=item.ID, related=True, plot=plot, image=item.imageURL)
     if len(l) == ivysilani.PAGE_SIZE:
         item = self.dir_item()
         item['title'] = '[B]' + _lang_(30006) + ' >>[/B]'
         item['url'] = _baseurl_ + "?" + what + "=" + ID + "&page=" + str(
             page + 1)
         #item['img'] =  _next_
         result.append(item)
     # addDirectoryItem('[B]' + _lang_(30006) + ' >>[/B]', _baseurl_ + "?" + what + "=" + ID + "&page=" + str(page + 1), image=_next_)
     return result
Пример #4
0
 def playProgramme(ID, skipAutoQuality=False):
     programme = ivysilani.Programme(ID)
     if _auto_quality_ and not skipAutoQuality:
         u = autoSelectQuality(programme)
         if u:
             playUrl(_toString(programme.title), u, programme.imageURL)
             return
     for quality in programme.available_qualities():
         url = programme.url(quality)
         addDirectoryItem(quality.label(), url=url, title=_toString(programme.title), image=programme.imageURL,
                          isFolder=False)
     xbmcplugin.endOfDirectory(_handle_, updateListing=False, cacheToDisc=False)
Пример #5
0
 def listLiveChannels(self):
     result = []
     for liveChannel in ivysilani.LIVE_CHANNELS:
         title = _toString(liveChannel.title)
         live_programme = liveChannel.programme()
         if hasattr(live_programme, "title") and live_programme.title:
             title += ": " + _toString(live_programme.title)
         plot = None
         if hasattr(live_programme, "time") and live_programme.time:
             plot = _toString(_lang_(30001)) + " " + _toString(
                 live_programme.time)
         if hasattr(
                 live_programme,
                 "elapsedPercentage") and live_programme.elapsedPercentage:
             plot += " (" + _toString(
                 live_programme.elapsedPercentage) + "%)"
         if hasattr(live_programme, "synopsis") and live_programme.synopsis:
             plot += "\n\n" + _toString(live_programme.synopsis)
         if live_programme.ID:
             try:
                 programme = ivysilani.Programme(live_programme.ID)
                 if programme.videoURL:
                     url = _baseurl_ + "?play=" + liveChannel.ID
                     item = self.video_item()
                     item['title'] = title
                     item['url'] = url
                     item['plot'] = plot
                     item['image'] = live_programme.imageURL
                     result.append(item)
                     #addDirectoryItem(title, url, ID=liveChannel.ID, plot=plot, image=live_programme.imageURL)
                     continue
             except:
                 pass
         title += " [" + _toString(_lang_(30002)) + "]"
         url = _baseurl_ + "?menu=live"
         item = self.dir_item()
         item['title'] = title
         item['url'] = url
         result.append(item)
         #addDirectoryItem(title, url, image=live_programme.imageURL)
     return result
Пример #6
0
 def listLiveChannels():
     xbmcplugin.setContent(_handle_, "episodes")
     for liveChannel in ivysilani.LIVE_CHANNELS:
         title = _toString(liveChannel.title)
         live_programme = liveChannel.programme()
         if hasattr(live_programme, "title") and live_programme.title:
             title += ": " + _toString(live_programme.title)
         plot = None
         if hasattr(live_programme, "time") and live_programme.time:
             plot = _toString(_lang_(30001)) + " " + _toString(
                 live_programme.time)
         if hasattr(
                 live_programme,
                 "elapsedPercentage") and live_programme.elapsedPercentage:
             plot += " (" + _toString(
                 live_programme.elapsedPercentage) + "%)"
         if hasattr(live_programme, "synopsis") and live_programme.synopsis:
             plot += "\n\n" + _toString(live_programme.synopsis)
         if live_programme.ID:
             try:
                 programme = ivysilani.Programme(live_programme.ID)
                 if programme.videoURL:
                     url = _baseurl_ + "?play=" + liveChannel.ID
                     addDirectoryItem(title,
                                      url,
                                      ID=liveChannel.ID,
                                      plot=plot,
                                      image=live_programme.imageURL)
                     continue
             except:
                 pass
         title += " [" + _toString(_lang_(30002)) + "]"
         url = _baseurl_ + "?menu=live"
         addDirectoryItem(title, url, image=live_programme.imageURL)
     xbmcplugin.endOfDirectory(_handle_,
                               updateListing=False,
                               cacheToDisc=False)
Пример #7
0
    episodes = None
    bonuses = None
    skip_auto = None
    force_quality = None
    page = 1
    params = get_params()
    assign_params(params)
    page = int(page)

    try:
        if play:
            skip_auto = (skip_auto is not None and skip_auto != "0")
            playable = selectLiveChannel(play)
            if not playable:
                if _show_subtitles_:
                    playable = ivysilani.Programme(play, subtitles_path=_subtitles_path_)
                else:
                    playable = ivysilani.Programme(play)
            playPlayable(playable, skip_auto, force_quality)
        elif genre:
            for g in ivysilani.genres():
                if g.link == genre:
                    listProgrammelist(g, episodes=True)
                    _setViewMode("Media info")
                    break
        elif letter:
            for l in ivysilani.alphabet():
                if _toString(l.link) == _toString(letter):
                    listProgrammelist(l, episodes=True)
                    _setViewMode("Media info")
                    break
Пример #8
0
    channel = None
    related = None
    episodes = None
    bonuses = None
    skip_auto = None
    page = 1
    params = get_params()
    assign_params(params)
    page = int(page)

    try:
        if play:
            skip_auto = (skip_auto is not None and skip_auto != "0")
            playable = selectLiveChannel(play)
            if not playable:
                playable = ivysilani.Programme(play)
            playPlayable(playable, skip_auto)
        elif genre:
            for g in ivysilani.genres():
                if g.link == genre:
                    listProgrammelist(g, episodes=True)
                    _setViewMode("Media info")
                    break
        elif letter:
            for l in ivysilani.alphabet():
                if _toString(l.link) == _toString(letter):
                    listProgrammelist(l, episodes=True)
                    _setViewMode("Media info")
                    break
        elif date and channel:
            listProgrammelist(ivysilani.Date(date, selectLiveChannel(channel)))