yt-dlp 2026.1.29.165626.dev0__py3-none-any.whl → 2026.1.30.233459.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- yt_dlp/downloader/__init__.py +2 -0
- yt_dlp/downloader/soop.py +61 -0
- yt_dlp/extractor/afreecatv.py +39 -1
- yt_dlp/extractor/lazy_extractors.py +1 -1
- yt_dlp/extractor/unsupported.py +5 -0
- yt_dlp/extractor/whyp.py +8 -2
- yt_dlp/version.py +3 -3
- {yt_dlp-2026.1.29.165626.dev0.dist-info → yt_dlp-2026.1.30.233459.dev0.dist-info}/METADATA +1 -1
- {yt_dlp-2026.1.29.165626.dev0.dist-info → yt_dlp-2026.1.30.233459.dev0.dist-info}/RECORD +17 -16
- {yt_dlp-2026.1.29.165626.dev0.data → yt_dlp-2026.1.30.233459.dev0.data}/data/share/bash-completion/completions/yt-dlp +0 -0
- {yt_dlp-2026.1.29.165626.dev0.data → yt_dlp-2026.1.30.233459.dev0.data}/data/share/doc/yt_dlp/README.txt +0 -0
- {yt_dlp-2026.1.29.165626.dev0.data → yt_dlp-2026.1.30.233459.dev0.data}/data/share/fish/vendor_completions.d/yt-dlp.fish +0 -0
- {yt_dlp-2026.1.29.165626.dev0.data → yt_dlp-2026.1.30.233459.dev0.data}/data/share/man/man1/yt-dlp.1 +0 -0
- {yt_dlp-2026.1.29.165626.dev0.data → yt_dlp-2026.1.30.233459.dev0.data}/data/share/zsh/site-functions/_yt-dlp +0 -0
- {yt_dlp-2026.1.29.165626.dev0.dist-info → yt_dlp-2026.1.30.233459.dev0.dist-info}/WHEEL +0 -0
- {yt_dlp-2026.1.29.165626.dev0.dist-info → yt_dlp-2026.1.30.233459.dev0.dist-info}/entry_points.txt +0 -0
- {yt_dlp-2026.1.29.165626.dev0.dist-info → yt_dlp-2026.1.30.233459.dev0.dist-info}/licenses/LICENSE +0 -0
yt_dlp/downloader/__init__.py
CHANGED
|
@@ -36,6 +36,7 @@ from .rtsp import RtspFD
|
|
|
36
36
|
from .websocket import WebSocketFragmentFD
|
|
37
37
|
from .youtube_live_chat import YoutubeLiveChatFD
|
|
38
38
|
from .bunnycdn import BunnyCdnFD
|
|
39
|
+
from .soop import SoopVodFD
|
|
39
40
|
|
|
40
41
|
PROTOCOL_MAP = {
|
|
41
42
|
'rtmp': RtmpFD,
|
|
@@ -56,6 +57,7 @@ PROTOCOL_MAP = {
|
|
|
56
57
|
'youtube_live_chat': YoutubeLiveChatFD,
|
|
57
58
|
'youtube_live_chat_replay': YoutubeLiveChatFD,
|
|
58
59
|
'bunnycdn': BunnyCdnFD,
|
|
60
|
+
'soopvod': SoopVodFD,
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import threading
|
|
2
|
+
import time
|
|
3
|
+
|
|
4
|
+
from .common import FileDownloader
|
|
5
|
+
from . import HlsFD
|
|
6
|
+
from ..extractor.afreecatv import _cloudfront_auth_request
|
|
7
|
+
from ..networking.exceptions import network_exceptions
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SoopVodFD(FileDownloader):
|
|
11
|
+
"""
|
|
12
|
+
Downloads Soop subscription VODs with required cookie refresh requests
|
|
13
|
+
Note, this is not a part of public API, and will be removed without notice.
|
|
14
|
+
DO NOT USE
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
def real_download(self, filename, info_dict):
|
|
18
|
+
self.to_screen(f'[{self.FD_NAME}] Downloading Soop subscription VOD HLS')
|
|
19
|
+
fd = HlsFD(self.ydl, self.params)
|
|
20
|
+
refresh_params = info_dict['_cookie_refresh_params']
|
|
21
|
+
referer_url = info_dict['webpage_url']
|
|
22
|
+
|
|
23
|
+
stop_event = threading.Event()
|
|
24
|
+
refresh_thread = threading.Thread(
|
|
25
|
+
target=self._cookie_refresh_thread,
|
|
26
|
+
args=(stop_event, refresh_params, referer_url),
|
|
27
|
+
)
|
|
28
|
+
refresh_thread.start()
|
|
29
|
+
|
|
30
|
+
try:
|
|
31
|
+
return fd.real_download(filename, info_dict)
|
|
32
|
+
finally:
|
|
33
|
+
stop_event.set()
|
|
34
|
+
|
|
35
|
+
def _cookie_refresh_thread(self, stop_event, refresh_params, referer_url):
|
|
36
|
+
m3u8_url = refresh_params['m3u8_url']
|
|
37
|
+
strm_id = refresh_params['strm_id']
|
|
38
|
+
video_id = refresh_params['video_id']
|
|
39
|
+
|
|
40
|
+
def _get_cloudfront_cookie_expiration(m3u8_url):
|
|
41
|
+
cookies = self.ydl.cookiejar.get_cookies_for_url(m3u8_url)
|
|
42
|
+
return min((cookie.expires for cookie in cookies if 'CloudFront' in cookie.name and cookie.expires), default=0)
|
|
43
|
+
|
|
44
|
+
while not stop_event.wait(5):
|
|
45
|
+
current_time = time.time()
|
|
46
|
+
expiration_time = _get_cloudfront_cookie_expiration(m3u8_url)
|
|
47
|
+
last_refresh_check = refresh_params.get('_last_refresh', 0)
|
|
48
|
+
|
|
49
|
+
# Cookie TTL is 90 seconds, but let's give ourselves a 15-second cushion
|
|
50
|
+
should_refresh = (
|
|
51
|
+
(expiration_time and current_time >= expiration_time - 15)
|
|
52
|
+
or (not expiration_time and current_time - last_refresh_check >= 75)
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
if should_refresh:
|
|
56
|
+
try:
|
|
57
|
+
self.ydl.urlopen(_cloudfront_auth_request(
|
|
58
|
+
m3u8_url, strm_id, video_id, referer_url)).read()
|
|
59
|
+
refresh_params['_last_refresh'] = current_time
|
|
60
|
+
except network_exceptions as e:
|
|
61
|
+
self.to_screen(f'[{self.FD_NAME}] Cookie refresh attempt failed: {e}')
|
yt_dlp/extractor/afreecatv.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import datetime as dt
|
|
2
2
|
import functools
|
|
3
|
+
import time
|
|
3
4
|
|
|
4
5
|
from .common import InfoExtractor
|
|
5
6
|
from ..networking import Request
|
|
@@ -16,7 +17,23 @@ from ..utils import (
|
|
|
16
17
|
urlencode_postdata,
|
|
17
18
|
urljoin,
|
|
18
19
|
)
|
|
19
|
-
from ..utils.traversal import traverse_obj
|
|
20
|
+
from ..utils.traversal import require, traverse_obj
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _cloudfront_auth_request(m3u8_url, strm_id, video_id, referer_url):
|
|
24
|
+
return Request(
|
|
25
|
+
'https://live.sooplive.co.kr/api/private_auth.php',
|
|
26
|
+
method='POST',
|
|
27
|
+
headers={
|
|
28
|
+
'Referer': referer_url,
|
|
29
|
+
'Origin': 'https://vod.sooplive.co.kr',
|
|
30
|
+
},
|
|
31
|
+
data=urlencode_postdata({
|
|
32
|
+
'type': 'vod',
|
|
33
|
+
'strm_id': strm_id,
|
|
34
|
+
'title_no': video_id,
|
|
35
|
+
'url': m3u8_url,
|
|
36
|
+
}))
|
|
20
37
|
|
|
21
38
|
|
|
22
39
|
class AfreecaTVBaseIE(InfoExtractor):
|
|
@@ -153,6 +170,13 @@ class AfreecaTVIE(AfreecaTVBaseIE):
|
|
|
153
170
|
'nApiLevel': 10,
|
|
154
171
|
}))['data']
|
|
155
172
|
|
|
173
|
+
initial_refresh_time = 0
|
|
174
|
+
strm_id = None
|
|
175
|
+
# For subscriber-only VODs, we need to call private_auth.php to get CloudFront cookies
|
|
176
|
+
needs_private_auth = traverse_obj(data, ('sub_upload_type', {str}))
|
|
177
|
+
if needs_private_auth:
|
|
178
|
+
strm_id = traverse_obj(data, ('bj_id', {str}, {require('stream ID')}))
|
|
179
|
+
|
|
156
180
|
error_code = traverse_obj(data, ('code', {int}))
|
|
157
181
|
if error_code == -6221:
|
|
158
182
|
raise ExtractorError('The VOD does not exist', expected=True)
|
|
@@ -172,9 +196,23 @@ class AfreecaTVIE(AfreecaTVBaseIE):
|
|
|
172
196
|
traverse_obj(data, ('files', lambda _, v: url_or_none(v['file']))), start=1):
|
|
173
197
|
file_url = file_element['file']
|
|
174
198
|
if determine_ext(file_url) == 'm3u8':
|
|
199
|
+
if needs_private_auth:
|
|
200
|
+
self._request_webpage(
|
|
201
|
+
_cloudfront_auth_request(file_url, strm_id, video_id, url),
|
|
202
|
+
video_id, 'Requesting CloudFront cookies', 'Failed to get CloudFront cookies')
|
|
203
|
+
initial_refresh_time = time.time()
|
|
175
204
|
formats = self._extract_m3u8_formats(
|
|
176
205
|
file_url, video_id, 'mp4', m3u8_id='hls',
|
|
177
206
|
note=f'Downloading part {file_num} m3u8 information')
|
|
207
|
+
if needs_private_auth:
|
|
208
|
+
for fmt in formats:
|
|
209
|
+
fmt['protocol'] = 'soopvod'
|
|
210
|
+
fmt['_cookie_refresh_params'] = {
|
|
211
|
+
'm3u8_url': file_url,
|
|
212
|
+
'strm_id': strm_id,
|
|
213
|
+
'video_id': video_id,
|
|
214
|
+
'_last_refresh': initial_refresh_time,
|
|
215
|
+
}
|
|
178
216
|
else:
|
|
179
217
|
formats = [{
|
|
180
218
|
'url': file_url,
|
|
@@ -5862,7 +5862,7 @@ class UnsupportedInfoExtractor(LazyLoadExtractor):
|
|
|
5862
5862
|
class KnownDRMIE(UnsupportedInfoExtractor):
|
|
5863
5863
|
_module = 'yt_dlp.extractor.unsupported'
|
|
5864
5864
|
IE_NAME = 'DRM'
|
|
5865
|
-
_VALID_URL = 'https?://(?:www\\.)?(?:play\\.hbomax\\.com|channel(?:4|5)\\.com|peacocktv\\.com|(?:[\\w.]+\\.)?disneyplus\\.com|open\\.spotify\\.com|tvnz\\.co\\.nz|oneplus\\.ch|artstation\\.com/learning/courses|philo\\.com|(?:[\\w.]+\\.)?mech-plus\\.com|aha\\.video|mubi\\.com|vootkids\\.com|nowtv\\.it/watch|tv\\.apple\\.com|primevideo\\.com|hulu\\.com|resource\\.inkryptvideos\\.com|joyn\\.de|amazon\\.(?:\\w{2}\\.)?\\w+/gp/video|music\\.amazon\\.(?:\\w{2}\\.)?\\w+|(?:watch|front)\\.njpwworld\\.com|qub\\.ca/vrai|(?:beta\\.)?crunchyroll\\.com|viki\\.com|deezer\\.com|b-ch\\.com|ctv\\.ca|noovo\\.ca|tsn\\.ca|paramountplus\\.com|(?:m\\.)?(?:sony)?crackle\\.com|cw(?:tv(?:pr)?|seed)\\.com|6play\\.fr|rtlplay\\.be|play\\.rtl\\.hr|rtlmost\\.hu|plus\\.rtl\\.de(?!/podcast/)|mediasetinfinity\\.es)'
|
|
5865
|
+
_VALID_URL = 'https?://(?:www\\.)?(?:play\\.hbomax\\.com|channel(?:4|5)\\.com|peacocktv\\.com|(?:[\\w.]+\\.)?disneyplus\\.com|open\\.spotify\\.com|tvnz\\.co\\.nz|oneplus\\.ch|artstation\\.com/learning/courses|philo\\.com|(?:[\\w.]+\\.)?mech-plus\\.com|aha\\.video|mubi\\.com|vootkids\\.com|nowtv\\.it/watch|tv\\.apple\\.com|primevideo\\.com|hulu\\.com|resource\\.inkryptvideos\\.com|joyn\\.de|amazon\\.(?:\\w{2}\\.)?\\w+/gp/video|music\\.amazon\\.(?:\\w{2}\\.)?\\w+|(?:watch|front)\\.njpwworld\\.com|qub\\.ca/vrai|(?:beta\\.)?crunchyroll\\.com|viki\\.com|deezer\\.com|b-ch\\.com|ctv\\.ca|noovo\\.ca|tsn\\.ca|paramountplus\\.com|(?:m\\.)?(?:sony)?crackle\\.com|cw(?:tv(?:pr)?|seed)\\.com|6play\\.fr|rtlplay\\.be|play\\.rtl\\.hr|rtlmost\\.hu|plus\\.rtl\\.de(?!/podcast/)|mediasetinfinity\\.es|tv5mondeplus\\.com)'
|
|
5866
5866
|
IE_DESC = False
|
|
5867
5867
|
|
|
5868
5868
|
|
yt_dlp/extractor/unsupported.py
CHANGED
|
@@ -66,6 +66,7 @@ class KnownDRMIE(UnsupportedInfoExtractor):
|
|
|
66
66
|
r'rtlmost\.hu',
|
|
67
67
|
r'plus\.rtl\.de(?!/podcast/)',
|
|
68
68
|
r'mediasetinfinity\.es',
|
|
69
|
+
r'tv5mondeplus\.com',
|
|
69
70
|
)
|
|
70
71
|
|
|
71
72
|
_TESTS = [{
|
|
@@ -226,6 +227,10 @@ class KnownDRMIE(UnsupportedInfoExtractor):
|
|
|
226
227
|
}, {
|
|
227
228
|
'url': 'https://www.mediasetinfinity.es/',
|
|
228
229
|
'only_matching': True,
|
|
230
|
+
}, {
|
|
231
|
+
# https://github.com/yt-dlp/yt-dlp/issues/14743
|
|
232
|
+
'url': 'https://www.tv5mondeplus.com/',
|
|
233
|
+
'only_matching': True,
|
|
229
234
|
}]
|
|
230
235
|
|
|
231
236
|
def _real_extract(self, url):
|
yt_dlp/extractor/whyp.py
CHANGED
|
@@ -2,6 +2,7 @@ from .common import InfoExtractor
|
|
|
2
2
|
from ..utils import (
|
|
3
3
|
float_or_none,
|
|
4
4
|
int_or_none,
|
|
5
|
+
parse_iso8601,
|
|
5
6
|
str_or_none,
|
|
6
7
|
traverse_obj,
|
|
7
8
|
url_or_none,
|
|
@@ -16,9 +17,12 @@ class WhypIE(InfoExtractor):
|
|
|
16
17
|
'info_dict': {
|
|
17
18
|
'id': '18337',
|
|
18
19
|
'title': 'Example Track',
|
|
20
|
+
'display_id': 'example-track',
|
|
19
21
|
'description': 'md5:e0b1bcf1d267dc1a0f15efff09c8f297',
|
|
20
22
|
'ext': 'flac',
|
|
21
23
|
'duration': 135.63,
|
|
24
|
+
'timestamp': 1643216583,
|
|
25
|
+
'upload_date': '20220126',
|
|
22
26
|
'uploader': 'Brad',
|
|
23
27
|
'uploader_id': '1',
|
|
24
28
|
'thumbnail': 'https://cdn.whyp.it/6ad0bbd9-577d-42bb-9b61-2a4f57f647eb.jpg',
|
|
@@ -44,10 +48,12 @@ class WhypIE(InfoExtractor):
|
|
|
44
48
|
'http_headers': {'Referer': 'https://whyp.it/'},
|
|
45
49
|
} for prefix in ('audio', 'lossy', 'lossless') if url_or_none(data.get(f'{prefix}_url'))],
|
|
46
50
|
**traverse_obj(data, {
|
|
47
|
-
'title': 'title',
|
|
51
|
+
'title': ('title', {str}),
|
|
52
|
+
'display_id': ('slug', {str}),
|
|
48
53
|
'description': 'description',
|
|
49
54
|
'duration': ('duration', {float_or_none}),
|
|
50
|
-
'
|
|
55
|
+
'timestamp': ('created_at', {parse_iso8601}),
|
|
56
|
+
'uploader': ('user', 'username', {str}),
|
|
51
57
|
'uploader_id': ('user', 'id', {str_or_none}),
|
|
52
58
|
'thumbnail': ('artwork_url', {url_or_none}),
|
|
53
59
|
}),
|
yt_dlp/version.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Autogenerated by devscripts/update-version.py
|
|
2
2
|
|
|
3
|
-
__version__ = '2026.01.
|
|
3
|
+
__version__ = '2026.01.30.233459'
|
|
4
4
|
|
|
5
|
-
RELEASE_GIT_HEAD = '
|
|
5
|
+
RELEASE_GIT_HEAD = 'bf5d8c2a663ac690711262aebc733c1b06a54b26'
|
|
6
6
|
|
|
7
7
|
VARIANT = 'pip'
|
|
8
8
|
|
|
@@ -12,4 +12,4 @@ CHANNEL = 'nightly'
|
|
|
12
12
|
|
|
13
13
|
ORIGIN = 'yt-dlp/yt-dlp-nightly-builds'
|
|
14
14
|
|
|
15
|
-
_pkg_version = '2026.01.
|
|
15
|
+
_pkg_version = '2026.01.30.233459dev'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: yt-dlp
|
|
3
|
-
Version: 2026.1.
|
|
3
|
+
Version: 2026.1.30.233459.dev0
|
|
4
4
|
Summary: A feature-rich command-line audio/video downloader
|
|
5
5
|
Project-URL: Documentation, https://github.com/yt-dlp/yt-dlp#readme
|
|
6
6
|
Project-URL: Repository, https://github.com/yt-dlp/yt-dlp
|
|
@@ -11,7 +11,7 @@ yt_dlp/options.py,sha256=-PQ5DyRSIU9YBSG2oh0RTHC-eg4EewNt4zewTZTuERM,100632
|
|
|
11
11
|
yt_dlp/plugins.py,sha256=EGmR0ydaahNspGrgszTNX4-YjHe93WOOhcw1gf6PZSs,8215
|
|
12
12
|
yt_dlp/socks.py,sha256=oAuAfWM6jxI8A5hHDLEKq2U2-k9NyMB_z6nrKzNE9fg,8936
|
|
13
13
|
yt_dlp/update.py,sha256=sY7gNFBQorzs7sEjRrqL5QOsTBNmGGa_FnpTtbxY1vA,25280
|
|
14
|
-
yt_dlp/version.py,sha256=
|
|
14
|
+
yt_dlp/version.py,sha256=fbrJWbuo8Cmrv0eGqkbmplWjee7OVuJdQ9EH5wlJQCw,360
|
|
15
15
|
yt_dlp/webvtt.py,sha256=ONkXaaNCZcX8pQhJn3iwIKyaQ34BtVDrMEdG6wRNZwM,11451
|
|
16
16
|
yt_dlp/__pyinstaller/__init__.py,sha256=-c4Zo8nQGKAm8wc_LDscxMtK7zr_YhZwRnC9CMruUBE,72
|
|
17
17
|
yt_dlp/__pyinstaller/hook-yt_dlp.py,sha256=5Rd0zV2pDskjY1KtT0wsjxv4hStx67sLCjUexsFvFus,1339
|
|
@@ -25,7 +25,7 @@ yt_dlp/compat/urllib/__init__.py,sha256=wKkvg7z1ICwYqtxp-Y8ACPYKvTAIv_y5nJMmjIYb
|
|
|
25
25
|
yt_dlp/compat/urllib/request.py,sha256=xNcTylKQDNwNTX-qWfbgg8j7GDsuLARYaPNhFjbvl6g,1481
|
|
26
26
|
yt_dlp/dependencies/Cryptodome.py,sha256=91_k5HjJ24XM03-Y6-3tWHNr6knebvNIROlbREgyjkY,1423
|
|
27
27
|
yt_dlp/dependencies/__init__.py,sha256=hjIc6wZyo9GVSte4KY-zVr0SGGXRKvUNwhjeHK8Ie3U,2277
|
|
28
|
-
yt_dlp/downloader/__init__.py,sha256=
|
|
28
|
+
yt_dlp/downloader/__init__.py,sha256=ElG-VDCd3dJroonzVQYCh9M5lvFvYtTUGwACAL_uhCI,4572
|
|
29
29
|
yt_dlp/downloader/bunnycdn.py,sha256=s18-DtSCtlRp1gyIo1B59AbEEeaX45rfWHHmJx0lLQM,1762
|
|
30
30
|
yt_dlp/downloader/common.py,sha256=7i5c15Wf88GSR-TO11eQN5Y-GjcodbxnoJe4h6YNRTs,20700
|
|
31
31
|
yt_dlp/downloader/dash.py,sha256=krbHwJRK8mIKH5WB3W4e8XcFlRm0gFgbmQBHtT8K5Kk,3936
|
|
@@ -40,6 +40,7 @@ yt_dlp/downloader/mhtml.py,sha256=sKp42SkxuuWVepGbia1jqhNFwtI5xt3KaMMucJ0J8Uk,57
|
|
|
40
40
|
yt_dlp/downloader/niconico.py,sha256=ECPStHiuMH8PfWiNKDQLxM7TTvkoQn281cIJ13n8WEk,3612
|
|
41
41
|
yt_dlp/downloader/rtmp.py,sha256=dJYJi9yaknOG74YIrfSFg2owchrGsouelx4MHEN0-hM,8851
|
|
42
42
|
yt_dlp/downloader/rtsp.py,sha256=LenaspFKHde5EkP52oU6jiHYxYferyyGgFPLfm6S5Hs,1477
|
|
43
|
+
yt_dlp/downloader/soop.py,sha256=LmLSk0UsYWWWX98o54NFljLagpTkJoT5GvNqbg3kJLs,2432
|
|
43
44
|
yt_dlp/downloader/websocket.py,sha256=G39SkXEIGtUEYaP1_ODXMiZGZgIrFeb3wqlfVypcHUM,1772
|
|
44
45
|
yt_dlp/downloader/youtube_live_chat.py,sha256=JLpGIUNNbuM7ZuZMY9A6X3xrRDfs3sWz4tzXLXpa1P4,10875
|
|
45
46
|
yt_dlp/extractor/__init__.py,sha256=XMV5BpSWbaDXGkkI2sim_iJk7y0BpCgrDcPjwenA1Y0,1764
|
|
@@ -58,7 +59,7 @@ yt_dlp/extractor/adobetv.py,sha256=-6CIu53D23xwWja-GLv7fY77GURSyjwcyGnMV4-IXUs,3
|
|
|
58
59
|
yt_dlp/extractor/adultswim.py,sha256=afgnmyHi5pfyd6L_tsLo9C4uelIKtUQcaZ0eZ0JUvpA,8394
|
|
59
60
|
yt_dlp/extractor/aenetworks.py,sha256=PRJ-vI1hUUBTUk8RenI_sMxtkzqiSEfe6Me60-rERrw,17309
|
|
60
61
|
yt_dlp/extractor/aeonco.py,sha256=uQgNce2UVzDiEnyG4Ns7QKebxCJvUO4d1fTKwasHB-4,3303
|
|
61
|
-
yt_dlp/extractor/afreecatv.py,sha256=
|
|
62
|
+
yt_dlp/extractor/afreecatv.py,sha256=j0rIuJA6xNVcLeRSFglmugaPsYjCBVT83AdABqNTDFs,19711
|
|
62
63
|
yt_dlp/extractor/agalega.py,sha256=0nSa07MrXYo-G2XFwkHjSbY48hDfkAiImtR4iNU1DL8,3714
|
|
63
64
|
yt_dlp/extractor/agora.py,sha256=gpmgLRRK6O-H5lk5Jqk12E1xOEsr89EFLH0uDe_VS50,9579
|
|
64
65
|
yt_dlp/extractor/airtv.py,sha256=t_LIp3kLNcUdBLQk_rUZmOlENUB5TIkEXy_EgA18JzM,4088
|
|
@@ -461,7 +462,7 @@ yt_dlp/extractor/la7.py,sha256=GShDLu1N0rS1bY4uIiUkznThvn7gNiwtSgmh7Rs7t08,9435
|
|
|
461
462
|
yt_dlp/extractor/laracasts.py,sha256=PzTqAbHXiUqog-mpp2qR_rpKa-sZel4mLyzWTPkbDuc,4587
|
|
462
463
|
yt_dlp/extractor/lastfm.py,sha256=OpmE-Y-2rcav2r2xaDQzX_EJiltmbbe6fO9VzkLqNWQ,4748
|
|
463
464
|
yt_dlp/extractor/laxarxames.py,sha256=-YyL-5y4t2L9ptTSLXhvK-SJwvXGqv5l1HfT129zF0c,2773
|
|
464
|
-
yt_dlp/extractor/lazy_extractors.py,sha256=
|
|
465
|
+
yt_dlp/extractor/lazy_extractors.py,sha256=RG7yAhhS02_X8SRsTxP11pWNAb-3JV665B0ZcNxDEoE,815481
|
|
465
466
|
yt_dlp/extractor/lbry.py,sha256=veeChelvfuFiNCeHhqYLEqR8X5mcmxevaekmZgoJk-Q,18112
|
|
466
467
|
yt_dlp/extractor/lci.py,sha256=_0XuoITIt_QFA-6eBNpDXZZfouwUWfcdHQlpAOuiLEs,2131
|
|
467
468
|
yt_dlp/extractor/lcp.py,sha256=edMA8L-eJZLquDvHcSY4oFWI0C8yGgjqW1tmhhLMJ5U,2279
|
|
@@ -951,7 +952,7 @@ yt_dlp/extractor/umg.py,sha256=FF2Wz1ay_f6hxPIq-8jaFKGqAtLUNPlBTLA-x0mkwI0,2240
|
|
|
951
952
|
yt_dlp/extractor/unistra.py,sha256=z1zkou5gHYyf9NQiALCcgtSQigbKicNlo-Xiq7G_pO0,2078
|
|
952
953
|
yt_dlp/extractor/unitednations.py,sha256=qFB_vRls1Sw5pJbQ16W6yKGy_IwbvgLwvcGsXm-D7BE,1289
|
|
953
954
|
yt_dlp/extractor/unity.py,sha256=huqyb02vbyBqiFR52bPtxV5b_YTK-PBwvKY8DR88JHo,1209
|
|
954
|
-
yt_dlp/extractor/unsupported.py,sha256=
|
|
955
|
+
yt_dlp/extractor/unsupported.py,sha256=rk93fV90msTF3aNf9wvw5OHNTXoYzXRqnIWifIHUXyA,10325
|
|
955
956
|
yt_dlp/extractor/uol.py,sha256=kWFdi9XLelDpc2bpooKYUIDchndGY4SJmkjPhyXEt6w,5307
|
|
956
957
|
yt_dlp/extractor/uplynk.py,sha256=cJLFlmC4nD8zv7gYBO61j65M4ntvs8NM4My4wxloRVA,3352
|
|
957
958
|
yt_dlp/extractor/urort.py,sha256=LSk-RJsTH03x-7whkdvNRRAGofARl4bKXeyIzzSqnBQ,2136
|
|
@@ -1014,7 +1015,7 @@ yt_dlp/extractor/weverse.py,sha256=zFFq7PJU3a6NWSBbMHcYXdqop0C2yCj0fPgk6iUeqC8,3
|
|
|
1014
1015
|
yt_dlp/extractor/wevidi.py,sha256=ylpKfJ1aEGDRYF0x9O2KgaeGeN_BxYN2phRvGao2nF8,4159
|
|
1015
1016
|
yt_dlp/extractor/weyyak.py,sha256=YlBPciN_7tMuQknRooSxKuhEiGLOiDUmVn6fBMgXc2A,3497
|
|
1016
1017
|
yt_dlp/extractor/whowatch.py,sha256=q0ZawsjFxkIbsIpnCL-RkwkMdJNgRD6-WDsJajyfVrY,3860
|
|
1017
|
-
yt_dlp/extractor/whyp.py,sha256=
|
|
1018
|
+
yt_dlp/extractor/whyp.py,sha256=qR1ZZPRUEm8ZTdztOPQi2Ff-IgYL7bTqFz0asK9Wax8,2196
|
|
1018
1019
|
yt_dlp/extractor/wikimedia.py,sha256=0FSysi1ciIjb7bF8LC_7-5w6IJUqiHmueVhZEVWamo0,2323
|
|
1019
1020
|
yt_dlp/extractor/wimbledon.py,sha256=cJ_VJ5CEvxOAIENTQETJJlXdyQqdozgRYWVJgtbvZqk,2285
|
|
1020
1021
|
yt_dlp/extractor/wimtv.py,sha256=K8HWMvB0uGcppnkMpzH9AGvl-wBnhuR8Izju0rBs7lo,5777
|
|
@@ -1124,13 +1125,13 @@ yt_dlp/utils/progress.py,sha256=t9kVvJ0oWuEqRzo9fdFbIhHUBtO_8mg348QwZ1faqLo,3261
|
|
|
1124
1125
|
yt_dlp/utils/traversal.py,sha256=64E3RcZ56iSX50RI_HbKdDNftkETMLBaEPX791_b7yQ,18265
|
|
1125
1126
|
yt_dlp/utils/jslib/__init__.py,sha256=CbdJiRA7Eh5PnjF2V4lDTcg0J0XjBMaaq0H4pCfq9Tk,87
|
|
1126
1127
|
yt_dlp/utils/jslib/devalue.py,sha256=UtcQ1IEzt6HWBjB9Z_6rJMb3y2pFrbHXDNu1rrxXF1c,5583
|
|
1127
|
-
yt_dlp-2026.1.
|
|
1128
|
-
yt_dlp-2026.1.
|
|
1129
|
-
yt_dlp-2026.1.
|
|
1130
|
-
yt_dlp-2026.1.
|
|
1131
|
-
yt_dlp-2026.1.
|
|
1132
|
-
yt_dlp-2026.1.
|
|
1133
|
-
yt_dlp-2026.1.
|
|
1134
|
-
yt_dlp-2026.1.
|
|
1135
|
-
yt_dlp-2026.1.
|
|
1136
|
-
yt_dlp-2026.1.
|
|
1128
|
+
yt_dlp-2026.1.30.233459.dev0.data/data/share/bash-completion/completions/yt-dlp,sha256=KKMwJ7JkH-B2rXIR9n4wAHTqn5waHyxzPtVmsMoYkDI,6009
|
|
1129
|
+
yt_dlp-2026.1.30.233459.dev0.data/data/share/doc/yt_dlp/README.txt,sha256=4T6_JYCi7J-bEo_VHyLoj8D2wr3RRjhzCxbY13qZrsI,166216
|
|
1130
|
+
yt_dlp-2026.1.30.233459.dev0.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=L0JADRod-4ew2pvmYGiDUuXFgu1Ac8msk-ackiLYHCo,51632
|
|
1131
|
+
yt_dlp-2026.1.30.233459.dev0.data/data/share/man/man1/yt-dlp.1,sha256=m1y5ya1IKD1_33TmVEpP3p1HYZH1KhKrJRVZ_3Ci54M,160877
|
|
1132
|
+
yt_dlp-2026.1.30.233459.dev0.data/data/share/zsh/site-functions/_yt-dlp,sha256=VsiR8Dn2RqbVSZHAqQyDtTfrc3BIBdzwgrcaJqux8kQ,6005
|
|
1133
|
+
yt_dlp-2026.1.30.233459.dev0.dist-info/METADATA,sha256=PP2mjeeUT2gpSj0UrsFCsCIXGiX8GkB1z7TxmIC0pZQ,181977
|
|
1134
|
+
yt_dlp-2026.1.30.233459.dev0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
1135
|
+
yt_dlp-2026.1.30.233459.dev0.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
|
|
1136
|
+
yt_dlp-2026.1.30.233459.dev0.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
|
|
1137
|
+
yt_dlp-2026.1.30.233459.dev0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yt_dlp-2026.1.29.165626.dev0.data → yt_dlp-2026.1.30.233459.dev0.data}/data/share/man/man1/yt-dlp.1
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yt_dlp-2026.1.29.165626.dev0.dist-info → yt_dlp-2026.1.30.233459.dev0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{yt_dlp-2026.1.29.165626.dev0.dist-info → yt_dlp-2026.1.30.233459.dev0.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|