Add --max-sleep-interval (Closes #9930)

This commit is contained in:
singh-pratyush96 2016-08-04 15:47:22 +05:30 committed by Sergey M․
parent 3a380766d1
commit 065bc35489
No known key found for this signature in database
GPG key ID: 2C393E0F18A9236D
4 changed files with 27 additions and 5 deletions

View file

@ -249,7 +249,11 @@ 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. sleep_interval: Minimum number of seconds to sleep before each download.
Sleep will be for a random interval if --max-sleep-interval is also passed.
max_sleep_interval:Max number of seconds to sleep before each download.
Sleep will be for a random interval if passed along with --min-sleep-interval
or --sleep-interval, otherwise ignored.
listformats: Print an overview of available video formats and exit. listformats: Print an overview of available video formats and exit.
list_thumbnails: Print a table of all thumbnails and exit. list_thumbnails: Print a table of all thumbnails and exit.
match_filter: A function that gets called with the info_dict of match_filter: A function that gets called with the info_dict of

View file

@ -145,6 +145,12 @@ def _real_main(argv=None):
if numeric_limit is None: if numeric_limit is None:
parser.error('invalid max_filesize specified') parser.error('invalid max_filesize specified')
opts.max_filesize = numeric_limit opts.max_filesize = numeric_limit
if opts.sleep_interval is not None:
if opts.sleep_interval < 0:
parser.error('sleep interval should not be negative')
elif opts.max_sleep_interval is not None:
if opts.max_sleep_interval < opts.sleep_interval:
parser.error('max sleep interval should not be less than sleep interval')
def parse_retries(retries): def parse_retries(retries):
if retries in ('inf', 'infinite'): if retries in ('inf', 'infinite'):
@ -370,6 +376,7 @@ def parse_retries(retries):
'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, 'sleep_interval': opts.sleep_interval,
'max_sleep_interval': opts.max_sleep_interval,
'external_downloader': opts.external_downloader, 'external_downloader': opts.external_downloader,
'list_thumbnails': opts.list_thumbnails, 'list_thumbnails': opts.list_thumbnails,
'playlist_items': opts.playlist_items, 'playlist_items': opts.playlist_items,

View file

@ -4,6 +4,7 @@
import re import re
import sys import sys
import time import time
import random
from ..compat import compat_os_name from ..compat import compat_os_name
from ..utils import ( from ..utils import (
@ -342,8 +343,10 @@ def download(self, filename, info_dict):
}) })
return True return True
sleep_interval = self.params.get('sleep_interval') sleep_lower_bound = self.params.get('sleep_interval')
if sleep_interval: if sleep_lower_bound:
sleep_upper_bound = self.params.get('max_sleep_interval', sleep_lower_bound)
sleep_interval = random.uniform(sleep_lower_bound, sleep_upper_bound)
self.to_screen('[download] Sleeping %s seconds...' % sleep_interval) self.to_screen('[download] Sleeping %s seconds...' % sleep_interval)
time.sleep(sleep_interval) time.sleep(sleep_interval)

View file

@ -499,9 +499,17 @@ def _scrub_eq(o):
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( workarounds.add_option(
'--sleep-interval', metavar='SECONDS', '--sleep-interval', '--min-sleep-interval', metavar='SECONDS',
dest='sleep_interval', type=float, dest='sleep_interval', type=float,
help='Number of seconds to sleep before each download.') help='Minimum number of seconds to sleep before each download. Sleep will be for a random interval if '
'--max-sleep-interval is also passed.'
)
workarounds.add_option(
'--max-sleep-interval', metavar='SECONDS',
dest='max_sleep_interval', type=float,
help='Max number of seconds to sleep before each download. Sleep will be for a random interval if passed'
' along with --min-sleep-interval or --sleep-interval, otherwise ignored.'
)
verbosity = optparse.OptionGroup(parser, 'Verbosity / Simulation Options') verbosity = optparse.OptionGroup(parser, 'Verbosity / Simulation Options')
verbosity.add_option( verbosity.add_option(