Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Added options to set download buffer size and disable automatic buffer resizing. #379

Merged
merged 2 commits into from

2 participants

@joelverhagen

Per @phihag's suggestion on my previous pull request, I've updated the --no-resize-buffer docs to better delineate how the automagic buffer resizing works.

The two added options are documented as follows:

--buffer-size SIZE       size of download buffer (e.g. 1024 or 16k) (default
                         is 1024)
--no-resize-buffer       do not automatically adjust the buffer size. By
                         default, the buffer size is automatically resized
                         from an initial value of SIZE.
@joelverhagen

Any status on merging this code into master?

@phihag phihag was assigned
@phihag phihag merged commit aab4fca into from
@phihag phihag referenced this pull request from a commit
@phihag phihag Actually merge #379 cc872b6
@phihag
Collaborator

Sorry for the long wait, but it should be finally in the mainline. Thanks for your contribution!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
View
5 README.md
@@ -17,6 +17,11 @@ which means you can modify it, redistribute it or use it however you like.
-i, --ignore-errors continue on download errors
-r, --rate-limit LIMIT download rate limit (e.g. 50k or 44.6m)
-R, --retries RETRIES number of retries (default is 10)
+ --buffer-size SIZE size of download buffer (e.g. 1024 or 16k) (default
+ is 1024)
+ --no-resize-buffer do not automatically adjust the buffer size. By
+ default, the buffer size is automatically resized
+ from an initial value of SIZE.
--dump-user-agent display the current browser identification
--list-extractors List all supported extractors and the URLs they
would handle
View
BIN  youtube-dl
Binary file not shown
View
BIN  youtube-dl.exe
Binary file not shown
View
7 youtube_dl/FileDownloader.py
@@ -61,6 +61,8 @@ class FileDownloader(object):
ratelimit: Download speed limit, in bytes/sec.
nooverwrites: Prevent overwriting files.
retries: Number of times to retry for HTTP error 5xx
+ buffersize: Size of download buffer in bytes.
+ noresizebuffer: Do not automatically resize the download buffer.
continuedl: Try to continue downloads if possible.
noprogress: Do not print the progress bar.
playliststart: Playlist item to start at.
@@ -633,7 +635,7 @@ def _do_download(self, filename, info_dict):
data_len = long(data_len) + resume_len
data_len_str = self.format_bytes(data_len)
byte_counter = 0 + resume_len
- block_size = 1024
+ block_size = self.params.get('buffersize', 1024)
start = time.time()
while True:
# Download and write
@@ -659,7 +661,8 @@ def _do_download(self, filename, info_dict):
except (IOError, OSError), err:
self.trouble(u'\nERROR: unable to write data: %s' % str(err))
return False
- block_size = self.best_block_size(after - before, len(data_block))
+ if not self.params.get('noresizebuffer', False):
+ block_size = self.best_block_size(after - before, len(data_block))
# Progress message
speed_str = self.calc_speed(start, time.time(), byte_counter - resume_len)
View
12 youtube_dl/__init__.py
@@ -187,6 +187,11 @@ def _find_term_columns():
dest='ratelimit', metavar='LIMIT', help='download rate limit (e.g. 50k or 44.6m)')
general.add_option('-R', '--retries',
dest='retries', metavar='RETRIES', help='number of retries (default is 10)', default=10)
+ general.add_option('--buffer-size',
+ dest='buffersize', metavar='SIZE', help='size of download buffer (e.g. 1024 or 16k) (default is 1024)', default="1024")
+ general.add_option('--no-resize-buffer',
+ action='store_true', dest='noresizebuffer',
+ help='do not automatically adjust the buffer size. By default, the buffer size is automatically resized from an initial value of SIZE.', default=False)
general.add_option('--dump-user-agent',
action='store_true', dest='dump_user_agent',
help='display the current browser identification', default=False)
@@ -428,6 +433,11 @@ def _real_main():
opts.retries = long(opts.retries)
except (TypeError, ValueError), err:
parser.error(u'invalid retry count specified')
+ if opts.buffersize is not None:
+ numeric_buffersize = FileDownloader.parse_bytes(opts.buffersize)
+ if numeric_buffersize is None:
+ parser.error(u'invalid buffer size specified')
+ opts.buffersize = numeric_buffersize
try:
opts.playliststart = int(opts.playliststart)
if opts.playliststart <= 0:
@@ -475,6 +485,8 @@ def _real_main():
'ratelimit': opts.ratelimit,
'nooverwrites': opts.nooverwrites,
'retries': opts.retries,
+ 'buffersize': opts.buffersize,
+ 'noresizebuffer': opts.noresizebuffer,
'continuedl': opts.continue_dl,
'noprogress': opts.noprogress,
'playliststart': opts.playliststart,
Something went wrong with that request. Please try again.