about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoel Verhagen <joel.verhagen@gmail.com>2012-07-14 16:47:19 -0400
committerJoel Verhagen <joel.verhagen@gmail.com>2012-07-14 16:47:19 -0400
commit891d7f232959f85810011fe32b107a0dfd5db85b (patch)
treefc9f45eebaaad994915cb3221152f873b0ac8c80
parentcca4828ac94e6d2e4e1918405d0fcbc8e6ac92d0 (diff)
downloadyoutube-dl-891d7f232959f85810011fe32b107a0dfd5db85b.tar.gz
youtube-dl-891d7f232959f85810011fe32b107a0dfd5db85b.tar.xz
youtube-dl-891d7f232959f85810011fe32b107a0dfd5db85b.zip
Added options to set download buffer size and disable automatic buffer resizing.
-rw-r--r--README.md3
-rwxr-xr-xyoutube-dlbin40554 -> 40754 bytes
-rwxr-xr-xyoutube-dl.exebin3989631 -> 3989797 bytes
-rw-r--r--youtube_dl/FileDownloader.py7
-rw-r--r--youtube_dl/__init__.py12
5 files changed, 20 insertions, 2 deletions
diff --git a/README.md b/README.md
index f04b96128..fc9c1a6b8 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,9 @@ 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)
+    -b, --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
     --dump-user-agent        display the current browser identification
     --list-extractors        List all supported extractors and the URLs they
                              would handle
diff --git a/youtube-dl b/youtube-dl
index b3e0cd422..6e6932b52 100755
--- a/youtube-dl
+++ b/youtube-dl
Binary files differdiff --git a/youtube-dl.exe b/youtube-dl.exe
index c55f5fa8d..4ff820dc8 100755
--- a/youtube-dl.exe
+++ b/youtube-dl.exe
Binary files differdiff --git a/youtube_dl/FileDownloader.py b/youtube_dl/FileDownloader.py
index 14e872a98..724de17c7 100644
--- a/youtube_dl/FileDownloader.py
+++ b/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 @@ class FileDownloader(object):
 			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 @@ class FileDownloader(object):
 			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)
diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py
index f10822db1..7983b24eb 100644
--- a/youtube_dl/__init__.py
+++ b/youtube_dl/__init__.py
@@ -187,6 +187,11 @@ def parseOpts():
 			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('-b', '--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', 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,