diff options
author | Philipp Hagemeister <phihag@phihag.de> | 2011-11-28 00:55:44 +0100 |
---|---|---|
committer | Philipp Hagemeister <phihag@phihag.de> | 2011-11-28 00:55:44 +0100 |
commit | b88a52504e3c18324c975b6f726b0597e4ce91eb (patch) | |
tree | 100212407207c3fd6188a726a80a05330d307864 | |
parent | a95567af99d182784314320ceca858bd960559c6 (diff) |
--max-downloads option (Closes #230)
-rw-r--r-- | README.md | 1 | ||||
-rwxr-xr-x | youtube-dl | 9 | ||||
-rwxr-xr-x | youtube_dl/__init__.py | 10 |
3 files changed, 20 insertions, 0 deletions
@@ -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) |