def select_cb(resolved): quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(resolved, quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] return resolved
def select_cb(resolved): stream_parts = [] stream_parts_dict = {} for stream in resolved: if stream['surl'] not in stream_parts_dict: stream_parts_dict[stream['surl']] = [] stream_parts.append(stream['surl']) if __settings__('filter_vp8') and vp8_youtube_filter(stream): continue stream_parts_dict[stream['surl']].append(stream) if len(stream_parts) == 1: dialog = xbmcgui.Dialog() quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(stream_parts_dict[stream_parts[0]], quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] opts = ['%s [%s]' % (r['title'], r['quality']) for r in resolved] ret = dialog.select(xbmcutil.__lang__(30005), opts) return resolved[ret] dialog = xbmcgui.Dialog() opts = [__language__(30059)] # when there are multiple stream, we let user choose only from best qualities opts = opts + ['%s [%s]' % (stream_parts_dict[p][0]['title'], stream_parts_dict[p][0]['quality']) for p in stream_parts] ret = dialog.select(xbmcutil.__lang__(30005), opts) if ret == 0: # requested to play all streams in given order - so return them all return [stream_parts_dict[p][0] for p in stream_parts] if ret >= 0: return stream_parts_dict[stream_parts[ret]][0]
def resolve_videos(link): product_id = _play_parser.get_productID(link) video = _play_parser.get_video(product_id) # '/playlist.m3u8' baseUrl = video.link[:video.link.index('playlist.m3u8')] manifest = _play_parser.get_manifest(video.link) result = [] for m in re.finditer('#EXT-X-STREAM-INF:.*?ANDWIDTH=(?P<bandwidth>\d+),RESOLUTION=.+\s(?P<chunklist>.+$\s)',manifest, re.MULTILINE): itm = {} bandwidth = int(m.group('bandwidth')) itm['bandwidth'] = bandwidth if bandwidth < 950000: itm['quality'] = "288p" elif bandwidth >= 950000 and bandwidth < 1150000: itm['quality'] = "360p" elif bandwidth >= 1150000 and bandwidth < 1660000: itm['quality'] = "480p" else: itm['quality'] = "720p" itm['title'] = "%s - %s" % (video.title, itm['quality']) itm['url'] = baseUrl + m.group('chunklist').replace('\n', '') itm['surl'] = video.title primalog.logDebug("item=%s" % itm) result.append(itm) result = sorted(result, key=lambda i: i['bandwidth'], reverse=True) result = resolver.filter_by_quality(result, _quality) if len(result) > 0: for videoItem in result: add_video(videoItem['title'],videoItem['url'])
def select_cb(resolved): stream_parts = [] stream_parts_dict = {} for stream in resolved: if stream['surl'] not in stream_parts_dict: stream_parts_dict[stream['surl']] = [] stream_parts.append(stream['surl']) if __settings__('filter_vp8') and vp8_youtube_filter(stream): continue stream_parts_dict[stream['surl']].append(stream) if len(stream_parts) == 1: dialog = xbmcgui.Dialog() quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(stream_parts_dict[stream_parts[0]], quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] opts = ['%s [%s]' % (r['title'], r['quality']) for r in resolved] ret = dialog.select(xbmcutil.__lang__(30005), opts) return resolved[ret] dialog = xbmcgui.Dialog() opts = [__language__(30059)] # when there are multiple stream, we let user choose only from best qualities opts = opts + ['%s [%s]' % (stream_parts_dict[p][0]['title'], stream_parts_dict[p][0]['quality']) for p in stream_parts] ret = dialog.select(xbmcutil.__lang__(30005), opts) if ret == 0: # requested to play all streams in given order - so return them all return [stream_parts_dict[p][0] for p in stream_parts] if ret >= 0: return stream_parts_dict[stream_parts[ret-1]][0]
def select_cb(resolved): stream_parts = [] stream_parts_dict = {} for stream in resolved: if stream['surl'] not in stream_parts_dict: stream_parts_dict[stream['surl']] = [] stream_parts.append(stream['surl']) stream_parts_dict[stream['surl']].append(stream) if len(stream_parts) == 1: dialog = xbmcgui.Dialog() quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(stream_parts_dict[stream_parts[0]], quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] opts = ['%s [%s]' % (r['title'], r['quality']) for r in resolved] ret = dialog.select(xbmcutil.__lang__(30005), opts) return resolved[ret] quality = self.settings['quality'] or '0' if quality == '0': dialog = xbmcgui.Dialog() opts = [__language__(30052),__language__(30053)] ret = dialog.select(xbmcutil.__lang__(30005), opts) if ret == 0: return [stream_parts_dict[p][0] for p in stream_parts] elif ret == 1: return [stream_parts_dict[p][-1] for p in stream_parts] else: return [stream_parts_dict[p][0] for p in stream_parts]
def select_cb(resolved): stream_parts = [] stream_parts_dict = {} for stream in resolved: if stream['surl'] not in stream_parts_dict: stream_parts_dict[stream['surl']] = [] stream_parts.append(stream['surl']) stream_parts_dict[stream['surl']].append(stream) if len(stream_parts) == 1: dialog = xbmcgui.Dialog() quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(stream_parts_dict[stream_parts[0]], quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] opts = ['%s [%s]' % (r['title'], r['quality']) for r in resolved] ret = dialog.select(xbmcutil.__lang__(30005), opts) return resolved[ret] quality = self.settings['quality'] or '0' if quality == '0': dialog = xbmcgui.Dialog() opts = [__language__(30052), __language__(30053)] ret = dialog.select(xbmcutil.__lang__(30005), opts) if ret == 0: return [stream_parts_dict[p][0] for p in stream_parts] elif ret == 1: return [stream_parts_dict[p][-1] for p in stream_parts] else: return [stream_parts_dict[p][0] for p in stream_parts]
def select_cb(resolved): if __addon__.getSetting('filter_vp8') == 'true': resolved = [r for r in resolved if not vp8_youtube_filter(r)] quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(resolved, quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] return resolved
def select_cb(resolved): resolved = resolver.filter_by_quality(resolved, self.settings['quality'] or '0') if len(resolved) == 1: return resolved[0] else: stream_list = ['[%s]%s'%(s['quality'],s['lang']) for s in resolved] idx = client.getListInput(self.session, stream_list, _("Select stream")) if idx == -1: return None return resolved[idx]
def select_cb(resolved): quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(resolved,quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] dialog = xbmcgui.Dialog() ret = dialog.select(xbmcutil.__lang__(30005), ['%s [%s]'%(r['title'],r['quality']) for r in resolved]) if ret >= 0: return resolved[ret]
def select_cb(resolved): if __addon__.getSetting('filter_vp8') == 'true': resolved = [r for r in resolved if not vp8_youtube_filter(r)] quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(resolved,quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] dialog = xbmcgui.Dialog() ret = dialog.select(xbmcutil.__lang__(30005), ['%s [%s]'%(r['title'],r['quality']) for r in resolved]) if ret >= 0: return resolved[ret]
def select_cb(resolved): resolved = resolver.filter_by_quality( resolved, self.settings['quality'] or '0') if len(resolved) == 1: return resolved[0] else: stream_list = [ '[%s]%s' % (s['quality'], s['lang']) for s in resolved ] idx = client.getListInput(self.session, stream_list, _("Select stream")) if idx == -1: return None return resolved[idx]
def select_cb(resolved): if __addon__.getSetting('filter_vp8') == 'true': resolved = [r for r in resolved if not vp8_youtube_filter(r)] quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(resolved, quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] dialog = xbmcgui.Dialog() ret = dialog.select( xbmcutil.__lang__(30005), ['%s [%s]' % (r['title'], r['quality']) for r in resolved]) if ret >= 0: return resolved[ret]
def select_cb(resolved): quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(resolved,quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] dialog = xbmcgui.Dialog() opts = [] for r in resolved: d = defaultdict(lambda:'',r) opts.append('%s [%s]%s' % (d['title'],d['quality'],d['lang'])) ret = dialog.select(xbmcutil.__lang__(30005), opts) if ret >= 0: return resolved[ret]
def select_cb(resolved): quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(resolved, quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] dialog = xbmcgui.Dialog() opts = [] for r in resolved: d = defaultdict(lambda: '', r) opts.append('%s [%s]%s' % (d['title'], d['quality'], d['lang'])) ret = dialog.select(xbmcutil.__lang__(30005), opts) if ret >= 0: return resolved[ret]
def resolve(self, item, captcha_cb=None, select_cb=None): markizalog.logDebug('resolve hit ...') result = [] if 'chapters' in item['url']: ## @@TODO ## tu by trebalo vytiahnut len resolvnute URLky v jednej kvalite a tak to poskladat do playlistu vid. default.py markizalog.logDebug('resolve hit (chapters)...%s'%item['url']) jsonData = MarkizaCache().get_data_cached(item['url'], self.useCache, 30, False) playlist = json.loads(jsonData) if playlist and len(playlist['playlist']) > 0: for index,url in enumerate(playlist['playlist']): markizalog.logDebug('chunklist=%s'%url) itm = self.video_item() itm['url'] = url['bitrates']['hls'] itm['surl'] = url['contentTitle'] itm['title'] = url['contentTitle'] result.append(itm) else: # '/master.m3u8' baseUrl = item['url'][:item['url'].index('master.m3u8')] manifest = toString(MarkizaCache().get_data_cached(item['url'], self.useCache, 3, False) ) markizalog.logDebug("item manifest= %s"%manifest) for m in re.finditer('#EXT-X-STREAM-INF:PROGRAM-ID=\d+,BANDWIDTH=(?P<bandwidth>\d+),RESOLUTION=.+,FRAME-RATE=.+,CODECS=".+"\s(?P<chunklist>.+$\s)', manifest, re.MULTILINE): itm = self.video_item() itm['title'] = item['title'] bandwidth = int(m.group('bandwidth')) itm['bandwidth'] = bandwidth if bandwidth < 1500000: itm['quality'] = "360p" elif bandwidth >= 1500000 and bandwidth < 2000000: itm['quality'] = "480p" else: itm['quality'] = "720p" itm['url'] = baseUrl+m.group('chunklist').replace('\n','') itm['surl'] = itm['title'] markizalog.logDebug("item=%s"%itm) result.append(itm) result = sorted(result,key=lambda i:i['bandwidth'], reverse = True) result = resolver.filter_by_quality(result, self.quality) if len(result) > 0 and select_cb: return select_cb(result) return result
def select_cb(resolved): stream_parts = [] stream_parts_dict = {} for stream in resolved: if stream['surl'] not in stream_parts_dict: stream_parts_dict[stream['surl']] = [] stream_parts.append(stream['surl']) stream_parts_dict[stream['surl']].append(stream) if len(stream_parts) == 1: quality = self.settings['quality'] or '0' resolved = resolver.filter_by_quality(stream_parts_dict[stream_parts[0]], quality) # if user requested something but 'ask me' or filtered result is exactly 1 if len(resolved) == 1 or int(quality) > 0: return resolved[0] return resolved # requested to play all streams in given order - so return them all return [stream_parts_dict[p][0] for p in stream_parts]
def select_cb(resolved): resolved = resolver.filter_by_quality(resolved, self.settings['quality'] or '0') if len(resolved) == 1: return resolved[0] return resolved
def select_cb(resolved): resolved = resolver.filter_by_quality( resolved, self.settings['quality'] or '0') if len(resolved) == 1: return resolved[0] return resolved