diff options
Diffstat (limited to 'youtube/util.py')
-rw-r--r-- | youtube/util.py | 77 |
1 files changed, 36 insertions, 41 deletions
diff --git a/youtube/util.py b/youtube/util.py index b057953..30fed26 100644 --- a/youtube/util.py +++ b/youtube/util.py @@ -431,34 +431,29 @@ class RateLimitedQueue(gevent.queue.Queue): gevent.queue.Queue.__init__(self) def get(self): - self.lock.acquire() # blocks if another greenlet currently has the lock - if self.count_since_last_wait >= self.subsequent_bursts and self.surpassed_initial: - gevent.sleep(self.waiting_period) - self.count_since_last_wait = 0 - - elif self.count_since_last_wait >= self.initial_burst and not self.surpassed_initial: - self.surpassed_initial = True - gevent.sleep(self.waiting_period) - self.count_since_last_wait = 0 - - self.count_since_last_wait += 1 + with self.lock: # blocks if another greenlet currently has the lock + if ((self.count_since_last_wait >= self.subsequent_bursts and self.surpassed_initial) or + (self.count_since_last_wait >= self.initial_burst and not self.surpassed_initial)): + self.surpassed_initial = True + gevent.sleep(self.waiting_period) + self.count_since_last_wait = 0 - if not self.currently_empty and self.empty(): - self.currently_empty = True - self.empty_start = time.monotonic() + self.count_since_last_wait += 1 - item = gevent.queue.Queue.get(self) # blocks when nothing left + if not self.currently_empty and self.empty(): + self.currently_empty = True + self.empty_start = time.monotonic() - if self.currently_empty: - if time.monotonic() - self.empty_start >= self.waiting_period: - self.count_since_last_wait = 0 - self.surpassed_initial = False + item = gevent.queue.Queue.get(self) # blocks when nothing left - self.currently_empty = False + if self.currently_empty: + if time.monotonic() - self.empty_start >= self.waiting_period: + self.count_since_last_wait = 0 + self.surpassed_initial = False - self.lock.release() + self.currently_empty = False - return item + return item def download_thumbnail(save_directory, video_id): @@ -667,25 +662,6 @@ def to_valid_filename(name): # https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/extractor/youtube.py#L72 INNERTUBE_CLIENTS = { - 'android_music': { - 'INNERTUBE_API_KEY': 'AIzaSyAOghZGza2MQSZkY_zfZ370N-PUdXEo8AI', - 'INNERTUBE_CONTEXT': { - 'client': { - 'hl': 'en', - 'gl': 'US', - 'clientName': 'ANDROID_MUSIC', - 'clientVersion': '6.48.51', - 'osName': 'Android', - 'osVersion': '14', - 'androidSdkVersion': 34, - 'platform': 'MOBILE', - 'userAgent': 'com.google.android.apps.youtube.music/6.48.51 (Linux; U; Android 14; US) gzip' - } - }, - 'INNERTUBE_CONTEXT_CLIENT_NAME': 21, - 'REQUIRE_JS_PLAYER': False - }, - 'android': { 'INNERTUBE_API_KEY': 'AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w', 'INNERTUBE_CONTEXT': { @@ -721,6 +697,25 @@ INNERTUBE_CLIENTS = { 'REQUIRE_JS_PLAYER': False }, + 'android_music': { + 'INNERTUBE_API_KEY': 'AIzaSyAOghZGza2MQSZkY_zfZ370N-PUdXEo8AI', + 'INNERTUBE_CONTEXT': { + 'client': { + 'hl': 'en', + 'gl': 'US', + 'clientName': 'ANDROID_MUSIC', + 'clientVersion': '6.48.51', + 'osName': 'Android', + 'osVersion': '14', + 'androidSdkVersion': 34, + 'platform': 'MOBILE', + 'userAgent': 'com.google.android.apps.youtube.music/6.48.51 (Linux; U; Android 14; US) gzip' + } + }, + 'INNERTUBE_CONTEXT_CLIENT_NAME': 21, + 'REQUIRE_JS_PLAYER': False + }, + # This client can access age restricted videos (unless the uploader has disabled the 'allow embedding' option) # See: https://github.com/zerodytrash/YouTube-Internal-Clients 'tv_embedded': { |