Przeglądaj źródła

Merge remote-tracking branch 'rupertbaxter2/master'

Conflicts:
	youtube_dl/__init__.py
	youtube_dl/downloader/common.py
Philipp Hagemeister 10 lat temu
rodzic
commit
5f0d813d93

+ 1 - 0
youtube_dl/YoutubeDL.py

@@ -217,6 +217,7 @@ class YoutubeDL(object):
     source_address:    (Experimental) Client-side IP address to bind to.
     source_address:    (Experimental) Client-side IP address to bind to.
     call_home:         Boolean, true iff we are allowed to contact the
     call_home:         Boolean, true iff we are allowed to contact the
                        youtube-dl servers for debugging.
                        youtube-dl servers for debugging.
+    sleep_interval:    Number of seconds to sleep before each download.
 
 
 
 
     The following parameters are not used by YoutubeDL itself, they are used by
     The following parameters are not used by YoutubeDL itself, they are used by

+ 7 - 0
youtube_dl/__init__.py

@@ -132,6 +132,11 @@ def _real_main(argv=None):
         if numeric_limit is None:
         if numeric_limit is None:
             parser.error('invalid rate limit specified')
             parser.error('invalid rate limit specified')
         opts.ratelimit = numeric_limit
         opts.ratelimit = numeric_limit
+    if opts.sleepinterval is not None:
+        try:
+            opts.sleepinterval = abs(int(opts.sleepinterval))
+        except ValueError:
+            parser.error(u'invalid sleep interval specified')
     if opts.min_filesize is not None:
     if opts.min_filesize is not None:
         numeric_limit = FileDownloader.parse_bytes(opts.min_filesize)
         numeric_limit = FileDownloader.parse_bytes(opts.min_filesize)
         if numeric_limit is None:
         if numeric_limit is None:
@@ -267,6 +272,7 @@ def _real_main(argv=None):
         'restrictfilenames': opts.restrictfilenames,
         'restrictfilenames': opts.restrictfilenames,
         'ignoreerrors': opts.ignoreerrors,
         'ignoreerrors': opts.ignoreerrors,
         'ratelimit': opts.ratelimit,
         'ratelimit': opts.ratelimit,
+        'sleepinterval': opts.sleepinterval,
         'nooverwrites': opts.nooverwrites,
         'nooverwrites': opts.nooverwrites,
         'retries': opts.retries,
         'retries': opts.retries,
         'buffersize': opts.buffersize,
         'buffersize': opts.buffersize,
@@ -329,6 +335,7 @@ def _real_main(argv=None):
         'fixup': opts.fixup,
         'fixup': opts.fixup,
         'source_address': opts.source_address,
         'source_address': opts.source_address,
         'call_home': opts.call_home,
         'call_home': opts.call_home,
+        'sleep_interval': opts.sleep_interval,
     }
     }
 
 
     with YoutubeDL(ydl_opts) as ydl:
     with YoutubeDL(ydl_opts) as ydl:

+ 6 - 0
youtube_dl/downloader/common.py

@@ -284,6 +284,7 @@ class FileDownloader(object):
         """Download to a filename using the info from info_dict
         """Download to a filename using the info from info_dict
         Return True on success and False otherwise
         Return True on success and False otherwise
         """
         """
+
         nooverwrites_and_exists = (
         nooverwrites_and_exists = (
             self.params.get('nooverwrites', False)
             self.params.get('nooverwrites', False)
             and os.path.exists(encodeFilename(filename))
             and os.path.exists(encodeFilename(filename))
@@ -305,6 +306,11 @@ class FileDownloader(object):
             })
             })
             return True
             return True
 
 
+        sleep_interval = self.params.get('sleep_interval')
+        if sleep_interval:
+            self.to_screen('[download] Sleeping %s seconds...' % sleep_interval)
+            time.sleep(sleep_interval)
+
         return self.real_download(filename, info_dict)
         return self.real_download(filename, info_dict)
 
 
     def real_download(self, filename, info_dict):
     def real_download(self, filename, info_dict):

+ 4 - 0
youtube_dl/options.py

@@ -421,6 +421,10 @@ def parseOpts(overrideArguments=None):
         '--bidi-workaround',
         '--bidi-workaround',
         dest='bidi_workaround', action='store_true',
         dest='bidi_workaround', action='store_true',
         help='Work around terminals that lack bidirectional text support. Requires bidiv or fribidi executable in PATH')
         help='Work around terminals that lack bidirectional text support. Requires bidiv or fribidi executable in PATH')
+    workarounds.add_option(
+        '--sleep-interval', metavar='SECONDS',
+        dest='sleep_interval',
+        help='Number of seconds to sleep before each download.')
 
 
     verbosity = optparse.OptionGroup(parser, 'Verbosity / Simulation Options')
     verbosity = optparse.OptionGroup(parser, 'Verbosity / Simulation Options')
     verbosity.add_option(
     verbosity.add_option(