mirror of
https://github.com/yt-dlp/yt-dlp
synced 2024-12-27 21:59:17 +01:00
Add --max-sleep-interval (Closes #9930)
This commit is contained in:
parent
3a380766d1
commit
065bc35489
4 changed files with 27 additions and 5 deletions
|
@ -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
|
||||||
|
|
|
@ -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 _real_main(argv=None):
|
||||||
'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,
|
||||||
|
|
|
@ -4,6 +4,7 @@ import os
|
||||||
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 @@ class FileDownloader(object):
|
||||||
})
|
})
|
||||||
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)
|
||||||
|
|
||||||
|
|
|
@ -499,9 +499,17 @@ def parseOpts(overrideArguments=None):
|
||||||
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(
|
||||||
|
|
Loading…
Reference in a new issue