diff --git a/pywb/rewrite/rewrite_live.py b/pywb/rewrite/rewrite_live.py index 3e1cbf2b..1b20e120 100644 --- a/pywb/rewrite/rewrite_live.py +++ b/pywb/rewrite/rewrite_live.py @@ -22,11 +22,18 @@ from rewrite_content import RewriteContent #================================================================= class LiveRewriter(object): - def __init__(self, is_framed_replay=False, default_proxy=None): + def __init__(self, is_framed_replay=False, proxies=None): self.rewriter = RewriteContent(is_framed_replay=is_framed_replay) - self.default_proxy = default_proxy - if self.default_proxy: - logging.debug('Live Rewrite via proxy ' + self.default_proxy) + + self.proxies = proxies + + if self.proxies: + logging.debug('Live Rewrite via proxy ' + str(proxies)) + + if isinstance(proxies, str): + self.proxies = {'http': proxies, + 'https': proxies} + else: logging.debug('Live Rewrite Direct (no proxy)') @@ -86,16 +93,14 @@ class LiveRewriter(object): env=None, req_headers=None, follow_redirects=False, - proxies=None): + ignore_proxies=False): method = 'GET' data = None - if proxies == False: - proxies = None - elif not proxies and self.default_proxy: - proxies = {'http': self.default_proxy, - 'https': self.default_proxy} + proxies = None + if not ignore_proxies: + proxies = self.proxies if not req_headers: req_headers = {} @@ -138,7 +143,7 @@ class LiveRewriter(object): req_headers={}, timestamp=None, follow_redirects=False, - proxies=None): + ignore_proxies=False): ts_err = url.split('///') @@ -153,7 +158,7 @@ class LiveRewriter(object): if is_http(url): (status_headers, stream) = self.fetch_http(url, env, req_headers, follow_redirects, - proxies) + ignore_proxies) else: (status_headers, stream) = self.fetch_local_file(url) diff --git a/pywb/webapp/live_rewrite_handler.py b/pywb/webapp/live_rewrite_handler.py index 98d6c5db..bc4a1742 100644 --- a/pywb/webapp/live_rewrite_handler.py +++ b/pywb/webapp/live_rewrite_handler.py @@ -28,21 +28,21 @@ class RewriteHandler(SearchPageWbUrlHandler): LIVE_COOKIE = 'pywb.timestamp={0}; max-age=60' + YT_DL_TYPE = 'application/vnd.youtube-dl_formats+json' + youtubedl = None def __init__(self, config): super(RewriteHandler, self).__init__(config) - self.default_proxy = config.get('proxyhostport') + self.proxy = config.get('proxyhostport') self.rewriter = LiveRewriter(is_framed_replay=self.is_frame_mode, - default_proxy=self.default_proxy) + proxies=self.proxy) self.head_insert_view = HeadInsertView.init_from_config(config) self.live_cookie = config.get('live-cookie', self.LIVE_COOKIE) - self.no_proxy_range = config.get('no_proxy_range', True) - self.ydl = None self._cache = None @@ -74,14 +74,14 @@ class RewriteHandler(SearchPageWbUrlHandler): if ref_wburl_str: wbrequest.env['REL_REFERER'] = WbUrl(ref_wburl_str).url - proxies = None # default + ignore_proxies = False use_206 = False url = None readd_range = False cache_key = None - if self.default_proxy and self.no_proxy_range: + if self.proxy: rangeres = wbrequest.extract_range() if rangeres: @@ -94,7 +94,7 @@ class RewriteHandler(SearchPageWbUrlHandler): readd_range = True else: # disables proxy - proxies = False + ignore_proxies = True # sets cache_key only if not already cached cache_key = self._check_url_cache(url) @@ -104,7 +104,7 @@ class RewriteHandler(SearchPageWbUrlHandler): head_insert_func=head_insert_func, req_headers=req_headers, env=wbrequest.env, - proxies=proxies) + ignore_proxies=ignore_proxies) wbresponse = self._make_response(wbrequest, *result) @@ -150,8 +150,8 @@ class RewriteHandler(SearchPageWbUrlHandler): referrer = wbrequest.env.get('REL_REFERER') def do_ping(): - proxies = {'http': self.default_proxy, - 'https': self.default_proxy} + proxies = {'http': self.proxy, + 'https': self.proxy} headers = self._live_request_headers(wbrequest) headers['Connection'] = 'close' @@ -201,11 +201,11 @@ class RewriteHandler(SearchPageWbUrlHandler): info = self.youtubedl.extract_info(video_url) - content_type = 'application/vnd.youtube-dl_formats+json' + content_type = self.YT_DL_TYPE metadata = json.dumps(info) - if self.default_proxy: - proxies = {'http': self.default_proxy} + if self.proxy: + proxies = {'http': self.proxy} headers = self._live_request_headers(wbrequest) headers['Content-Type'] = content_type