Exemplo n.º 1
0
def play(source, player=True):
    if player == 'remote':
        remote_play(source)
    else:
        if source['content_type'] == 'image':
            command = {'jsonrpc': '2.0', 'id': 1, 'method': 'Player.Open', 'params': {'item': {'file': source['url']}}}
            log_utils.log('Play using jsonrpc method Player.Open: |{0!s}|'.format(source['url']), log_utils.LOGDEBUG)
            response = kodi.execute_jsonrpc(command)
        else:
            playback_item = kodi.ListItem(label=source['info']['title'], path=source['url'])
            playback_item.setProperty('IsPlayable', 'true')
            playback_item.setArt(source['art'])
            playback_item.addStreamInfo(source['content_type'], {})
            if source['is_dash']:
                playback_item.setContentLookup(False)
                playback_item.setMimeType('application/xml+dash')
                playback_item.setProperty('inputstreamaddon', 'inputstream.adaptive')
                playback_item.setProperty('inputstream.adaptive.manifest_type', 'mpd')
            elif (source['url'].startswith('rtmp')) and (inputstream_rtmp):
                if kodi.addon_enabled('inputstream.rtmp'):
                    playback_item.setProperty('inputstreamaddon', 'inputstream.rtmp')
            elif ('.m3u8' in source['url']) and (hls_supported):
                    playback_item.setProperty('inputstreamaddon', 'inputstream.adaptive')
                    playback_item.setProperty('inputstream.adaptive.manifest_type', 'hls')
            playback_item.setInfo(source['content_type'], source['info'])
            if player:
                log_utils.log('Play using Player(): |{0!s}|'.format(source['url']), log_utils.LOGDEBUG)
                kodi.Player().play(source['url'], playback_item)
            else:
                log_utils.log('Play using set_resolved_url: |{0!s}|'.format(source['url']), log_utils.LOGDEBUG)
                kodi.set_resolved_url(playback_item)
Exemplo n.º 2
0
def __pick_source(sources):
    log_utils.log('Sources found: {0}'.format(sources))
    if len(sources) == 1:
        return sources[0]
    elif len(sources) > 1:
        if kodi.get_kodi_version().major > 16:
            listitem_sources = []
            for source in sources:
                title = source['label'] if source['label'] else kodi.i18n('unknown')
                label2 = '%s [[COLOR=lightgray]%s[/COLOR]]' % (source['content_type'].capitalize(), source['resolver'] if source['resolver'] else 'Kodi')
                icon = ''
                if source['content_type'] == 'image':
                    icon = source['url']
                elif not source['resolver']:
                    icon = ICONS.KODI
                elif source['resolver'] == 'youtube-dl':
                    icon = ICONS.YOUTUBEDL
                elif source['resolver'] == 'URLResolver':
                    icon = ICONS.URLRESOLVER
                l_item = kodi.ListItem(label=title, label2=label2)
                l_item.setArt({'icon': icon, 'thumb': icon})
                listitem_sources.append(l_item)
            result = kodi.Dialog().select(kodi.i18n('choose_source'), list=listitem_sources, useDetails=True)
        else:
            result = kodi.Dialog().select(kodi.i18n('choose_source'),
                                          ['[%s] %s' % (source['content_type'].capitalize(), source['label'])
                                           if source['label']
                                           else '[%s] %s' % (source['content_type'].capitalize(), kodi.i18n('unknown'))
                                           for source in sources])
        if result == -1:
            return None
        else:
            return sources[result]
    else:
        return None