Ejemplo n.º 1
0
 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
Ejemplo n.º 2
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'])
                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]
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
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'])
Ejemplo n.º 5
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'])
                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]
Ejemplo n.º 6
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]
Ejemplo n.º 7
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]
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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]
Ejemplo n.º 10
0
 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]
Ejemplo n.º 11
0
 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]
Ejemplo n.º 12
0
 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]
Ejemplo n.º 13
0
 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]
Ejemplo n.º 16
0
    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
Ejemplo n.º 17
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:
                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]
Ejemplo n.º 18
0
 def select_cb(resolved):
     resolved = resolver.filter_by_quality(resolved, self.settings['quality'] or '0')
     if len(resolved) == 1:
         return resolved[0]
     return resolved
Ejemplo n.º 19
0
 def select_cb(resolved):
     resolved = resolver.filter_by_quality(
         resolved, self.settings['quality'] or '0')
     if len(resolved) == 1:
         return resolved[0]
     return resolved