mirror of
https://github.com/ytdl-org/youtube-dl
synced 2025-10-01 22:08:36 +09:00
[downloader] Delay download according to available_at
format key
This commit is contained in:
@@ -11,6 +11,7 @@ from ..utils import (
|
|||||||
decodeArgument,
|
decodeArgument,
|
||||||
encodeFilename,
|
encodeFilename,
|
||||||
error_to_compat_str,
|
error_to_compat_str,
|
||||||
|
float_or_none,
|
||||||
format_bytes,
|
format_bytes,
|
||||||
shell_quote,
|
shell_quote,
|
||||||
timeconvert,
|
timeconvert,
|
||||||
@@ -367,14 +368,27 @@ class FileDownloader(object):
|
|||||||
})
|
})
|
||||||
return True
|
return True
|
||||||
|
|
||||||
min_sleep_interval = self.params.get('sleep_interval')
|
min_sleep_interval, max_sleep_interval = (
|
||||||
if min_sleep_interval:
|
float_or_none(self.params.get(interval), default=0)
|
||||||
max_sleep_interval = self.params.get('max_sleep_interval', min_sleep_interval)
|
for interval in ('sleep_interval', 'max_sleep_interval'))
|
||||||
sleep_interval = random.uniform(min_sleep_interval, max_sleep_interval)
|
|
||||||
|
sleep_note = ''
|
||||||
|
available_at = info_dict.get('available_at')
|
||||||
|
if available_at:
|
||||||
|
forced_sleep_interval = available_at - int(time.time())
|
||||||
|
if forced_sleep_interval > min_sleep_interval:
|
||||||
|
sleep_note = 'as required by the site'
|
||||||
|
min_sleep_interval = forced_sleep_interval
|
||||||
|
if forced_sleep_interval > max_sleep_interval:
|
||||||
|
max_sleep_interval = forced_sleep_interval
|
||||||
|
|
||||||
|
sleep_interval = random.uniform(
|
||||||
|
min_sleep_interval, max_sleep_interval or min_sleep_interval)
|
||||||
|
|
||||||
|
if sleep_interval > 0:
|
||||||
self.to_screen(
|
self.to_screen(
|
||||||
'[download] Sleeping %s seconds...' % (
|
'[download] Sleeping %.2f seconds %s...' % (
|
||||||
int(sleep_interval) if sleep_interval.is_integer()
|
sleep_interval, sleep_note))
|
||||||
else '%.2f' % sleep_interval))
|
|
||||||
time.sleep(sleep_interval)
|
time.sleep(sleep_interval)
|
||||||
|
|
||||||
return self.real_download(filename, info_dict)
|
return self.real_download(filename, info_dict)
|
||||||
|
Reference in New Issue
Block a user