Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
1f16f7cb62
|
|||
|
80b7f3cd00
|
|||
|
8b79e067bc
|
|||
|
cda0627d5a
|
|||
|
ad40dd6d6b
|
|||
|
b91d53dc6f
|
|||
|
cda4fd1f26
|
|||
|
ff2a2edaa5
|
|||
|
38d8d5d4c5
|
|||
|
f010452abf
|
@@ -1,5 +1,3 @@
|
|||||||
[](https://drone.hgit.ga/heckyel/yt-local)
|
|
||||||
|
|
||||||
# yt-local
|
# yt-local
|
||||||
|
|
||||||
Fork of [youtube-local](https://github.com/user234683/youtube-local)
|
Fork of [youtube-local](https://github.com/user234683/youtube-local)
|
||||||
|
|||||||
@@ -114,10 +114,12 @@ if bitness == '32':
|
|||||||
visual_c_runtime_url = 'https://github.com/yuempek/vc-archive/raw/master/archives/vc15_(14.10.25017.0)_2017_x86.7z'
|
visual_c_runtime_url = 'https://github.com/yuempek/vc-archive/raw/master/archives/vc15_(14.10.25017.0)_2017_x86.7z'
|
||||||
visual_c_runtime_sha256 = '2549eb4d2ce4cf3a87425ea01940f74368bf1cda378ef8a8a1f1a12ed59f1547'
|
visual_c_runtime_sha256 = '2549eb4d2ce4cf3a87425ea01940f74368bf1cda378ef8a8a1f1a12ed59f1547'
|
||||||
visual_c_name = 'vc15_(14.10.25017.0)_2017_x86.7z'
|
visual_c_name = 'vc15_(14.10.25017.0)_2017_x86.7z'
|
||||||
|
visual_c_path_to_dlls = 'runtime_minimum/System'
|
||||||
else:
|
else:
|
||||||
visual_c_runtime_url = 'https://github.com/yuempek/vc-archive/raw/master/archives/vc15_(14.10.25017.0)_2017_x64.7z'
|
visual_c_runtime_url = 'https://github.com/yuempek/vc-archive/raw/master/archives/vc15_(14.10.25017.0)_2017_x64.7z'
|
||||||
visual_c_runtime_sha256 = '4f00b824c37e1017a93fccbd5775e6ee54f824b6786f5730d257a87a3d9ce921'
|
visual_c_runtime_sha256 = '4f00b824c37e1017a93fccbd5775e6ee54f824b6786f5730d257a87a3d9ce921'
|
||||||
visual_c_name = 'vc15_(14.10.25017.0)_2017_x64.7z'
|
visual_c_name = 'vc15_(14.10.25017.0)_2017_x64.7z'
|
||||||
|
visual_c_path_to_dlls = 'runtime_minimum/System64'
|
||||||
|
|
||||||
download_if_not_exists('get-pip.py', get_pip_url)
|
download_if_not_exists('get-pip.py', get_pip_url)
|
||||||
|
|
||||||
@@ -198,7 +200,7 @@ with open('./python/python3' + major_release + '._pth', 'a', encoding='utf-8') a
|
|||||||
f.write('..\n')'''
|
f.write('..\n')'''
|
||||||
|
|
||||||
log('Inserting Microsoft C Runtime')
|
log('Inserting Microsoft C Runtime')
|
||||||
check_subp(subprocess.run([r'7z', '-y', 'e', '-opython', 'vc15_(14.10.25017.0)_2017_x86.7z', 'runtime_minimum/System']))
|
check_subp(subprocess.run([r'7z', '-y', 'e', '-opython', visual_c_name, visual_c_path_to_dlls]))
|
||||||
|
|
||||||
log('Installing dependencies')
|
log('Installing dependencies')
|
||||||
wine_run(['./python/python.exe', '-I', '-m', 'pip', 'install', '--no-compile', '-r', './requirements.txt'])
|
wine_run(['./python/python.exe', '-I', '-m', 'pip', 'install', '--no-compile', '-r', './requirements.txt'])
|
||||||
|
|||||||
@@ -1,28 +1,21 @@
|
|||||||
attrs==22.1.0
|
blinker==1.7.0
|
||||||
Brotli==1.0.9
|
Brotli==1.1.0
|
||||||
cachetools==4.2.4
|
cachetools==5.3.3
|
||||||
click==8.0.4
|
click==8.1.7
|
||||||
dataclasses==0.6
|
|
||||||
defusedxml==0.7.1
|
defusedxml==0.7.1
|
||||||
Flask==2.0.1
|
Flask==3.0.2
|
||||||
gevent==22.10.2
|
gevent==24.2.1
|
||||||
greenlet==2.0.1
|
greenlet==3.0.3
|
||||||
importlib-metadata==4.6.4
|
iniconfig==2.0.0
|
||||||
iniconfig==1.1.1
|
itsdangerous==2.1.2
|
||||||
itsdangerous==2.0.1
|
Jinja2==3.1.3
|
||||||
Jinja2==3.0.3
|
MarkupSafe==2.1.5
|
||||||
MarkupSafe==2.0.1
|
packaging==24.0
|
||||||
packaging==20.9
|
pluggy==1.4.0
|
||||||
pluggy>=0.13.1
|
|
||||||
py==1.10.0
|
|
||||||
pyparsing==2.4.7
|
|
||||||
PySocks==1.7.1
|
PySocks==1.7.1
|
||||||
pytest==6.2.5
|
pytest==8.1.1
|
||||||
stem==1.8.0
|
stem==1.8.2
|
||||||
toml==0.10.2
|
urllib3==2.2.1
|
||||||
typing-extensions==3.10.0.2
|
Werkzeug==3.0.1
|
||||||
urllib3==1.26.11
|
zope.event==5.0
|
||||||
Werkzeug==2.1.1
|
zope.interface==6.2
|
||||||
zipp==3.5.1
|
|
||||||
zope.event==4.5.0
|
|
||||||
zope.interface==5.4.0
|
|
||||||
|
|||||||
@@ -1,20 +1,17 @@
|
|||||||
Brotli==1.0.9
|
blinker==1.7.0
|
||||||
cachetools==4.2.4
|
Brotli==1.1.0
|
||||||
click==8.0.4
|
cachetools==5.3.3
|
||||||
dataclasses==0.6
|
click==8.1.7
|
||||||
defusedxml==0.7.1
|
defusedxml==0.7.1
|
||||||
Flask==2.0.1
|
Flask==3.0.2
|
||||||
gevent==22.10.2
|
gevent==24.2.1
|
||||||
greenlet==2.0.1
|
greenlet==3.0.3
|
||||||
importlib-metadata==4.6.4
|
itsdangerous==2.1.2
|
||||||
itsdangerous==2.0.1
|
Jinja2==3.1.3
|
||||||
Jinja2==3.0.3
|
MarkupSafe==2.1.5
|
||||||
MarkupSafe==2.0.1
|
|
||||||
PySocks==1.7.1
|
PySocks==1.7.1
|
||||||
stem==1.8.0
|
stem==1.8.2
|
||||||
typing-extensions==3.10.0.2
|
urllib3==2.2.1
|
||||||
urllib3==1.26.11
|
Werkzeug==3.0.1
|
||||||
Werkzeug==2.1.1
|
zope.event==5.0
|
||||||
zipp==3.5.1
|
zope.interface==6.2
|
||||||
zope.event==4.5.0
|
|
||||||
zope.interface==5.4.0
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ def proxy_site(env, start_response, video=False):
|
|||||||
else:
|
else:
|
||||||
response, cleanup_func = util.fetch_url_response(url, send_headers)
|
response, cleanup_func = util.fetch_url_response(url, send_headers)
|
||||||
|
|
||||||
response_headers = response.getheaders()
|
response_headers = response.headers
|
||||||
if isinstance(response_headers, urllib3._collections.HTTPHeaderDict):
|
if isinstance(response_headers, urllib3._collections.HTTPHeaderDict):
|
||||||
response_headers = response_headers.items()
|
response_headers = response_headers.items()
|
||||||
if video:
|
if video:
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ def get_channel_tab(channel_id, page="1", sort=3, tab='videos', view=1,
|
|||||||
'hl': 'en',
|
'hl': 'en',
|
||||||
'gl': 'US',
|
'gl': 'US',
|
||||||
'clientName': 'WEB',
|
'clientName': 'WEB',
|
||||||
'clientVersion': '2.20180830',
|
'clientVersion': '2.20240327.00.00',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'continuation': ctoken,
|
'continuation': ctoken,
|
||||||
@@ -371,7 +371,7 @@ def get_channel_search_json(channel_id, query, page):
|
|||||||
'hl': 'en',
|
'hl': 'en',
|
||||||
'gl': 'US',
|
'gl': 'US',
|
||||||
'clientName': 'WEB',
|
'clientName': 'WEB',
|
||||||
'clientVersion': '2.20180830',
|
'clientVersion': '2.20240327.00.00',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'continuation': ctoken,
|
'continuation': ctoken,
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ def request_comments(ctoken, replies=False):
|
|||||||
'hl': 'en',
|
'hl': 'en',
|
||||||
'gl': 'US',
|
'gl': 'US',
|
||||||
'clientName': 'MWEB',
|
'clientName': 'MWEB',
|
||||||
'clientVersion': '2.20210804.02.00',
|
'clientVersion': '2.20240328.08.00',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'continuation': ctoken.replace('=', '%3D'),
|
'continuation': ctoken.replace('=', '%3D'),
|
||||||
|
|||||||
@@ -569,7 +569,8 @@ function fetchRange(url, start, end, debugInfo) {
|
|||||||
onFailure(e, 'Network error');
|
onFailure(e, 'Network error');
|
||||||
};
|
};
|
||||||
xhr.ontimeout = function (event){
|
xhr.ontimeout = function (event){
|
||||||
onFailure(null, 'Timeout (15s)', maxRetries=1);
|
xhr.timeout += 5000;
|
||||||
|
onFailure(null, 'Timeout (15s)', maxRetries=5);
|
||||||
};
|
};
|
||||||
xhr.send();
|
xhr.send();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ def fetch_url(url, headers=(), timeout=15, report_text=None, data=None,
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
):
|
):
|
||||||
print(response.status, response.reason, response.getheaders())
|
print(response.status, response.reason, response.headers)
|
||||||
ip = re.search(
|
ip = re.search(
|
||||||
br'IP address: ((?:[\da-f]*:)+[\da-f]+|(?:\d+\.)+\d+)',
|
br'IP address: ((?:[\da-f]*:)+[\da-f]+|(?:\d+\.)+\d+)',
|
||||||
content)
|
content)
|
||||||
@@ -395,22 +395,22 @@ def head(url, use_tor=False, report_text=None, max_redirects=10):
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
mobile_user_agent = 'Mozilla/5.0 (Linux; Android 7.0; Redmi Note 4 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36'
|
mobile_user_agent = 'Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.80 Mobile Safari/537.36'
|
||||||
mobile_ua = (('User-Agent', mobile_user_agent),)
|
mobile_ua = (('User-Agent', mobile_user_agent),)
|
||||||
desktop_user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0'
|
desktop_user_agent = 'Mozilla/5.0 (Windows NT 10.0; rv:124.0) Gecko/20100101 Firefox/124.0'
|
||||||
desktop_ua = (('User-Agent', desktop_user_agent),)
|
desktop_ua = (('User-Agent', desktop_user_agent),)
|
||||||
json_header = (('Content-Type', 'application/json'),)
|
json_header = (('Content-Type', 'application/json'),)
|
||||||
desktop_xhr_headers = (
|
desktop_xhr_headers = (
|
||||||
('Accept', '*/*'),
|
('Accept', '*/*'),
|
||||||
('Accept-Language', 'en-US,en;q=0.5'),
|
('Accept-Language', 'en-US,en;q=0.5'),
|
||||||
('X-YouTube-Client-Name', '1'),
|
('X-YouTube-Client-Name', '1'),
|
||||||
('X-YouTube-Client-Version', '2.20180830'),
|
('X-YouTube-Client-Version', '2.20240327.00.00'),
|
||||||
) + desktop_ua
|
) + desktop_ua
|
||||||
mobile_xhr_headers = (
|
mobile_xhr_headers = (
|
||||||
('Accept', '*/*'),
|
('Accept', '*/*'),
|
||||||
('Accept-Language', 'en-US,en;q=0.5'),
|
('Accept-Language', 'en-US,en;q=0.5'),
|
||||||
('X-YouTube-Client-Name', '2'),
|
('X-YouTube-Client-Name', '1'),
|
||||||
('X-YouTube-Client-Version', '2.20180830'),
|
('X-YouTube-Client-Version', '2.20240328.08.00'),
|
||||||
) + mobile_ua
|
) + mobile_ua
|
||||||
|
|
||||||
|
|
||||||
@@ -674,11 +674,12 @@ INNERTUBE_CLIENTS = {
|
|||||||
'hl': 'en',
|
'hl': 'en',
|
||||||
'gl': 'US',
|
'gl': 'US',
|
||||||
'clientName': 'ANDROID',
|
'clientName': 'ANDROID',
|
||||||
'clientVersion': '17.31.35',
|
'clientVersion': '19.12.36',
|
||||||
'osName': 'Android',
|
'osName': 'Android',
|
||||||
'osVersion': '12',
|
'osVersion': '14',
|
||||||
'androidSdkVersion': 31,
|
'androidSdkVersion': 34,
|
||||||
'userAgent': 'com.google.android.youtube/17.31.35 (Linux; U; Android 12) gzip'
|
'platform': 'MOBILE',
|
||||||
|
'userAgent': 'com.google.android.youtube/19.12.36 (Linux; U; Android 14; US) gzip'
|
||||||
},
|
},
|
||||||
# https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-887739287
|
# https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-887739287
|
||||||
#'thirdParty': {
|
#'thirdParty': {
|
||||||
@@ -699,6 +700,7 @@ INNERTUBE_CLIENTS = {
|
|||||||
'gl': 'US',
|
'gl': 'US',
|
||||||
'clientName': 'TVHTML5_SIMPLY_EMBEDDED_PLAYER',
|
'clientName': 'TVHTML5_SIMPLY_EMBEDDED_PLAYER',
|
||||||
'clientVersion': '2.0',
|
'clientVersion': '2.0',
|
||||||
|
'clientScreen': 'EMBED',
|
||||||
},
|
},
|
||||||
# https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-887739287
|
# https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-887739287
|
||||||
'thirdParty': {
|
'thirdParty': {
|
||||||
@@ -715,7 +717,7 @@ INNERTUBE_CLIENTS = {
|
|||||||
'INNERTUBE_CONTEXT': {
|
'INNERTUBE_CONTEXT': {
|
||||||
'client': {
|
'client': {
|
||||||
'clientName': 'WEB',
|
'clientName': 'WEB',
|
||||||
'clientVersion': '2.20220801.00.00',
|
'clientVersion': '2.20240327.00.00',
|
||||||
'userAgent': desktop_user_agent,
|
'userAgent': desktop_user_agent,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
__version__ = '0.2.8'
|
__version__ = '0.2.11'
|
||||||
|
|||||||
Reference in New Issue
Block a user