]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/downloader/http.py
[cleanup] Misc fixes
[yt-dlp.git] / yt_dlp / downloader / http.py
index cabf401a7b197aaec6fc34202971a207f8f1acb7..591a9b08dca172c9b4c1937ad149ed3177bf4911 100644 (file)
@@ -7,7 +7,6 @@
 
 from .common import FileDownloader
 from ..compat import (
-    compat_str,
     compat_urllib_error,
     compat_http_client
 )
@@ -58,8 +57,6 @@ class DownloadContext(dict):
         ctx.resume_len = 0
         ctx.block_size = self.params.get('buffersize', 1024)
         ctx.start_time = time.time()
-        ctx.chunk_size = None
-        throttle_start = None
 
         # parse given Range
         req_start, req_end, _ = parse_http_range(headers.get('Range'))
@@ -85,12 +82,6 @@ def __init__(self, source_error):
         class NextFragment(Exception):
             pass
 
-        def set_range(req, start, end):
-            range_header = 'bytes=%d-' % start
-            if end:
-                range_header += compat_str(end)
-            req.add_header('Range', range_header)
-
         def establish_connection():
             ctx.chunk_size = (random.randint(int(chunk_size * 0.95), chunk_size)
                               if not is_test and chunk_size else chunk_size)
@@ -131,7 +122,7 @@ def establish_connection():
             request = sanitized_Request(url, request_data, headers)
             has_range = range_start is not None
             if has_range:
-                set_range(request, range_start, range_end)
+                request.add_header('Range', f'bytes={int(range_start)}-{int_or_none(range_end) or ""}')
             # Establish connection
             try:
                 ctx.data = self.ydl.urlopen(request)
@@ -214,7 +205,6 @@ def establish_connection():
                 raise RetryDownload(err)
 
         def download():
-            nonlocal throttle_start
             data_len = ctx.data.info().get('Content-length', None)
 
             # Range HTTP header may be ignored/unsupported by a webserver
@@ -329,14 +319,14 @@ def retry(e):
                 if speed and speed < (self.params.get('throttledratelimit') or 0):
                     # The speed must stay below the limit for 3 seconds
                     # This prevents raising error when the speed temporarily goes down
-                    if throttle_start is None:
-                        throttle_start = now
-                    elif now - throttle_start > 3:
+                    if ctx.throttle_start is None:
+                        ctx.throttle_start = now
+                    elif now - ctx.throttle_start > 3:
                         if ctx.stream is not None and ctx.tmpfilename != '-':
                             ctx.stream.close()
                         raise ThrottledDownload()
                 elif speed:
-                    throttle_start = None
+                    ctx.throttle_start = None
 
             if not is_test and ctx.chunk_size and ctx.content_len is not None and byte_counter < ctx.content_len:
                 ctx.resume_len = byte_counter