about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2011-11-28 00:55:44 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2011-11-28 00:55:44 +0100
commitb88a52504e3c18324c975b6f726b0597e4ce91eb (patch)
tree100212407207c3fd6188a726a80a05330d307864
parenta95567af99d182784314320ceca858bd960559c6 (diff)
downloadyoutube-dl-b88a52504e3c18324c975b6f726b0597e4ce91eb.tar.gz
youtube-dl-b88a52504e3c18324c975b6f726b0597e4ce91eb.tar.xz
youtube-dl-b88a52504e3c18324c975b6f726b0597e4ce91eb.zip
--max-downloads option (Closes #230)
-rw-r--r--README.md1
-rwxr-xr-xyoutube-dl9
-rwxr-xr-xyoutube_dl/__init__.py10
3 files changed, 20 insertions, 0 deletions
diff --git a/README.md b/README.md
index 2b0ab67eb..1f568e73b 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,7 @@ which means you can modify it, redistribute it or use it however you like.
                              sub-string)
     --reject-title REGEX     skip download for matching titles (regex or
                              caseless sub-string)
+    --max-downloads NUMBER   Abort after downloading NUMBER files
 
 ### Filesystem Options:
     -t, --title              use title in file name
diff --git a/youtube-dl b/youtube-dl
index ebfb6ae06..6dac70b68 100755
--- a/youtube-dl
+++ b/youtube-dl
@@ -701,6 +701,13 @@ class FileDownloader(object):
 
 	def process_info(self, info_dict):
 		"""Process a single dictionary returned by an InfoExtractor."""
+
+		max_downloads = int(self.params.get('max_downloads'))
+		if max_downloads is not None:
+			if self._num_downloads > max_downloads:
+				self.to_screen(u'[download] Maximum number of downloads reached. Skipping ' + info_dict['title'])
+				return
+		
 		filename = self.prepare_filename(info_dict)
 		
 		# Forced printings
@@ -3997,6 +4004,7 @@ def parseOpts():
 			dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1)
 	selection.add_option('--match-title', dest='matchtitle', metavar='REGEX',help='download only matching titles (regex or caseless sub-string)')
 	selection.add_option('--reject-title', dest='rejecttitle', metavar='REGEX',help='skip download for matching titles (regex or caseless sub-string)')
+	selection.add_option('--max-downloads', metavar='NUMBER', dest='max_downloads', help='Abort after downloading NUMBER files', default=None)
 
 	authentication.add_option('-u', '--username',
 			dest='username', metavar='USERNAME', help='account username')
@@ -4266,6 +4274,7 @@ def _real_main():
 		'writeinfojson': opts.writeinfojson,
 		'matchtitle': opts.matchtitle,
 		'rejecttitle': opts.rejecttitle,
+		'max_downloads': int(opts.max_downloads),
 		})
 	for extractor in extractors:
 		fd.add_info_extractor(extractor)
diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py
index 1ce120007..6dac70b68 100755
--- a/youtube_dl/__init__.py
+++ b/youtube_dl/__init__.py
@@ -14,6 +14,7 @@ __author__  = (
 	'Sören Schulze',
 	'Kevin Ngo',
 	'Ori Avtalion',
+	'shizeeg',
 	)
 
 __license__ = 'Public Domain'
@@ -700,6 +701,13 @@ class FileDownloader(object):
 
 	def process_info(self, info_dict):
 		"""Process a single dictionary returned by an InfoExtractor."""
+
+		max_downloads = int(self.params.get('max_downloads'))
+		if max_downloads is not None:
+			if self._num_downloads > max_downloads:
+				self.to_screen(u'[download] Maximum number of downloads reached. Skipping ' + info_dict['title'])
+				return
+		
 		filename = self.prepare_filename(info_dict)
 		
 		# Forced printings
@@ -3996,6 +4004,7 @@ def parseOpts():
 			dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1)
 	selection.add_option('--match-title', dest='matchtitle', metavar='REGEX',help='download only matching titles (regex or caseless sub-string)')
 	selection.add_option('--reject-title', dest='rejecttitle', metavar='REGEX',help='skip download for matching titles (regex or caseless sub-string)')
+	selection.add_option('--max-downloads', metavar='NUMBER', dest='max_downloads', help='Abort after downloading NUMBER files', default=None)
 
 	authentication.add_option('-u', '--username',
 			dest='username', metavar='USERNAME', help='account username')
@@ -4265,6 +4274,7 @@ def _real_main():
 		'writeinfojson': opts.writeinfojson,
 		'matchtitle': opts.matchtitle,
 		'rejecttitle': opts.rejecttitle,
+		'max_downloads': int(opts.max_downloads),
 		})
 	for extractor in extractors:
 		fd.add_info_extractor(extractor)