yt-dlp 2026.1.2.233036.dev0__py3-none-any.whl → 2026.1.3.233044.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/YoutubeDL.py +1 -1
- yt_dlp/extractor/bigo.py +2 -2
- yt_dlp/extractor/common.py +1 -0
- yt_dlp/extractor/tiktok.py +18 -0
- yt_dlp/extractor/tumblr.py +14 -0
- yt_dlp/extractor/twitch.py +4 -0
- yt_dlp/extractor/zoom.py +6 -2
- yt_dlp/utils/_utils.py +1 -1
- yt_dlp/version.py +3 -3
- {yt_dlp-2026.1.2.233036.dev0.data → yt_dlp-2026.1.3.233044.dev0.data}/data/share/doc/yt_dlp/README.txt +2 -0
- {yt_dlp-2026.1.2.233036.dev0.data → yt_dlp-2026.1.3.233044.dev0.data}/data/share/man/man1/yt-dlp.1 +3 -0
- {yt_dlp-2026.1.2.233036.dev0.dist-info → yt_dlp-2026.1.3.233044.dev0.dist-info}/METADATA +2 -1
- {yt_dlp-2026.1.2.233036.dev0.dist-info → yt_dlp-2026.1.3.233044.dev0.dist-info}/RECORD +19 -19
- {yt_dlp-2026.1.2.233036.dev0.data → yt_dlp-2026.1.3.233044.dev0.data}/data/share/bash-completion/completions/yt-dlp +0 -0
- {yt_dlp-2026.1.2.233036.dev0.data → yt_dlp-2026.1.3.233044.dev0.data}/data/share/fish/vendor_completions.d/yt-dlp.fish +0 -0
- {yt_dlp-2026.1.2.233036.dev0.data → yt_dlp-2026.1.3.233044.dev0.data}/data/share/zsh/site-functions/_yt-dlp +0 -0
- {yt_dlp-2026.1.2.233036.dev0.dist-info → yt_dlp-2026.1.3.233044.dev0.dist-info}/WHEEL +0 -0
- {yt_dlp-2026.1.2.233036.dev0.dist-info → yt_dlp-2026.1.3.233044.dev0.dist-info}/entry_points.txt +0 -0
- {yt_dlp-2026.1.2.233036.dev0.dist-info → yt_dlp-2026.1.3.233044.dev0.dist-info}/licenses/LICENSE +0 -0
yt_dlp/YoutubeDL.py
CHANGED
|
@@ -595,7 +595,7 @@ class YoutubeDL:
|
|
|
595
595
|
'width', 'height', 'asr', 'audio_channels', 'fps',
|
|
596
596
|
'tbr', 'abr', 'vbr', 'filesize', 'filesize_approx',
|
|
597
597
|
'timestamp', 'release_timestamp', 'available_at',
|
|
598
|
-
'duration', 'view_count', 'like_count', 'dislike_count', 'repost_count',
|
|
598
|
+
'duration', 'view_count', 'like_count', 'dislike_count', 'repost_count', 'save_count',
|
|
599
599
|
'average_rating', 'comment_count', 'age_limit',
|
|
600
600
|
'start_time', 'end_time',
|
|
601
601
|
'chapter_number', 'season_number', 'episode_number',
|
yt_dlp/extractor/bigo.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from .common import InfoExtractor
|
|
2
|
-
from ..utils import ExtractorError, urlencode_postdata
|
|
2
|
+
from ..utils import ExtractorError, UserNotLive, urlencode_postdata
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
class BigoIE(InfoExtractor):
|
|
@@ -40,7 +40,7 @@ class BigoIE(InfoExtractor):
|
|
|
40
40
|
info = info_raw.get('data') or {}
|
|
41
41
|
|
|
42
42
|
if not info.get('alive'):
|
|
43
|
-
raise
|
|
43
|
+
raise UserNotLive(video_id=user_id)
|
|
44
44
|
|
|
45
45
|
formats, subs = self._extract_m3u8_formats_and_subtitles(
|
|
46
46
|
info.get('hls_src'), user_id, 'mp4', 'm3u8')
|
yt_dlp/extractor/common.py
CHANGED
|
@@ -348,6 +348,7 @@ class InfoExtractor:
|
|
|
348
348
|
duration: Length of the video in seconds, as an integer or float.
|
|
349
349
|
view_count: How many users have watched the video on the platform.
|
|
350
350
|
concurrent_view_count: How many users are currently watching the video on the platform.
|
|
351
|
+
save_count: Number of times the video has been saved or bookmarked
|
|
351
352
|
like_count: Number of positive ratings of the video
|
|
352
353
|
dislike_count: Number of negative ratings of the video
|
|
353
354
|
repost_count: Number of reposts of the video
|
yt_dlp/extractor/tiktok.py
CHANGED
|
@@ -454,6 +454,7 @@ class TikTokBaseIE(InfoExtractor):
|
|
|
454
454
|
'like_count': 'digg_count',
|
|
455
455
|
'repost_count': 'share_count',
|
|
456
456
|
'comment_count': 'comment_count',
|
|
457
|
+
'save_count': 'collect_count',
|
|
457
458
|
}, expected_type=int_or_none),
|
|
458
459
|
**author_info,
|
|
459
460
|
'channel_url': format_field(author_info, 'channel_id', self._UPLOADER_URL_FORMAT, default=None),
|
|
@@ -607,6 +608,7 @@ class TikTokBaseIE(InfoExtractor):
|
|
|
607
608
|
'like_count': 'diggCount',
|
|
608
609
|
'repost_count': 'shareCount',
|
|
609
610
|
'comment_count': 'commentCount',
|
|
611
|
+
'save_count': 'collectCount',
|
|
610
612
|
}), expected_type=int_or_none),
|
|
611
613
|
'thumbnails': [
|
|
612
614
|
{
|
|
@@ -646,6 +648,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
646
648
|
'like_count': int,
|
|
647
649
|
'repost_count': int,
|
|
648
650
|
'comment_count': int,
|
|
651
|
+
'save_count': int,
|
|
649
652
|
'artist': 'Ysrbeats',
|
|
650
653
|
'album': 'Lehanga',
|
|
651
654
|
'track': 'Lehanga',
|
|
@@ -675,6 +678,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
675
678
|
'like_count': int,
|
|
676
679
|
'repost_count': int,
|
|
677
680
|
'comment_count': int,
|
|
681
|
+
'save_count': int,
|
|
678
682
|
'artists': ['Evan Todd', 'Jessica Keenan Wynn', 'Alice Lee', 'Barrett Wilbert Weed', 'Jon Eidson'],
|
|
679
683
|
'track': 'Big Fun',
|
|
680
684
|
},
|
|
@@ -702,6 +706,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
702
706
|
'like_count': int,
|
|
703
707
|
'repost_count': int,
|
|
704
708
|
'comment_count': int,
|
|
709
|
+
'save_count': int,
|
|
705
710
|
},
|
|
706
711
|
}, {
|
|
707
712
|
# Sponsored video, only available with feed workaround
|
|
@@ -725,6 +730,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
725
730
|
'like_count': int,
|
|
726
731
|
'repost_count': int,
|
|
727
732
|
'comment_count': int,
|
|
733
|
+
'save_count': int,
|
|
728
734
|
},
|
|
729
735
|
'skip': 'This video is unavailable',
|
|
730
736
|
}, {
|
|
@@ -751,6 +757,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
751
757
|
'like_count': int,
|
|
752
758
|
'repost_count': int,
|
|
753
759
|
'comment_count': int,
|
|
760
|
+
'save_count': int,
|
|
754
761
|
},
|
|
755
762
|
}, {
|
|
756
763
|
# hydration JSON is sent in a <script> element
|
|
@@ -773,6 +780,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
773
780
|
'like_count': int,
|
|
774
781
|
'repost_count': int,
|
|
775
782
|
'comment_count': int,
|
|
783
|
+
'save_count': int,
|
|
776
784
|
},
|
|
777
785
|
'skip': 'This video is unavailable',
|
|
778
786
|
}, {
|
|
@@ -798,6 +806,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
798
806
|
'like_count': int,
|
|
799
807
|
'repost_count': int,
|
|
800
808
|
'comment_count': int,
|
|
809
|
+
'save_count': int,
|
|
801
810
|
'thumbnail': r're:^https://.+\.(?:webp|jpe?g)',
|
|
802
811
|
},
|
|
803
812
|
}, {
|
|
@@ -824,6 +833,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
824
833
|
'like_count': int,
|
|
825
834
|
'repost_count': int,
|
|
826
835
|
'comment_count': int,
|
|
836
|
+
'save_count': int,
|
|
827
837
|
'thumbnail': r're:^https://.+',
|
|
828
838
|
'thumbnails': 'count:3',
|
|
829
839
|
},
|
|
@@ -851,6 +861,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
851
861
|
'like_count': int,
|
|
852
862
|
'repost_count': int,
|
|
853
863
|
'comment_count': int,
|
|
864
|
+
'save_count': int,
|
|
854
865
|
'thumbnail': r're:^https://.+\.webp',
|
|
855
866
|
},
|
|
856
867
|
'skip': 'Unavailable via feed API, only audio available via web',
|
|
@@ -879,6 +890,7 @@ class TikTokIE(TikTokBaseIE):
|
|
|
879
890
|
'like_count': int,
|
|
880
891
|
'comment_count': int,
|
|
881
892
|
'repost_count': int,
|
|
893
|
+
'save_count': int,
|
|
882
894
|
'thumbnail': r're:^https://.+\.(?:webp|jpe?g)',
|
|
883
895
|
},
|
|
884
896
|
}, {
|
|
@@ -1288,6 +1300,7 @@ class DouyinIE(TikTokBaseIE):
|
|
|
1288
1300
|
'like_count': int,
|
|
1289
1301
|
'repost_count': int,
|
|
1290
1302
|
'comment_count': int,
|
|
1303
|
+
'save_count': int,
|
|
1291
1304
|
'thumbnail': r're:https?://.+\.jpe?g',
|
|
1292
1305
|
},
|
|
1293
1306
|
}, {
|
|
@@ -1312,6 +1325,7 @@ class DouyinIE(TikTokBaseIE):
|
|
|
1312
1325
|
'like_count': int,
|
|
1313
1326
|
'repost_count': int,
|
|
1314
1327
|
'comment_count': int,
|
|
1328
|
+
'save_count': int,
|
|
1315
1329
|
'thumbnail': r're:https?://.+\.jpe?g',
|
|
1316
1330
|
},
|
|
1317
1331
|
}, {
|
|
@@ -1336,6 +1350,7 @@ class DouyinIE(TikTokBaseIE):
|
|
|
1336
1350
|
'like_count': int,
|
|
1337
1351
|
'repost_count': int,
|
|
1338
1352
|
'comment_count': int,
|
|
1353
|
+
'save_count': int,
|
|
1339
1354
|
'thumbnail': r're:https?://.+\.jpe?g',
|
|
1340
1355
|
},
|
|
1341
1356
|
}, {
|
|
@@ -1353,6 +1368,7 @@ class DouyinIE(TikTokBaseIE):
|
|
|
1353
1368
|
'like_count': int,
|
|
1354
1369
|
'repost_count': int,
|
|
1355
1370
|
'comment_count': int,
|
|
1371
|
+
'save_count': int,
|
|
1356
1372
|
},
|
|
1357
1373
|
'skip': 'No longer available',
|
|
1358
1374
|
}, {
|
|
@@ -1377,6 +1393,7 @@ class DouyinIE(TikTokBaseIE):
|
|
|
1377
1393
|
'like_count': int,
|
|
1378
1394
|
'repost_count': int,
|
|
1379
1395
|
'comment_count': int,
|
|
1396
|
+
'save_count': int,
|
|
1380
1397
|
'thumbnail': r're:https?://.+\.jpe?g',
|
|
1381
1398
|
},
|
|
1382
1399
|
}]
|
|
@@ -1437,6 +1454,7 @@ class TikTokVMIE(InfoExtractor):
|
|
|
1437
1454
|
'view_count': int,
|
|
1438
1455
|
'like_count': int,
|
|
1439
1456
|
'comment_count': int,
|
|
1457
|
+
'save_count': int,
|
|
1440
1458
|
'thumbnail': r're:https://.+\.webp.*',
|
|
1441
1459
|
'uploader_url': 'https://www.tiktok.com/@MS4wLjABAAAAdZ_NcPPgMneaGrW0hN8O_J_bwLshwNNERRF5DxOw2HKIzk0kdlLrR8RkVl1ksrMO',
|
|
1442
1460
|
'duration': 29,
|
yt_dlp/extractor/tumblr.py
CHANGED
|
@@ -20,6 +20,8 @@ class TumblrIE(InfoExtractor):
|
|
|
20
20
|
'id': '54196191430',
|
|
21
21
|
'ext': 'mp4',
|
|
22
22
|
'title': 'md5:dfac39636969fe6bf1caa2d50405f069',
|
|
23
|
+
'timestamp': 1372531260,
|
|
24
|
+
'upload_date': '20130629',
|
|
23
25
|
'description': 'md5:390ab77358960235b6937ab3b8528956',
|
|
24
26
|
'uploader_id': 'tatianamaslanydaily',
|
|
25
27
|
'uploader_url': 'https://tatianamaslanydaily.tumblr.com/',
|
|
@@ -39,6 +41,8 @@ class TumblrIE(InfoExtractor):
|
|
|
39
41
|
'ext': 'mp4',
|
|
40
42
|
'title': 'Mona\xa0“talking” in\xa0“english”',
|
|
41
43
|
'description': 'md5:082a3a621530cb786ad2b7592a6d9e2c',
|
|
44
|
+
'timestamp': 1597865276,
|
|
45
|
+
'upload_date': '20200819',
|
|
42
46
|
'uploader_id': 'maskofthedragon',
|
|
43
47
|
'uploader_url': 'https://maskofthedragon.tumblr.com/',
|
|
44
48
|
'thumbnail': r're:^https?://.*\.jpg',
|
|
@@ -76,6 +80,8 @@ class TumblrIE(InfoExtractor):
|
|
|
76
80
|
'id': '159704441298',
|
|
77
81
|
'ext': 'mp4',
|
|
78
82
|
'title': 'md5:ba79365861101f4911452728d2950561',
|
|
83
|
+
'timestamp': 1492489550,
|
|
84
|
+
'upload_date': '20170418',
|
|
79
85
|
'description': 'md5:773738196cea76b6996ec71e285bdabc',
|
|
80
86
|
'uploader_id': 'jujanon',
|
|
81
87
|
'uploader_url': 'https://jujanon.tumblr.com/',
|
|
@@ -93,6 +99,8 @@ class TumblrIE(InfoExtractor):
|
|
|
93
99
|
'id': '180294460076',
|
|
94
100
|
'ext': 'mp4',
|
|
95
101
|
'title': 'duality of bird',
|
|
102
|
+
'timestamp': 1542651819,
|
|
103
|
+
'upload_date': '20181119',
|
|
96
104
|
'description': 'duality of bird',
|
|
97
105
|
'uploader_id': 'todaysbird',
|
|
98
106
|
'uploader_url': 'https://todaysbird.tumblr.com/',
|
|
@@ -238,6 +246,8 @@ class TumblrIE(InfoExtractor):
|
|
|
238
246
|
'info_dict': {
|
|
239
247
|
'id': '730460905855467520',
|
|
240
248
|
'uploader_id': 'felixcosm',
|
|
249
|
+
'upload_date': '20231006',
|
|
250
|
+
'timestamp': 1696621805,
|
|
241
251
|
'repost_count': int,
|
|
242
252
|
'tags': 'count:15',
|
|
243
253
|
'description': 'md5:2eb3482a3c6987280cbefb6839068f32',
|
|
@@ -327,6 +337,8 @@ class TumblrIE(InfoExtractor):
|
|
|
327
337
|
'url': 'https://www.tumblr.com/anyaboz/765332564457209856/my-music-video-for-selkie-by-nobodys-wolf-child',
|
|
328
338
|
'info_dict': {
|
|
329
339
|
'id': '765332564457209856',
|
|
340
|
+
'timestamp': 1729878010,
|
|
341
|
+
'upload_date': '20241025',
|
|
330
342
|
'uploader_id': 'anyaboz',
|
|
331
343
|
'repost_count': int,
|
|
332
344
|
'age_limit': 0,
|
|
@@ -445,6 +457,8 @@ class TumblrIE(InfoExtractor):
|
|
|
445
457
|
'uploader_id': uploader_id,
|
|
446
458
|
'uploader_url': f'https://{uploader_id}.tumblr.com/' if uploader_id else None,
|
|
447
459
|
**traverse_obj(post_json, {
|
|
460
|
+
# Try oldest post in reblog chain, fall back to timestamp of the post itself
|
|
461
|
+
'timestamp': ((('trail', 0, 'post'), None), 'timestamp', {int_or_none}, any),
|
|
448
462
|
'like_count': ('like_count', {int_or_none}),
|
|
449
463
|
'repost_count': ('reblog_count', {int_or_none}),
|
|
450
464
|
'tags': ('tags', ..., {str}),
|
yt_dlp/extractor/twitch.py
CHANGED
|
@@ -680,6 +680,10 @@ class TwitchPlaylistBaseIE(TwitchBaseIE):
|
|
|
680
680
|
}],
|
|
681
681
|
f'Downloading {self._NODE_KIND}s GraphQL page {page_num}',
|
|
682
682
|
fatal=False)
|
|
683
|
+
# Avoid extracting random/unrelated entries when channel_name doesn't exist
|
|
684
|
+
# See https://github.com/yt-dlp/yt-dlp/issues/15450
|
|
685
|
+
if traverse_obj(page, (0, 'data', 'user', 'id', {str})) == '':
|
|
686
|
+
raise ExtractorError(f'Channel "{channel_name}" not found', expected=True)
|
|
683
687
|
if not page:
|
|
684
688
|
break
|
|
685
689
|
edges = try_get(
|
yt_dlp/extractor/zoom.py
CHANGED
|
@@ -4,13 +4,15 @@ from ..utils import (
|
|
|
4
4
|
int_or_none,
|
|
5
5
|
js_to_json,
|
|
6
6
|
parse_filesize,
|
|
7
|
+
parse_qs,
|
|
7
8
|
parse_resolution,
|
|
8
9
|
str_or_none,
|
|
9
|
-
|
|
10
|
+
update_url_query,
|
|
10
11
|
url_basename,
|
|
11
12
|
urlencode_postdata,
|
|
12
13
|
urljoin,
|
|
13
14
|
)
|
|
15
|
+
from ..utils.traversal import traverse_obj
|
|
14
16
|
|
|
15
17
|
|
|
16
18
|
class ZoomIE(InfoExtractor):
|
|
@@ -87,6 +89,7 @@ class ZoomIE(InfoExtractor):
|
|
|
87
89
|
def _real_extract(self, url):
|
|
88
90
|
base_url, url_type, video_id = self._match_valid_url(url).group('base_url', 'type', 'id')
|
|
89
91
|
query = {}
|
|
92
|
+
start_params = traverse_obj(url, {'startTime': ({parse_qs}, 'startTime', -1)})
|
|
90
93
|
|
|
91
94
|
if url_type == 'share':
|
|
92
95
|
webpage = self._get_real_webpage(url, base_url, video_id, 'share')
|
|
@@ -94,7 +97,7 @@ class ZoomIE(InfoExtractor):
|
|
|
94
97
|
redirect_path = self._download_json(
|
|
95
98
|
f'{base_url}nws/recording/1.0/play/share-info/{meeting_id}',
|
|
96
99
|
video_id, note='Downloading share info JSON')['result']['redirectUrl']
|
|
97
|
-
url = urljoin(base_url, redirect_path)
|
|
100
|
+
url = update_url_query(urljoin(base_url, redirect_path), start_params)
|
|
98
101
|
query['continueMode'] = 'true'
|
|
99
102
|
|
|
100
103
|
webpage = self._get_real_webpage(url, base_url, video_id, 'play')
|
|
@@ -103,6 +106,7 @@ class ZoomIE(InfoExtractor):
|
|
|
103
106
|
# When things go wrong, file_id can be empty string
|
|
104
107
|
raise ExtractorError('Unable to extract file ID')
|
|
105
108
|
|
|
109
|
+
query.update(start_params)
|
|
106
110
|
data = self._download_json(
|
|
107
111
|
f'{base_url}nws/recording/1.0/play/info/{file_id}', video_id, query=query,
|
|
108
112
|
note='Downloading play info JSON')['result']
|
yt_dlp/utils/_utils.py
CHANGED
|
@@ -2830,7 +2830,7 @@ def js_to_json(code, vars={}, *, strict=False):
|
|
|
2830
2830
|
{STRING_RE}|
|
|
2831
2831
|
{COMMENT_RE}|,(?={SKIP_RE}[\]}}])|
|
|
2832
2832
|
void\s0|(?:(?<![0-9])[eE]|[a-df-zA-DF-Z_$])[.a-zA-Z_$0-9]*|
|
|
2833
|
-
\b(?:0[xX][0-9a-fA-F]+|0+[0-7]+)(?:{SKIP_RE}:)?|
|
|
2833
|
+
\b(?:0[xX][0-9a-fA-F]+|(?<!\.)0+[0-7]+)(?:{SKIP_RE}:)?|
|
|
2834
2834
|
[0-9]+(?={SKIP_RE}:)|
|
|
2835
2835
|
!+
|
|
2836
2836
|
''', fix_kv, code)
|
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.03.233044'
|
|
4
4
|
|
|
5
|
-
RELEASE_GIT_HEAD = '
|
|
5
|
+
RELEASE_GIT_HEAD = '9c393e3f6220d34d534bef7d9d345782003b58ad'
|
|
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.03.233044dev'
|
|
@@ -1563,6 +1563,8 @@ The available fields are:
|
|
|
1563
1563
|
- comment_count (numeric): Number of comments on the video (For some
|
|
1564
1564
|
extractors, comments are only downloaded at the end, and so this
|
|
1565
1565
|
field cannot be used)
|
|
1566
|
+
- save_count (numeric): Number of times the video has been saved or
|
|
1567
|
+
bookmarked
|
|
1566
1568
|
- age_limit (numeric): Age restriction for the video (years)
|
|
1567
1569
|
- live_status (string): One of "not_live", "is_live", "is_upcoming",
|
|
1568
1570
|
"was_live", "post_live" (was live, but VOD is not yet processed)
|
{yt_dlp-2026.1.2.233036.dev0.data → yt_dlp-2026.1.3.233044.dev0.data}/data/share/man/man1/yt-dlp.1
RENAMED
|
@@ -1650,6 +1650,9 @@ scale used depends on the webpage
|
|
|
1650
1650
|
some extractors, comments are only downloaded at the end, and so this
|
|
1651
1651
|
field cannot be used)
|
|
1652
1652
|
.IP \[bu] 2
|
|
1653
|
+
\f[V]save_count\f[R] (numeric): Number of times the video has been saved
|
|
1654
|
+
or bookmarked
|
|
1655
|
+
.IP \[bu] 2
|
|
1653
1656
|
\f[V]age_limit\f[R] (numeric): Age restriction for the video (years)
|
|
1654
1657
|
.IP \[bu] 2
|
|
1655
1658
|
\f[V]live_status\f[R] (string): One of \[dq]not_live\[dq],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: yt-dlp
|
|
3
|
-
Version: 2026.1.
|
|
3
|
+
Version: 2026.1.3.233044.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
|
|
@@ -1420,6 +1420,7 @@ The available fields are:
|
|
|
1420
1420
|
- `repost_count` (numeric): Number of reposts of the video
|
|
1421
1421
|
- `average_rating` (numeric): Average rating given by users, the scale used depends on the webpage
|
|
1422
1422
|
- `comment_count` (numeric): Number of comments on the video (For some extractors, comments are only downloaded at the end, and so this field cannot be used)
|
|
1423
|
+
- `save_count` (numeric): Number of times the video has been saved or bookmarked
|
|
1423
1424
|
- `age_limit` (numeric): Age restriction for the video (years)
|
|
1424
1425
|
- `live_status` (string): One of "not_live", "is_live", "is_upcoming", "was_live", "post_live" (was live, but VOD is not yet processed)
|
|
1425
1426
|
- `is_live` (boolean): Whether this video is a live stream or a fixed-length video
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
yt_dlp/YoutubeDL.py,sha256=
|
|
1
|
+
yt_dlp/YoutubeDL.py,sha256=nk4plDMtrPHOUodTf6_pD_1JeIW6kXIvod-pQjpZzl8,216649
|
|
2
2
|
yt_dlp/__init__.py,sha256=Nyir0qVukv9-pdfRtHPVm3EDOYDvwa1AXHOIX9oR0ps,47897
|
|
3
3
|
yt_dlp/__main__.py,sha256=DzqMhNY2y89eqs0Hnd4hOhjMfW9OhnhdhJdDH9yizmw,367
|
|
4
4
|
yt_dlp/aes.py,sha256=OU2t7oHbaKSIT-evc75vU58XK20b6wqgJvNlG_fois0,22033
|
|
@@ -11,7 +11,7 @@ yt_dlp/options.py,sha256=72Qipr6jhFUO4gUPTIJsqYeHujnZi1L1GYx1Vn5qtiM,100390
|
|
|
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=UhHdKz3tJ1aVlJSdaFkq9oi1QRb5pq2qS5uX0UnNy-M,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
|
|
@@ -126,7 +126,7 @@ yt_dlp/extractor/bfi.py,sha256=nqsDl9-d7dF1aIdsxy8vYZDrl5ipoQioeubw2RWrRYY,1305
|
|
|
126
126
|
yt_dlp/extractor/bfmtv.py,sha256=pumqV7VruC7dLgk2Z10qqc_5KU3AiZo9HHq4PkTWJDY,6400
|
|
127
127
|
yt_dlp/extractor/bibeltv.py,sha256=cPbk9RrVB5aqD8tY69dpy7x0YZVo-ZUZxT_-60BHTC8,6795
|
|
128
128
|
yt_dlp/extractor/bigflix.py,sha256=ggTZQzEoN996CDgQQnENzCL8L2HBT-RUEkbhEhL8HVg,2187
|
|
129
|
-
yt_dlp/extractor/bigo.py,sha256=
|
|
129
|
+
yt_dlp/extractor/bigo.py,sha256=BpDfwDXygDo1Yw9ID_Mj-odAjNKE5U_PvGaQkEde7X4,2009
|
|
130
130
|
yt_dlp/extractor/bild.py,sha256=xMe3iiiVhzR-yroNWGND02qE1jV-k4Bmffv4h57T70I,2445
|
|
131
131
|
yt_dlp/extractor/bilibili.py,sha256=eLbpt30OVk--vF5cpCvhJ9Oy4s8cloaxUa-Yd_6kMOw,111214
|
|
132
132
|
yt_dlp/extractor/biobiochiletv.py,sha256=NL40X9OPHI9UydixpWtlFjTNVHI4W0Luynf-gWMvPzU,3454
|
|
@@ -205,7 +205,7 @@ yt_dlp/extractor/clyp.py,sha256=eSp0p9RCfH_QMOtleXboLcY7Crf2rHKUYT5KMwYjYuI,3073
|
|
|
205
205
|
yt_dlp/extractor/cnbc.py,sha256=_W4ltJdeNq1-AazHK3kYBYabqyHxhSWC15bzRLjuw7Q,4615
|
|
206
206
|
yt_dlp/extractor/cnn.py,sha256=gGU8dxUKuYcGEtZZ5L4YC7-0y7rDsQZKYC99sdsxR54,13381
|
|
207
207
|
yt_dlp/extractor/comedycentral.py,sha256=vbi-CeCzA_gLd0THNVcysBQxnanqXXUwRxVavjSF7qM,1048
|
|
208
|
-
yt_dlp/extractor/common.py,sha256=
|
|
208
|
+
yt_dlp/extractor/common.py,sha256=fjAMTGaYESQFeZaVmH4ih8s7768Ko0affWIrntoiim8,203199
|
|
209
209
|
yt_dlp/extractor/commonmistakes.py,sha256=h5ytKJIAIJJ_XD9jIOqRnFf3dkQfo0ogQxqxW0ALcWU,1738
|
|
210
210
|
yt_dlp/extractor/commonprotocols.py,sha256=fUHepBydlFUEuIwQCSyB1q9O8f6KOMegRHcf63SgITg,1937
|
|
211
211
|
yt_dlp/extractor/condenast.py,sha256=IgmDOe2k_a7EaXuNN2PDs6opKh2kjL_s4VKhrr_RbVQ,10391
|
|
@@ -889,7 +889,7 @@ yt_dlp/extractor/thisoldhouse.py,sha256=YLnhWuuA0xMbY766tVDVKi-iaRwwmgOs8sdD-ydB
|
|
|
889
889
|
yt_dlp/extractor/thisvid.py,sha256=dxN-I56UieWt92iS2VSXK7IckobVNQ6BYPgvOJ9vWJI,8628
|
|
890
890
|
yt_dlp/extractor/threeqsdn.py,sha256=zNHqF2ELqulYpoUCp1YYPlf0tyPS2krsrEUkS0Cw8YQ,6219
|
|
891
891
|
yt_dlp/extractor/threespeak.py,sha256=agG3Ue0h19dAknJHwrK9a3RBQB4aja-5cx1crkOCIUc,4025
|
|
892
|
-
yt_dlp/extractor/tiktok.py,sha256=
|
|
892
|
+
yt_dlp/extractor/tiktok.py,sha256=DF97KMx2bxwKfVWAsYs_vqmOSRvk3Yzy-DefqCO0SkI,73875
|
|
893
893
|
yt_dlp/extractor/tmz.py,sha256=Nu3xReAc7dKyZcxTGwXYjOpDjeMdfLKSIgJMpjSobNI,9626
|
|
894
894
|
yt_dlp/extractor/tnaflix.py,sha256=PAWzd7LtF97MF-aHSdUOpWpAmLUqBlAhP0FH0T3tpk0,13561
|
|
895
895
|
yt_dlp/extractor/toggle.py,sha256=unbnd9IcJJOKcpoYSySISehBRbYeqHhr1x-fHmeLba4,7892
|
|
@@ -910,7 +910,7 @@ yt_dlp/extractor/truth.py,sha256=zND7u4eWsBg8wZDIuxQiloZIOl5bwJv2y9B5eWOmugw,279
|
|
|
910
910
|
yt_dlp/extractor/tube8.py,sha256=0CEsgUAnxqb70TkM4tBSH5TpII3rLem_HRUQS1dptPI,6248
|
|
911
911
|
yt_dlp/extractor/tubetugraz.py,sha256=rEWNBA469DS-r8hXXmtk-pdRlvD_ZgZyZhlZgvgdTfI,11143
|
|
912
912
|
yt_dlp/extractor/tubitv.py,sha256=BdizhV-1lf0Q9pg37KpHC_YumE2UBXS1si_mfLuFb8o,8771
|
|
913
|
-
yt_dlp/extractor/tumblr.py,sha256=
|
|
913
|
+
yt_dlp/extractor/tumblr.py,sha256=C0tVMK63z18kb7HOk1bl5M5GDBM5nq2VURjSKxsVlnQ,24756
|
|
914
914
|
yt_dlp/extractor/tunein.py,sha256=Db7maeI5BaLpPbtAlXRLKJCkOKnwg-HFy4MoW1f0Dro,12542
|
|
915
915
|
yt_dlp/extractor/turner.py,sha256=DH8l6_U3NJ-eu2tmTGuHQt4-joNBcJ2IT9H1WIpghhU,11459
|
|
916
916
|
yt_dlp/extractor/tv2.py,sha256=OpiiiJ789PODJ8WuZteS79UmqRTff4zmVG4VIFCRjFQ,13722
|
|
@@ -937,7 +937,7 @@ yt_dlp/extractor/tweakers.py,sha256=3B8ssCQGPLaaiPBb340aV6-3iEIpxOLqJjooG5_Au3k,
|
|
|
937
937
|
yt_dlp/extractor/twentymin.py,sha256=c3vIstexHUmthQP6R3Hl0DVyI70LfC4MWIb4_VxYhsY,3036
|
|
938
938
|
yt_dlp/extractor/twentythreevideo.py,sha256=bnnGCFO-WVnXTDrpgOKl8jot9nxmelPwR3vnqWyIaUQ,3241
|
|
939
939
|
yt_dlp/extractor/twitcasting.py,sha256=1L0h5kir4_HxCoMD18N-x5wvOJCKuX9Wj6p47uAzPBA,12990
|
|
940
|
-
yt_dlp/extractor/twitch.py,sha256=
|
|
940
|
+
yt_dlp/extractor/twitch.py,sha256=ADNLgSBp77w9eGioR3LT4N7l2DZBcC_FAnbmUFgSWM0,47934
|
|
941
941
|
yt_dlp/extractor/twitter.py,sha256=D6XMMIz55mXbPsh2IDDl3HzT8MobJX7ROEk72gouE6w,76608
|
|
942
942
|
yt_dlp/extractor/txxx.py,sha256=lnYZFfSoZuR9A8gmfCUexZrifLU7JoGdZmiTs0o0Luw,17085
|
|
943
943
|
yt_dlp/extractor/udemy.py,sha256=hcSht3C1N_fnXHYFaIMzv843WeyToj7yMiepDK31sqI,19341
|
|
@@ -1057,7 +1057,7 @@ yt_dlp/extractor/zenporn.py,sha256=WnkN_cSf5CgxLGgmTvFUeywNTTNJuLblBwkdZYi2eNc,4
|
|
|
1057
1057
|
yt_dlp/extractor/zetland.py,sha256=KGVNAqyjL1w6jGevhqeKTHSWZixJWBXh3YNJJV657uc,3918
|
|
1058
1058
|
yt_dlp/extractor/zhihu.py,sha256=2pkvnIOcHvQj_DxPKR3w7MYp229HriAJd-ShJiy_HxQ,2546
|
|
1059
1059
|
yt_dlp/extractor/zingmp3.py,sha256=KHD-f-1vUPy18Xk-_F_H_LfFR9N7-bONFYWeNRvJ1Z4,23549
|
|
1060
|
-
yt_dlp/extractor/zoom.py,sha256=
|
|
1060
|
+
yt_dlp/extractor/zoom.py,sha256=7FwI0aJRG3evlKmCC97Ndc7oFRrFT3LHiHye__QZ7Do,7305
|
|
1061
1061
|
yt_dlp/extractor/zype.py,sha256=e3_07aMl65x-ziI5Ge_Ph_lCV4q67DnqeRq2PjIKZj4,5507
|
|
1062
1062
|
yt_dlp/extractor/youtube/__init__.py,sha256=3F72z6WHXlv41giIdmmVY7Fws-bAnkiWz8Eh3A19004,1454
|
|
1063
1063
|
yt_dlp/extractor/youtube/_base.py,sha256=HlC-OeuoGS8gJhiErGJ8My_wpjYL5iCJnQpgWjrpYXI,55551
|
|
@@ -1117,19 +1117,19 @@ yt_dlp/utils/__init__.py,sha256=fktzbumix8bd9Xi288JebTYkxCuNhG21qkcSno-3g_s,283
|
|
|
1117
1117
|
yt_dlp/utils/_deprecated.py,sha256=5KjqmcPW8uIc77xkhvz1gwxBb-jBF7cwG5nI6xxHebU,1300
|
|
1118
1118
|
yt_dlp/utils/_jsruntime.py,sha256=cPLHquABqggAepWHIYlG9zgrnwjV4Le55mr8Fx71nCo,4319
|
|
1119
1119
|
yt_dlp/utils/_legacy.py,sha256=hmczdkw5SELzsFcB2AUblAY9bw8gIBDuPFTBlYvXe_4,7858
|
|
1120
|
-
yt_dlp/utils/_utils.py,sha256=
|
|
1120
|
+
yt_dlp/utils/_utils.py,sha256=3ARez4w3Mv-_r3dTYA1eEF9GMx5JYzdiT2KOezcxVZo,191034
|
|
1121
1121
|
yt_dlp/utils/networking.py,sha256=OFupeRqIwaw5_GYWRYums5kpy--IyhE7Rt5JkZeFLIM,8651
|
|
1122
1122
|
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-2026.1.
|
|
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.
|
|
1126
|
+
yt_dlp-2026.1.3.233044.dev0.data/data/share/bash-completion/completions/yt-dlp,sha256=b0pb9GLseKD27CjnLE6LlhVxhfmQjmyqV6r_CRbd6ko,5989
|
|
1127
|
+
yt_dlp-2026.1.3.233044.dev0.data/data/share/doc/yt_dlp/README.txt,sha256=tt0TDGwdMoOxnPTbcAwib0CshxC47M1o1twsNyDSVgI,165220
|
|
1128
|
+
yt_dlp-2026.1.3.233044.dev0.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=v2WQvWvk4qKpp2-97z2ULb5Msj5dgzU6nMkS-FwSmbM,51488
|
|
1129
|
+
yt_dlp-2026.1.3.233044.dev0.data/data/share/man/man1/yt-dlp.1,sha256=I76tezS4KEGpoILtX3Z-4uJuwa0G21_lbMMHtN5WHW0,159789
|
|
1130
|
+
yt_dlp-2026.1.3.233044.dev0.data/data/share/zsh/site-functions/_yt-dlp,sha256=pNhu8tT4ZKrksLRI2mXLqarzGGhnOlm_hkCBVhSxLzg,5985
|
|
1131
|
+
yt_dlp-2026.1.3.233044.dev0.dist-info/METADATA,sha256=JtEViHBE31Kx0welkSQlINzLD40E6BaKc3d48TGxIEk,180593
|
|
1132
|
+
yt_dlp-2026.1.3.233044.dev0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
1133
|
+
yt_dlp-2026.1.3.233044.dev0.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
|
|
1134
|
+
yt_dlp-2026.1.3.233044.dev0.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
|
|
1135
|
+
yt_dlp-2026.1.3.233044.dev0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yt_dlp-2026.1.2.233036.dev0.dist-info → yt_dlp-2026.1.3.233044.dev0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{yt_dlp-2026.1.2.233036.dev0.dist-info → yt_dlp-2026.1.3.233044.dev0.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|