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
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)
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
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)
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
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)
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
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)))