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.
@@ -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}')
@@ -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
 
@@ -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
- 'uploader': ('user', 'username'),
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.29.165626'
3
+ __version__ = '2026.01.30.233459'
4
4
 
5
- RELEASE_GIT_HEAD = '8b275536d945c4b3d07b6c520677922c67a7c10f'
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.29.165626dev'
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.29.165626.dev0
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=C2t8S3dwqjc1upr4DqKcq8qoBim7o6yi_RTxv1ZPF0Y,360
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=ymTbNmY6tgAWZJ9yTkIeX3khDViBcdQMPl23Fp36Sso,4518
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=6e0qYRnSaRtSkND4x77LUAj3bEggTc3-UHGaGMb40hA,18132
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=RrlhFa1Y5HshSi-y5QWDdlDBzp-Mj7Xjc8irDzIo8R8,815462
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=56DIvRBMpOI9fxstvEvNZAcIBk0hfO-_cwilPNSKjF0,10151
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=JPvShwyZVp318APJZ_3XpwoIjpZZscWmLubp05Qg4Ck,1933
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.29.165626.dev0.data/data/share/bash-completion/completions/yt-dlp,sha256=KKMwJ7JkH-B2rXIR9n4wAHTqn5waHyxzPtVmsMoYkDI,6009
1128
- yt_dlp-2026.1.29.165626.dev0.data/data/share/doc/yt_dlp/README.txt,sha256=4T6_JYCi7J-bEo_VHyLoj8D2wr3RRjhzCxbY13qZrsI,166216
1129
- yt_dlp-2026.1.29.165626.dev0.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=L0JADRod-4ew2pvmYGiDUuXFgu1Ac8msk-ackiLYHCo,51632
1130
- yt_dlp-2026.1.29.165626.dev0.data/data/share/man/man1/yt-dlp.1,sha256=m1y5ya1IKD1_33TmVEpP3p1HYZH1KhKrJRVZ_3Ci54M,160877
1131
- yt_dlp-2026.1.29.165626.dev0.data/data/share/zsh/site-functions/_yt-dlp,sha256=VsiR8Dn2RqbVSZHAqQyDtTfrc3BIBdzwgrcaJqux8kQ,6005
1132
- yt_dlp-2026.1.29.165626.dev0.dist-info/METADATA,sha256=n3GkVxGaKMMBOXhuLen5tHnqUPpqZCAhismW0zcvjGs,181977
1133
- yt_dlp-2026.1.29.165626.dev0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1134
- yt_dlp-2026.1.29.165626.dev0.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
1135
- yt_dlp-2026.1.29.165626.dev0.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
1136
- yt_dlp-2026.1.29.165626.dev0.dist-info/RECORD,,
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,,