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