aboutsummaryrefslogtreecommitdiffstats
path: root/youtube/util.py
diff options
context:
space:
mode:
authorJesus <heckyel@hyperbola.info>2024-10-11 11:22:36 +0800
committerJesus <heckyel@hyperbola.info>2024-10-11 11:22:36 +0800
commitee31cedae0c17af8484c3571ad0c0fac506f95d4 (patch)
tree133482846cde2b55b24fc0f73a8fcb67bba6f78b /youtube/util.py
parentd3b0cb5e131124bec0598e540958dd8bc681f615 (diff)
downloadyt-local-ee31cedae0c17af8484c3571ad0c0fac506f95d4.tar.lz
yt-local-ee31cedae0c17af8484c3571ad0c0fac506f95d4.tar.xz
yt-local-ee31cedae0c17af8484c3571ad0c0fac506f95d4.zip
Revert "Refactoring code and reuse INNERTUBE_CLIENTS"
This reverts commit 8af98968dd4325d5686bfed109aa4ed18b17edbc.
Diffstat (limited to 'youtube/util.py')
-rw-r--r--youtube/util.py98
1 files changed, 37 insertions, 61 deletions
diff --git a/youtube/util.py b/youtube/util.py
index b9225d2..5c0e4fb 100644
--- a/youtube/util.py
+++ b/youtube/util.py
@@ -431,29 +431,34 @@ class RateLimitedQueue(gevent.queue.Queue):
gevent.queue.Queue.__init__(self)
def get(self):
- 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
+ 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
+ self.count_since_last_wait += 1
- if not self.currently_empty and self.empty():
- self.currently_empty = True
- self.empty_start = time.monotonic()
+ if not self.currently_empty and self.empty():
+ self.currently_empty = True
+ self.empty_start = time.monotonic()
- item = gevent.queue.Queue.get(self) # blocks when nothing left
+ item = gevent.queue.Queue.get(self) # blocks when nothing left
- if self.currently_empty:
- if time.monotonic() - self.empty_start >= self.waiting_period:
- self.count_since_last_wait = 0
- self.surpassed_initial = 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.currently_empty = False
+ self.currently_empty = False
- return item
+ self.lock.release()
+
+ return item
def download_thumbnail(save_directory, video_id):
@@ -662,45 +667,16 @@ def to_valid_filename(name):
# https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/extractor/youtube.py#L72
INNERTUBE_CLIENTS = {
- 'android-test-suite': {
- 'INNERTUBE_API_KEY': 'AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w',
+ 'web_creator': {
+ 'INNERTUBE_API_KEY': 'AIzaSyBUPetSUmoZL-OhlxA7wSac5XinrygCqMo',
'INNERTUBE_CONTEXT': {
'client': {
- 'hl': 'en',
- 'gl': 'US',
- 'clientName': 'ANDROID_TESTSUITE',
- 'clientVersion': '1.9',
- 'osName': 'Android',
- 'osVersion': '12',
- 'androidSdkVersion': 31,
- 'platform': 'MOBILE',
- 'userAgent': 'com.google.android.youtube/1.9 (Linux; U; Android 12; US) gzip'
+ 'clientName': 'WEB_CREATOR',
+ 'clientVersion': '1.20240723.03.00',
},
- # https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-887739287
- #'thirdParty': {
- # 'embedUrl': 'https://google.com', # Can be any valid URL
- #}
- },
- 'INNERTUBE_CONTEXT_CLIENT_NAME': 3,
- 'REQUIRE_JS_PLAYER': False,
- },
-
- 'ios': {
- 'INNERTUBE_API_KEY': 'AIzaSyB-63vPrdThhKuerbB2N_l7Kwwcxj6yUAc',
- 'INNERTUBE_CONTEXT': {
- 'client': {
- 'hl': 'en',
- 'gl': 'US',
- 'clientName': 'IOS',
- 'clientVersion': '19.12.3',
- 'deviceModel': 'iPhone14,3',
- 'userAgent': 'com.google.ios.youtube/19.12.3 (iPhone14,3; U; CPU iOS 15_6 like Mac OS X)'
- }
},
- 'INNERTUBE_CONTEXT_CLIENT_NAME': 5,
- 'REQUIRE_JS_PLAYER': False
+ 'INNERTUBE_CONTEXT_CLIENT_NAME': 62,
},
-
'android': {
'INNERTUBE_API_KEY': 'AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w',
'INNERTUBE_CONTEXT': {
@@ -720,22 +696,22 @@ INNERTUBE_CLIENTS = {
'REQUIRE_JS_PLAYER': False,
},
- 'android_music': {
- 'INNERTUBE_API_KEY': 'AIzaSyAOghZGza2MQSZkY_zfZ370N-PUdXEo8AI',
+ 'ios': {
+ 'INNERTUBE_API_KEY': 'AIzaSyB-63vPrdThhKuerbB2N_l7Kwwcxj6yUAc',
'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'
+ 'clientName': 'IOS',
+ 'clientVersion': '19.29.1',
+ 'deviceMake': 'Apple',
+ 'deviceModel': 'iPhone16,2',
+ 'userAgent': 'com.google.ios.youtube/19.29.1 (iPhone16,2; U; CPU iOS 17_5_1 like Mac OS X;)',
+ 'osName': 'iPhone',
+ 'osVersion': '17.5.1.21F90',
}
},
- 'INNERTUBE_CONTEXT_CLIENT_NAME': 21,
+ 'INNERTUBE_CONTEXT_CLIENT_NAME': 5,
'REQUIRE_JS_PLAYER': False
},