def handle_unresolved_url(data, action): url = unquote(data) logger.info(u'Trying to resolve URL (%s): %s' % (action, url)) if xbmc.Player().isPlaying(): utils.show_info_notification(utils.translation(32007), 1000) else: utils.show_info_notification(utils.translation(32007)) if 'youtube.com' in url or 'youtu.be' in url: youtube_addon = xbmcaddon.Addon(id="plugin.video.youtube") if youtube_addon: if utils.get_setting('preferYoutubeAddon') == 'true' or youtube_addon.getSetting("kodion.video.quality.mpd") == "true": logger.info(u'Youtube addon have DASH enabled or is configured as preferred use it') clean_url = list(urlparse(url)) clean_url[4] = '&'.join( [x for x in clean_url[4].split('&') if not re.match(r'app=', x)]) url = urlunparse(clean_url) utils.play_url('plugin://plugin.video.youtube/uri2addon/?uri=%s' % url, action) return logger.info(u'Trying to resolve with YoutubeDL') result = resolve_with_youtube_dl(url, {'format': 'best', 'no_color': 'true', 'ignoreerrors': 'true'}, action) if result: return # Second pass with new params to fix site like reddit dash streams logger.info(u'Trying to resolve with YoutubeDL other options') result = resolve_with_youtube_dl(url, {'format': 'bestvideo+bestaudio/best', 'no_color': 'true', 'ignoreerrors': 'true'}, action) if result: return logger.error(u'Url not resolved by YoutubeDL') logger.info(u'Trying to play as basic url') utils.play_url(url, action) if url: utils.show_error_notification(utils.translation(32006))
def handle_unresolved_url(data, action): url = unquote(data) logger.info(u'Trying to resolve URL (%s): %s' % (action, url)) if xbmc.Player().isPlaying(): utils.show_info_notification(utils.translation(32007), 1000) else: utils.show_info_notification(utils.translation(32007)) if 'youtube.com' in url or 'youtu.be' in url: youtube_addon = xbmcaddon.Addon(id="plugin.video.youtube") if youtube_addon: if youtube_addon.getSetting("kodion.video.quality.mpd") == "true": logger.info(u'Youtube addon have DASH enabled use it') utils.play_url('plugin://plugin.video.youtube/uri2addon/?uri=%s' % url, action) return logger.info(u'Trying to resolve with YoutubeDL') result = resolve_with_youtube_dl(url, {'format': 'best', 'no_color': 'true', 'ignoreerrors': 'true'}, action) if result: return # Second pass with new params to fix site like reddit dash streams logger.info(u'Trying to resolve with YoutubeDL other options') result = resolve_with_youtube_dl(url, {'format': 'bestvideo+bestaudio/best', 'no_color': 'true', 'ignoreerrors': 'true'}, action) if result: return logger.error(u'Url not resolved by YoutubeDL') if utils.is_python_3(): logger.info(u'Skipping urlResolver as running on Python 3') else: logger.info(u'Trying to resolve with urlResolver') stream_url = urlresolver.HostedMediaFile(url=url).resolve() if stream_url: logger.info(u'Url resolved by urlResolver: %s' % stream_url) utils.play_url(stream_url, action) return logger.info(u'Trying to play as basic url') utils.play_url(url, action) if url: utils.show_error_notification(utils.translation(32006))
sys.argv.insert( 1, 0) # Stupid hack as calling scripts from JSON does not add script handle import xbmcgui import xbmcaddon from lib import share, stream, utils from lib.utils import logger, translation logger.info("Starting script version: %s", utils.ADDON_VERSION) argument = {} for arg in sys.argv[2:]: argInfo = arg.split('=') argument[argInfo[0]] = argInfo[1] logger.info("Parameters: %s" % argument) commands = {'share': share.run, 'stream': stream.run} if 'action' not in argument: xbmcaddon.Addon().openSettings() else: if argument['action'] in commands: commands[argument['action']](argument) else: logger.error("Command not supported: %s" % argument['action']) xbmcgui.Dialog().ok(utils.ADDON_NAME, translation(32004), translation(32005))