yt-dlp 2025.12.8.550.dev0__py3-none-any.whl → 2025.12.12.233036.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/extractor/archiveorg.py +1 -1
- yt_dlp/extractor/pornhub.py +10 -13
- yt_dlp/extractor/telecinco.py +34 -18
- yt_dlp/version.py +3 -3
- {yt_dlp-2025.12.8.550.dev0.dist-info → yt_dlp-2025.12.12.233036.dev0.dist-info}/METADATA +1 -1
- {yt_dlp-2025.12.8.550.dev0.dist-info → yt_dlp-2025.12.12.233036.dev0.dist-info}/RECORD +14 -14
- {yt_dlp-2025.12.8.550.dev0.data → yt_dlp-2025.12.12.233036.dev0.data}/data/share/bash-completion/completions/yt-dlp +0 -0
- {yt_dlp-2025.12.8.550.dev0.data → yt_dlp-2025.12.12.233036.dev0.data}/data/share/doc/yt_dlp/README.txt +0 -0
- {yt_dlp-2025.12.8.550.dev0.data → yt_dlp-2025.12.12.233036.dev0.data}/data/share/fish/vendor_completions.d/yt-dlp.fish +0 -0
- {yt_dlp-2025.12.8.550.dev0.data → yt_dlp-2025.12.12.233036.dev0.data}/data/share/man/man1/yt-dlp.1 +0 -0
- {yt_dlp-2025.12.8.550.dev0.data → yt_dlp-2025.12.12.233036.dev0.data}/data/share/zsh/site-functions/_yt-dlp +0 -0
- {yt_dlp-2025.12.8.550.dev0.dist-info → yt_dlp-2025.12.12.233036.dev0.dist-info}/WHEEL +0 -0
- {yt_dlp-2025.12.8.550.dev0.dist-info → yt_dlp-2025.12.12.233036.dev0.dist-info}/entry_points.txt +0 -0
- {yt_dlp-2025.12.8.550.dev0.dist-info → yt_dlp-2025.12.12.233036.dev0.dist-info}/licenses/LICENSE +0 -0
yt_dlp/extractor/archiveorg.py
CHANGED
|
@@ -279,7 +279,7 @@ class ArchiveOrgIE(InfoExtractor):
|
|
|
279
279
|
'url': 'https://archive.org/' + track['file'].lstrip('/'),
|
|
280
280
|
}
|
|
281
281
|
|
|
282
|
-
metadata = self._download_json('
|
|
282
|
+
metadata = self._download_json(f'https://archive.org/metadata/{identifier}', identifier)
|
|
283
283
|
m = metadata['metadata']
|
|
284
284
|
identifier = m['identifier']
|
|
285
285
|
|
yt_dlp/extractor/pornhub.py
CHANGED
|
@@ -24,6 +24,7 @@ from ..utils import (
|
|
|
24
24
|
url_or_none,
|
|
25
25
|
urlencode_postdata,
|
|
26
26
|
)
|
|
27
|
+
from ..utils.traversal import find_elements, traverse_obj
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
class PornHubBaseIE(InfoExtractor):
|
|
@@ -137,23 +138,24 @@ class PornHubIE(PornHubBaseIE):
|
|
|
137
138
|
_EMBED_REGEX = [r'<iframe[^>]+?src=["\'](?P<url>(?:https?:)?//(?:www\.)?pornhub(?:premium)?\.(?:com|net|org)/embed/[\da-z]+)']
|
|
138
139
|
_TESTS = [{
|
|
139
140
|
'url': 'http://www.pornhub.com/view_video.php?viewkey=648719015',
|
|
140
|
-
'md5': '
|
|
141
|
+
'md5': '4d4a4e9178b655776f86cf89ecaf0edf',
|
|
141
142
|
'info_dict': {
|
|
142
143
|
'id': '648719015',
|
|
143
144
|
'ext': 'mp4',
|
|
144
145
|
'title': 'Seductive Indian beauty strips down and fingers her pink pussy',
|
|
145
|
-
'uploader': '
|
|
146
|
+
'uploader': 'BABES-COM',
|
|
147
|
+
'uploader_id': '/users/babes-com',
|
|
146
148
|
'upload_date': '20130628',
|
|
147
149
|
'timestamp': 1372447216,
|
|
148
150
|
'duration': 361,
|
|
149
151
|
'view_count': int,
|
|
150
152
|
'like_count': int,
|
|
151
|
-
'dislike_count': int,
|
|
152
153
|
'comment_count': int,
|
|
153
154
|
'age_limit': 18,
|
|
154
155
|
'tags': list,
|
|
155
156
|
'categories': list,
|
|
156
157
|
'cast': list,
|
|
158
|
+
'thumbnail': r're:https?://.+',
|
|
157
159
|
},
|
|
158
160
|
}, {
|
|
159
161
|
# non-ASCII title
|
|
@@ -480,13 +482,6 @@ class PornHubIE(PornHubBaseIE):
|
|
|
480
482
|
comment_count = self._extract_count(
|
|
481
483
|
r'All Comments\s*<span>\(([\d,.]+)\)', webpage, 'comment')
|
|
482
484
|
|
|
483
|
-
def extract_list(meta_key):
|
|
484
|
-
div = self._search_regex(
|
|
485
|
-
rf'(?s)<div[^>]+\bclass=["\'].*?\b{meta_key}Wrapper[^>]*>(.+?)</div>',
|
|
486
|
-
webpage, meta_key, default=None)
|
|
487
|
-
if div:
|
|
488
|
-
return [clean_html(x).strip() for x in re.findall(r'(?s)<a[^>]+\bhref=[^>]+>.+?</a>', div)]
|
|
489
|
-
|
|
490
485
|
info = self._search_json_ld(webpage, video_id, default={})
|
|
491
486
|
# description provided in JSON-LD is irrelevant
|
|
492
487
|
info['description'] = None
|
|
@@ -505,9 +500,11 @@ class PornHubIE(PornHubBaseIE):
|
|
|
505
500
|
'comment_count': comment_count,
|
|
506
501
|
'formats': formats,
|
|
507
502
|
'age_limit': 18,
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
503
|
+
**traverse_obj(webpage, {
|
|
504
|
+
'tags': ({find_elements(attr='data-label', value='tag')}, ..., {clean_html}),
|
|
505
|
+
'categories': ({find_elements(attr='data-label', value='category')}, ..., {clean_html}),
|
|
506
|
+
'cast': ({find_elements(attr='data-label', value='pornstar')}, ..., {clean_html}),
|
|
507
|
+
}),
|
|
511
508
|
'subtitles': subtitles,
|
|
512
509
|
}, info)
|
|
513
510
|
|
yt_dlp/extractor/telecinco.py
CHANGED
|
@@ -6,20 +6,21 @@ from ..networking.exceptions import HTTPError
|
|
|
6
6
|
from ..utils import (
|
|
7
7
|
ExtractorError,
|
|
8
8
|
clean_html,
|
|
9
|
+
extract_attributes,
|
|
9
10
|
int_or_none,
|
|
10
11
|
join_nonempty,
|
|
11
12
|
str_or_none,
|
|
12
|
-
traverse_obj,
|
|
13
13
|
update_url,
|
|
14
14
|
url_or_none,
|
|
15
15
|
)
|
|
16
|
+
from ..utils.traversal import traverse_obj
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
class TelecincoBaseIE(InfoExtractor):
|
|
19
20
|
def _parse_content(self, content, url):
|
|
20
|
-
video_id = content['dataMediaId']
|
|
21
|
+
video_id = content['dataMediaId'][1]
|
|
21
22
|
config = self._download_json(
|
|
22
|
-
content['dataConfig'], video_id, 'Downloading config JSON')
|
|
23
|
+
content['dataConfig'][1], video_id, 'Downloading config JSON')
|
|
23
24
|
services = config['services']
|
|
24
25
|
caronte = self._download_json(services['caronte'], video_id)
|
|
25
26
|
if traverse_obj(caronte, ('dls', 0, 'drm', {bool})):
|
|
@@ -57,9 +58,9 @@ class TelecincoBaseIE(InfoExtractor):
|
|
|
57
58
|
'id': video_id,
|
|
58
59
|
'title': traverse_obj(config, ('info', 'title', {str})),
|
|
59
60
|
'formats': formats,
|
|
60
|
-
'thumbnail': (traverse_obj(content, ('dataPoster', {url_or_none}))
|
|
61
|
+
'thumbnail': (traverse_obj(content, ('dataPoster', 1, {url_or_none}))
|
|
61
62
|
or traverse_obj(config, 'poster', 'imageUrl', expected_type=url_or_none)),
|
|
62
|
-
'duration': traverse_obj(content, ('dataDuration', {int_or_none})),
|
|
63
|
+
'duration': traverse_obj(content, ('dataDuration', 1, {int_or_none})),
|
|
63
64
|
'http_headers': headers,
|
|
64
65
|
}
|
|
65
66
|
|
|
@@ -137,30 +138,45 @@ class TelecincoIE(TelecincoBaseIE):
|
|
|
137
138
|
'url': 'http://www.cuatro.com/chesterinlove/a-carta/chester-chester_in_love-chester_edu_2_2331030022.html',
|
|
138
139
|
'only_matching': True,
|
|
139
140
|
}]
|
|
141
|
+
_ASTRO_ISLAND_RE = re.compile(r'<astro-island\b[^>]+>')
|
|
140
142
|
|
|
141
143
|
def _real_extract(self, url):
|
|
142
144
|
display_id = self._match_id(url)
|
|
143
145
|
webpage = self._download_webpage(url, display_id, impersonate=True)
|
|
144
|
-
article = self._search_json(
|
|
145
|
-
r'window\.\$REACTBASE_STATE\.article(?:_multisite)?\s*=',
|
|
146
|
-
webpage, 'article', display_id)['article']
|
|
147
|
-
description = traverse_obj(article, ('leadParagraph', {clean_html}, filter))
|
|
148
146
|
|
|
149
|
-
|
|
147
|
+
props_list = traverse_obj(webpage, (
|
|
148
|
+
{self._ASTRO_ISLAND_RE.findall}, ...,
|
|
149
|
+
{extract_attributes}, 'props', {json.loads}))
|
|
150
|
+
|
|
151
|
+
description = traverse_obj(props_list, (..., 'leadParagraph', 1, {clean_html}, any, filter))
|
|
152
|
+
main_content = traverse_obj(props_list, (..., ('content', ('articleData', 1, 'opening')), 1, {dict}, any))
|
|
153
|
+
|
|
154
|
+
if traverse_obj(props_list, (..., 'editorialType', 1, {str}, any)) != 'VID': # e.g. 'ART'
|
|
150
155
|
entries = []
|
|
151
156
|
|
|
152
|
-
for p in traverse_obj(
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
if
|
|
157
|
+
for p in traverse_obj(props_list, (..., 'articleData', 1, ('opening', ('body', 1, ...)), 1, {dict})):
|
|
158
|
+
type_ = traverse_obj(p, ('type', 1, {str}))
|
|
159
|
+
content = traverse_obj(p, ('content', 1, {str} if type_ == 'paragraph' else {dict}))
|
|
160
|
+
if not content:
|
|
161
|
+
continue
|
|
162
|
+
if type_ == 'paragraph':
|
|
156
163
|
description = join_nonempty(description, content, delim='')
|
|
157
|
-
elif type_ == 'video'
|
|
164
|
+
elif type_ == 'video':
|
|
158
165
|
entries.append(self._parse_content(content, url))
|
|
166
|
+
else:
|
|
167
|
+
self.report_warning(
|
|
168
|
+
f'Skipping unsupported content type "{type_}"', display_id, only_once=True)
|
|
159
169
|
|
|
160
170
|
return self.playlist_result(
|
|
161
|
-
entries,
|
|
162
|
-
traverse_obj(
|
|
171
|
+
entries,
|
|
172
|
+
traverse_obj(props_list, (..., 'id', 1, {int}, {str_or_none}, any)) or display_id,
|
|
173
|
+
traverse_obj(main_content, ('dataTitle', 1, {str})),
|
|
174
|
+
clean_html(description))
|
|
163
175
|
|
|
164
|
-
|
|
176
|
+
if not main_content:
|
|
177
|
+
raise ExtractorError('Unable to extract main content from webpage')
|
|
178
|
+
|
|
179
|
+
info = self._parse_content(main_content, url)
|
|
165
180
|
info['description'] = description
|
|
181
|
+
|
|
166
182
|
return info
|
yt_dlp/version.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Autogenerated by devscripts/update-version.py
|
|
2
2
|
|
|
3
|
-
__version__ = '2025.12.
|
|
3
|
+
__version__ = '2025.12.12.233036'
|
|
4
4
|
|
|
5
|
-
RELEASE_GIT_HEAD = '
|
|
5
|
+
RELEASE_GIT_HEAD = 'b6f24745bfb89ec0eaaa181a68203c2e81e58802'
|
|
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 = '2025.12.
|
|
15
|
+
_pkg_version = '2025.12.12.233036dev'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: yt-dlp
|
|
3
|
-
Version: 2025.12.
|
|
3
|
+
Version: 2025.12.12.233036.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=cEALlBE-OokSe0xGY5pHsLozTJpw-yR9pSVBCNp2SqI,100388
|
|
|
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=YpXXmdnDZPr_-nFkSKPLv-mE36TxCX2fWPQseoi37eg,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
|
|
@@ -89,7 +89,7 @@ yt_dlp/extractor/aparat.py,sha256=GKbLlNAaZum69iendsx8O0Tk4iAIIWGagphg7yNci-k,33
|
|
|
89
89
|
yt_dlp/extractor/appleconnect.py,sha256=GxHmmMTqJshlUwK6XWDdKjmhzCmTrKwR41ugo3zwIuY,4286
|
|
90
90
|
yt_dlp/extractor/applepodcasts.py,sha256=SQ7LN6cWtc5yBltAQJNaPf-e0ud3p4pQBG36xNyOSpc,3363
|
|
91
91
|
yt_dlp/extractor/appletrailers.py,sha256=KgsL8wSKnoHIk0uotFx2WXhMuq8_gyQUdGWkse9Hvlw,10147
|
|
92
|
-
yt_dlp/extractor/archiveorg.py,sha256=
|
|
92
|
+
yt_dlp/extractor/archiveorg.py,sha256=dm3eCv-k5qCdM1iGq3UdmuRQBYQCd9vzC4moZo_DrbE,58264
|
|
93
93
|
yt_dlp/extractor/arcpublishing.py,sha256=z9MAcLu6r72fPeVaKKCPN0a70rzI6iSGB4gPJ2HZVeI,8170
|
|
94
94
|
yt_dlp/extractor/ard.py,sha256=Q0v-Dca1QMgboPVrP0IBJTs7y9bT5QXaJY2q3LJSteU,34242
|
|
95
95
|
yt_dlp/extractor/arnes.py,sha256=ndBhmlCxtLDBzXE6wKuMry3vtNGkVywmg5scXfqmTuk,3497
|
|
@@ -689,7 +689,7 @@ yt_dlp/extractor/popcorntimes.py,sha256=IiZFqRqTnWInu3uO0xTtYTvM9z9il1Pv3I4ZP7ik
|
|
|
689
689
|
yt_dlp/extractor/popcorntv.py,sha256=KL_ld6fHQtrlO_sBy4U6pCkRVkBS5UKtmLCpuBwHJIk,2631
|
|
690
690
|
yt_dlp/extractor/pornbox.py,sha256=ZXOOZNOPSpwV-G9u2P0gSY3uiTLGsvcNdpmd4oaf6o8,4447
|
|
691
691
|
yt_dlp/extractor/pornflip.py,sha256=KHwqkqwFizVo1O_yb2aNwqU-uiAMTVLWKM7vlxbJgs4,3474
|
|
692
|
-
yt_dlp/extractor/pornhub.py,sha256=
|
|
692
|
+
yt_dlp/extractor/pornhub.py,sha256=w076D8MWcN_zupVLVXJYvKo8chOjoYyZxHah_7uOp6M,31381
|
|
693
693
|
yt_dlp/extractor/pornotube.py,sha256=fkP_0h8qUsgzwti5n6-uAPuHOfdg_2bR4BBcx11_thQ,3098
|
|
694
694
|
yt_dlp/extractor/pornovoisines.py,sha256=4YdPaap3C9KYqt3MyLooJF4G67gIniA2Xqn6ciIw3FA,3916
|
|
695
695
|
yt_dlp/extractor/pornoxo.py,sha256=WLA5dp47hREQNTxD7wfOCzU_hbzHU9ZtyrXEQajpehg,1905
|
|
@@ -861,7 +861,7 @@ yt_dlp/extractor/tele13.py,sha256=qtTKlUExoVtfetaDbiT9g5Q7klGs0qXgUW4RgGUvPp4,32
|
|
|
861
861
|
yt_dlp/extractor/tele5.py,sha256=ZhYDGTqS8TkiUV1-z3qOwxOX_atHEin_NwtezlZ9BCg,3012
|
|
862
862
|
yt_dlp/extractor/telebruxelles.py,sha256=zio3F4tgcRYJFdC3nXDaiCF1VxySMOWf1XJTjgGwuyA,2816
|
|
863
863
|
yt_dlp/extractor/telecaribe.py,sha256=eFZdDHXdg2coKqI6h4DBpbu681hRmwBa_HjltmANptY,3118
|
|
864
|
-
yt_dlp/extractor/telecinco.py,sha256=
|
|
864
|
+
yt_dlp/extractor/telecinco.py,sha256=ZI59_ohTRmLb2qL_niNYDyb1sZSjbZXVetVydmhWXIk,7822
|
|
865
865
|
yt_dlp/extractor/telegraaf.py,sha256=5zDBAos21WtRNOxB2VGcWbGBNmh21KZ_PHwyuDzd3fc,3001
|
|
866
866
|
yt_dlp/extractor/telegram.py,sha256=-5SvQ4C2URbpa24VvdTQM9OcxRLRenmv3iISp4J12hg,5086
|
|
867
867
|
yt_dlp/extractor/telemb.py,sha256=d8suz72OIpAiaulwMy1353ctIXfmOI6mSjba7d1rm4s,2894
|
|
@@ -1123,13 +1123,13 @@ yt_dlp/utils/progress.py,sha256=t9kVvJ0oWuEqRzo9fdFbIhHUBtO_8mg348QwZ1faqLo,3261
|
|
|
1123
1123
|
yt_dlp/utils/traversal.py,sha256=64E3RcZ56iSX50RI_HbKdDNftkETMLBaEPX791_b7yQ,18265
|
|
1124
1124
|
yt_dlp/utils/jslib/__init__.py,sha256=CbdJiRA7Eh5PnjF2V4lDTcg0J0XjBMaaq0H4pCfq9Tk,87
|
|
1125
1125
|
yt_dlp/utils/jslib/devalue.py,sha256=7DCGK_zUN0ZeV5hwPT06zaRMUxX_hyUyFWqs79rxw24,5621
|
|
1126
|
-
yt_dlp-2025.12.
|
|
1127
|
-
yt_dlp-2025.12.
|
|
1128
|
-
yt_dlp-2025.12.
|
|
1129
|
-
yt_dlp-2025.12.
|
|
1130
|
-
yt_dlp-2025.12.
|
|
1131
|
-
yt_dlp-2025.12.
|
|
1132
|
-
yt_dlp-2025.12.
|
|
1133
|
-
yt_dlp-2025.12.
|
|
1134
|
-
yt_dlp-2025.12.
|
|
1135
|
-
yt_dlp-2025.12.
|
|
1126
|
+
yt_dlp-2025.12.12.233036.dev0.data/data/share/bash-completion/completions/yt-dlp,sha256=b0pb9GLseKD27CjnLE6LlhVxhfmQjmyqV6r_CRbd6ko,5989
|
|
1127
|
+
yt_dlp-2025.12.12.233036.dev0.data/data/share/doc/yt_dlp/README.txt,sha256=wmrt5znP_AlvkrvysScvz2QYyjT2kZ1y2RRmx0Qvy_U,164886
|
|
1128
|
+
yt_dlp-2025.12.12.233036.dev0.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=v2WQvWvk4qKpp2-97z2ULb5Msj5dgzU6nMkS-FwSmbM,51488
|
|
1129
|
+
yt_dlp-2025.12.12.233036.dev0.data/data/share/man/man1/yt-dlp.1,sha256=9Ll8XNcxtpdL-FmhXtOrDy3OuGmOCatIKNDzmwxzqxo,159421
|
|
1130
|
+
yt_dlp-2025.12.12.233036.dev0.data/data/share/zsh/site-functions/_yt-dlp,sha256=pNhu8tT4ZKrksLRI2mXLqarzGGhnOlm_hkCBVhSxLzg,5985
|
|
1131
|
+
yt_dlp-2025.12.12.233036.dev0.dist-info/METADATA,sha256=_sU604v_APZ75K6fHKTArtQc8cjX8IqwW8YgGC1cZVU,180282
|
|
1132
|
+
yt_dlp-2025.12.12.233036.dev0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
1133
|
+
yt_dlp-2025.12.12.233036.dev0.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
|
|
1134
|
+
yt_dlp-2025.12.12.233036.dev0.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
|
|
1135
|
+
yt_dlp-2025.12.12.233036.dev0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yt_dlp-2025.12.8.550.dev0.data → yt_dlp-2025.12.12.233036.dev0.data}/data/share/man/man1/yt-dlp.1
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yt_dlp-2025.12.8.550.dev0.dist-info → yt_dlp-2025.12.12.233036.dev0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{yt_dlp-2025.12.8.550.dev0.dist-info → yt_dlp-2025.12.12.233036.dev0.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|