From 95e516b8b4e75a7723a21054a634aec5c4d0c1bf Mon Sep 17 00:00:00 2001
From: doe1080 <98906116+doe1080@users.noreply.github.com>
Date: Sat, 19 Jul 2025 14:31:54 +0900
Subject: [PATCH] YoutubeIE
---
yt_dlp/extractor/generic.py | 108 -
yt_dlp/extractor/youtube/_video.py | 2967 ++++++++++++++--------------
2 files changed, 1491 insertions(+), 1584 deletions(-)
diff --git a/yt_dlp/extractor/generic.py b/yt_dlp/extractor/generic.py
index 163334eb2..3c7d58ba4 100644
--- a/yt_dlp/extractor/generic.py
+++ b/yt_dlp/extractor/generic.py
@@ -616,114 +616,6 @@ class GenericIE(InfoExtractor):
'view_count': int,
},
'add_ie': ['Youtube'],
- }, {
- # ✅40
- # YoutubeIE; embed
- 'url': 'https://badzine.de/news/als-marc-zwiebler-taufik-hidayat-schlug',
- 'info_dict': {
- 'id': 'bSVcWOq397g',
- 'ext': 'mp4',
- 'title': 'TAUFIK TUNJUKKAN KELASNYA !!! : Taufik Hidayat VS Marc Zwiebler Canada Open 2011',
- 'age_limit': 0,
- 'availability': 'public',
- 'categories': ['Sports'],
- 'channel': 'Badminton Addict Id',
- 'channel_follower_count': int,
- 'channel_id': 'UCfCpKOwQGUe2FUJzYNadQcQ',
- 'channel_url': 'https://www.youtube.com/channel/UCfCpKOwQGUe2FUJzYNadQcQ',
- 'comment_count': int,
- 'description': 'md5:2c3737da9a575f301a8380b4d60592a8',
- 'duration': 756,
- 'like_count': int,
- 'live_status': 'not_live',
- 'media_type': 'video',
- 'playable_in_embed': True,
- 'tags': 'count:9',
- 'thumbnail': r're:https?://i\.ytimg\.com/vi/.+',
- 'timestamp': 1621418412,
- 'upload_date': '20210519',
- 'uploader': 'Badminton Addict Id',
- 'uploader_id': '@badmintonaddictid8958',
- 'uploader_url': 'https://www.youtube.com/@badmintonaddictid8958',
- 'view_count': int,
- },
- }, {
- # ✅41
- # YoutubeIE; WordPress Plugin: YouTube Video Importer
- 'url': 'https://lothype.com/2025-chino-hills-hs-snare-quad-features-wgi2025-drumline/',
- 'info_dict': {
- 'id': 'lC21AX_pCfA',
- 'ext': 'mp4',
- 'title': '2025 Chino Hills HS Snare & Quad Features! #wgi2025 #drumline',
- 'age_limit': 0,
- 'availability': 'public',
- 'categories': ['Music'],
- 'channel': 'DrumlineAV',
- 'channel_follower_count': int,
- 'channel_id': 'UCqdfUdyiQOZMvW5PcTTYikQ',
- 'channel_url': 'https://www.youtube.com/channel/UCqdfUdyiQOZMvW5PcTTYikQ',
- 'comment_count': int,
- 'description': '',
- 'duration': 48,
- 'like_count': int,
- 'live_status': 'not_live',
- 'location': 'WESTMINSTER',
- 'media_type': 'short',
- 'playable_in_embed': True,
- 'tags': 'count:72',
- 'thumbnail': r're:https?://i\.ytimg\.com/vi/.+',
- 'timestamp': 1739910835,
- 'upload_date': '20250218',
- 'uploader': 'DrumlineAV',
- 'uploader_id': '@DrumlineAV',
- 'uploader_url': 'https://www.youtube.com/@DrumlineAV',
- 'view_count': int,
- },
- }, {
- # ✅42
- # YoutubeIE; lazyYT
- # https://github.com/ytdl-org/youtube-dl/commit/65f3a228b16c55fee959eee055767a796479270f
- 'url': 'https://rabota7.ru/%D0%91%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80',
- 'info_dict': {
- 'id': 'DexR8_tTSsQ',
- 'ext': 'mp4',
- 'title': 'Работа бухгалтером в Москве',
- 'age_limit': 0,
- 'availability': 'public',
- 'categories': ['People & Blogs'],
- 'channel': 'Работа в Москве свежие вакансии',
- 'channel_follower_count': int,
- 'channel_id': 'UCG3qz_gefGaMiSBvmaxN5WQ',
- 'channel_url': 'https://www.youtube.com/channel/UCG3qz_gefGaMiSBvmaxN5WQ',
- 'description': 'md5:b779d3d70af4efda26cf62b76808c0e3',
- 'duration': 42,
- 'like_count': int,
- 'live_status': 'not_live',
- 'media_type': 'video',
- 'playable_in_embed': True,
- 'tags': 'count:7',
- 'thumbnail': r're:https?://i\.ytimg\.com/vi/.+',
- 'timestamp': 1496398980,
- 'upload_date': '20170602',
- 'uploader': 'Работа в Москве свежие вакансии',
- 'uploader_id': '@РаботавМосквесвежиевакансии',
- 'uploader_url': 'https://www.youtube.com/@РаботавМосквесвежиевакансии',
- 'view_count': int,
- },
- 'params': {'extractor_args': {'generic': {'impersonate': ['chrome']}}},
- }, {
- # ✅43
- # YoutubeIE; data-video-url=
- # https://github.com/ytdl-org/youtube-dl/pull/2948
- 'url': 'https://www.uca.ac.uk/',
- 'info_dict': {
- 'id': 'www.uca.ac',
- 'title': 'UCA | Creative Arts Degrees UK | University for the Creative Arts',
- 'age_limit': 0,
- 'description': 'md5:179c7a06ea1ed01b94ff5d56cb18d73b',
- 'thumbnail': '/media/uca-2020/hero-headers/2025-prospectus-all-2x2.jpg',
- },
- 'playlist_count': 10,
}]
def report_following_redirect(self, new_url):
diff --git a/yt_dlp/extractor/youtube/_video.py b/yt_dlp/extractor/youtube/_video.py
index fc1f087ac..218549cdd 100644
--- a/yt_dlp/extractor/youtube/_video.py
+++ b/yt_dlp/extractor/youtube/_video.py
@@ -264,1540 +264,1555 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
_GEO_BYPASS = False
IE_NAME = 'youtube'
- _TESTS = [
- {
- 'url': 'https://www.youtube.com/watch?v=BaW_jenozKc&t=1s&end=9',
- 'info_dict': {
- 'id': 'BaW_jenozKc',
- 'ext': 'mp4',
- 'title': 'youtube-dl test video "\'/\\ä↭𝕐',
- 'channel': 'Philipp Hagemeister',
- 'channel_id': 'UCLqxVugv74EIW3VWh2NOa3Q',
- 'channel_url': r're:https?://(?:www\.)?youtube\.com/channel/UCLqxVugv74EIW3VWh2NOa3Q',
- 'upload_date': '20121002',
- 'description': 'md5:8fb536f4877b8a7455c2ec23794dbc22',
- 'categories': ['Science & Technology'],
- 'tags': ['youtube-dl'],
- 'duration': 10,
- 'view_count': int,
- 'like_count': int,
- 'availability': 'public',
- 'playable_in_embed': True,
- 'thumbnail': 'https://i.ytimg.com/vi/BaW_jenozKc/maxresdefault.jpg',
- 'live_status': 'not_live',
- 'age_limit': 0,
- 'start_time': 1,
- 'end_time': 9,
- 'comment_count': int,
- 'channel_follower_count': int,
- 'uploader': 'Philipp Hagemeister',
- 'uploader_url': 'https://www.youtube.com/@PhilippHagemeister',
- 'uploader_id': '@PhilippHagemeister',
- 'heatmap': 'count:100',
- 'timestamp': 1349198244,
- },
+ _TESTS = [{
+ 'url': 'https://www.youtube.com/watch?v=BaW_jenozKc&t=1s&end=9',
+ 'info_dict': {
+ 'id': 'BaW_jenozKc',
+ 'ext': 'mp4',
+ 'title': 'youtube-dl test video "\'/\\ä↭𝕐',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Science & Technology'],
+ 'channel': 'Philipp Hagemeister',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCLqxVugv74EIW3VWh2NOa3Q',
+ 'channel_url': 'https://www.youtube.com/channel/UCLqxVugv74EIW3VWh2NOa3Q',
+ 'comment_count': int,
+ 'description': 'md5:8fb536f4877b8a7455c2ec23794dbc22',
+ 'duration': 10,
+ 'end_time': 9,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'playable_in_embed': True,
+ 'start_time': 1,
+ 'tags': 'count:1',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1349198244,
+ 'upload_date': '20121002',
+ 'uploader': 'Philipp Hagemeister',
+ 'uploader_id': '@PhilippHagemeister',
+ 'uploader_url': 'https://www.youtube.com/@PhilippHagemeister',
+ 'view_count': int,
},
- {
- 'url': '//www.YouTube.com/watch?v=yZIXLfi8CZQ',
- 'note': 'Embed-only video (#1746)',
- 'info_dict': {
- 'id': 'yZIXLfi8CZQ',
- 'ext': 'mp4',
- 'upload_date': '20120608',
- 'title': 'Principal Sexually Assaults A Teacher - Episode 117 - 8th June 2012',
- 'description': 'md5:09b78bd971f1e3e289601dfba15ca4f7',
- 'age_limit': 18,
- },
- 'skip': 'Private video',
+ 'skip': 'Video unavailable',
+ }, {
+ 'note': 'Embed-only video (#1746)',
+ 'url': '//www.YouTube.com/watch?v=yZIXLfi8CZQ',
+ 'info_dict': {
+ 'id': 'yZIXLfi8CZQ',
+ 'ext': 'mp4',
+ 'title': 'Principal Sexually Assaults A Teacher - Episode 117 - 8th June 2012',
+ 'age_limit': 18,
+ 'description': 'md5:09b78bd971f1e3e289601dfba15ca4f7',
+ 'upload_date': '20120608',
},
- {
- 'url': 'https://www.youtube.com/watch?v=BaW_jenozKc&v=yZIXLfi8CZQ',
- 'note': 'Use the first video ID in the URL',
- 'info_dict': {
- 'id': 'BaW_jenozKc',
- 'ext': 'mp4',
- 'title': 'youtube-dl test video "\'/\\ä↭𝕐',
- 'channel': 'Philipp Hagemeister',
- 'channel_id': 'UCLqxVugv74EIW3VWh2NOa3Q',
- 'channel_url': r're:https?://(?:www\.)?youtube\.com/channel/UCLqxVugv74EIW3VWh2NOa3Q',
- 'upload_date': '20121002',
- 'description': 'md5:8fb536f4877b8a7455c2ec23794dbc22',
- 'categories': ['Science & Technology'],
- 'tags': ['youtube-dl'],
- 'duration': 10,
- 'view_count': int,
- 'like_count': int,
- 'availability': 'public',
- 'playable_in_embed': True,
- 'thumbnail': 'https://i.ytimg.com/vi/BaW_jenozKc/maxresdefault.jpg',
- 'live_status': 'not_live',
- 'age_limit': 0,
- 'comment_count': int,
- 'channel_follower_count': int,
- 'uploader': 'Philipp Hagemeister',
- 'uploader_url': 'https://www.youtube.com/@PhilippHagemeister',
- 'uploader_id': '@PhilippHagemeister',
- 'heatmap': 'count:100',
- 'timestamp': 1349198244,
- },
- 'params': {
- 'skip_download': True,
- },
+ 'skip': 'Private video',
+ }, {
+ 'note': 'Use the first video ID in the URL',
+ 'url': 'https://www.youtube.com/watch?v=BaW_jenozKc&v=yZIXLfi8CZQ',
+ 'info_dict': {
+ 'id': 'BaW_jenozKc',
+ 'ext': 'mp4',
+ 'title': 'youtube-dl test video "\'/\\ä↭𝕐',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Science & Technology'],
+ 'channel': 'Philipp Hagemeister',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCLqxVugv74EIW3VWh2NOa3Q',
+ 'channel_url': 'https://www.youtube.com/channel/UCLqxVugv74EIW3VWh2NOa3Q',
+ 'comment_count': int,
+ 'description': 'md5:8fb536f4877b8a7455c2ec23794dbc22',
+ 'duration': 10,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'playable_in_embed': True,
+ 'tags': 'count:1',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1349198244,
+ 'upload_date': '20121002',
+ 'uploader': 'Philipp Hagemeister',
+ 'uploader_id': '@PhilippHagemeister',
+ 'uploader_url': 'https://www.youtube.com/@PhilippHagemeister',
+ 'view_count': int,
},
- {
- 'url': 'https://www.youtube.com/watch?v=a9LDPn-MO4I',
- 'note': '256k DASH audio (format 141) via DASH manifest',
- 'info_dict': {
- 'id': 'a9LDPn-MO4I',
- 'ext': 'm4a',
- 'upload_date': '20121002',
- 'description': '',
- 'title': 'UHDTV TEST 8K VIDEO.mp4',
- },
- 'params': {
- 'youtube_include_dash_manifest': True,
- 'format': '141',
- },
- 'skip': 'format 141 not served anymore',
+ 'skip': 'Video unavailable',
+ }, {
+ 'note': '256k DASH audio (format 141) via DASH manifest',
+ 'url': 'https://www.youtube.com/watch?v=a9LDPn-MO4I',
+ 'info_dict': {
+ 'id': 'a9LDPn-MO4I',
+ 'ext': 'm4a',
+ 'title': 'UHDTV TEST 8K VIDEO.mp4',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Science & Technology'],
+ 'channel': '8KVIDEO',
+ 'channel_follower_count': int,
+ 'channel_id': 'UC8cn-cnCZ2FnxmjfkoLGpsQ',
+ 'channel_url': 'https://www.youtube.com/channel/UC8cn-cnCZ2FnxmjfkoLGpsQ',
+ 'comment_count': int,
+ 'description': '',
+ 'duration': 60,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:8',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1349185252,
+ 'upload_date': '20121002',
+ 'uploader': '8KVIDEO',
+ 'uploader_id': '@8KVIDEO',
+ 'uploader_url': 'https://www.youtube.com/@8KVIDEO',
+ 'view_count': int,
},
+ 'params': {
+ 'format': '141',
+ 'skip_download': True,
+ 'youtube_include_dash_manifest': True,
+ },
+ 'skip': 'format 141 not served anymore',
+ }, {
# DASH manifest with encrypted signature
- {
- 'url': 'https://www.youtube.com/watch?v=IB3lcPjvWLA',
- 'info_dict': {
- 'id': 'IB3lcPjvWLA',
- 'ext': 'm4a',
- 'title': 'Afrojack, Spree Wilson - The Spark (Official Music Video) ft. Spree Wilson',
- 'description': 'md5:8f5e2b82460520b619ccac1f509d43bf',
- 'duration': 244,
- 'upload_date': '20131011',
- 'abr': 129.495,
- 'like_count': int,
- 'channel_id': 'UChuZAo1RKL85gev3Eal9_zg',
- 'playable_in_embed': True,
- 'channel_url': 'https://www.youtube.com/channel/UChuZAo1RKL85gev3Eal9_zg',
- 'view_count': int,
- 'track': 'The Spark',
- 'live_status': 'not_live',
- 'thumbnail': 'https://i.ytimg.com/vi_webp/IB3lcPjvWLA/maxresdefault.webp',
- 'channel': 'Afrojack',
- 'tags': 'count:19',
- 'availability': 'public',
- 'categories': ['Music'],
- 'age_limit': 0,
- 'alt_title': 'The Spark',
- 'channel_follower_count': int,
- 'uploader': 'Afrojack',
- 'uploader_url': 'https://www.youtube.com/@Afrojack',
- 'uploader_id': '@Afrojack',
- 'media_type': 'video',
- },
- 'params': {
- 'youtube_include_dash_manifest': True,
- 'format': '141/bestaudio[ext=m4a]',
- },
+ 'url': 'https://www.youtube.com/watch?v=IB3lcPjvWLA',
+ 'info_dict': {
+ 'id': 'IB3lcPjvWLA',
+ 'ext': 'm4a',
+ 'title': 'Afrojack, Spree Wilson - The Spark (Official Music Video) ft. Spree Wilson',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Music'],
+ 'channel': 'Afrojack',
+ 'channel_follower_count': int,
+ 'channel_id': 'UChuZAo1RKL85gev3Eal9_zg',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UChuZAo1RKL85gev3Eal9_zg',
+ 'comment_count': int,
+ 'description': 'md5:8f5e2b82460520b619ccac1f509d43bf',
+ 'duration': 244,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:19',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1381496404,
+ 'upload_date': '20131011',
+ 'uploader': 'Afrojack',
+ 'uploader_id': '@AfrojackVEVO',
+ 'uploader_url': 'https://www.youtube.com/@AfrojackVEVO',
+ 'view_count': int,
},
- # Age-gate videos. See https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-888837000
- {
- 'note': 'Embed allowed age-gate video; works with web_embedded',
- 'url': 'https://youtube.com/watch?v=HtVdAasjOgU',
- 'info_dict': {
- 'id': 'HtVdAasjOgU',
- 'ext': 'mp4',
- 'title': 'The Witcher 3: Wild Hunt - The Sword Of Destiny Trailer',
- 'description': r're:(?s).{100,}About the Game\n.*?The Witcher 3: Wild Hunt.{100,}',
- 'duration': 142,
- 'upload_date': '20140605',
- 'age_limit': 18,
- 'categories': ['Gaming'],
- 'thumbnail': 'https://i.ytimg.com/vi_webp/HtVdAasjOgU/maxresdefault.webp',
- 'availability': 'needs_auth',
- 'channel_url': 'https://www.youtube.com/channel/UCzybXLxv08IApdjdN0mJhEg',
- 'like_count': int,
- 'channel': 'The Witcher',
- 'live_status': 'not_live',
- 'tags': 'count:17',
- 'channel_id': 'UCzybXLxv08IApdjdN0mJhEg',
- 'playable_in_embed': True,
- 'view_count': int,
- 'channel_follower_count': int,
- 'uploader': 'The Witcher',
- 'uploader_url': 'https://www.youtube.com/@thewitcher',
- 'uploader_id': '@thewitcher',
- 'comment_count': int,
- 'channel_is_verified': True,
- 'heatmap': 'count:100',
- 'timestamp': 1401991663,
- 'media_type': 'video',
- },
+ 'params': {
+ 'format': '141/bestaudio[ext=m4a]',
+ 'skip_download': True,
+ 'youtube_include_dash_manifest': True,
},
- {
- 'note': 'Formerly an age-gate video with embed allowed in public site',
- 'url': 'https://youtube.com/watch?v=HsUATh_Nc2U',
- 'info_dict': {
- 'id': 'HsUATh_Nc2U',
- 'ext': 'mp4',
- 'title': 'Godzilla 2 (Official Video)',
- 'description': 'md5:bf77e03fcae5529475e500129b05668a',
- 'upload_date': '20200408',
- 'age_limit': 0,
- 'availability': 'public',
- 'channel_id': 'UCYQT13AtrJC0gsM1far_zJg',
- 'channel': 'FlyingKitty',
- 'channel_url': 'https://www.youtube.com/channel/UCYQT13AtrJC0gsM1far_zJg',
- 'view_count': int,
- 'categories': ['Entertainment'],
- 'live_status': 'not_live',
- 'tags': ['Flyingkitty', 'godzilla 2'],
- 'thumbnail': 'https://i.ytimg.com/vi/HsUATh_Nc2U/maxresdefault.jpg',
- 'like_count': int,
- 'duration': 177,
- 'playable_in_embed': True,
- 'channel_follower_count': int,
- 'uploader': 'FlyingKitty',
- 'uploader_url': 'https://www.youtube.com/@FlyingKitty900',
- 'uploader_id': '@FlyingKitty900',
- 'comment_count': int,
- 'channel_is_verified': True,
- 'media_type': 'video',
- },
+ }, {
+ # Age-gated video
+ # https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-888837000
+ 'note': 'Embed allowed age-gated video; works with web_embedded',
+ 'url': 'https://youtube.com/watch?v=HtVdAasjOgU',
+ 'info_dict': {
+ 'id': 'HtVdAasjOgU',
+ 'ext': 'mp4',
+ 'title': 'The Witcher 3: Wild Hunt - The Sword Of Destiny Trailer',
+ 'age_limit': 18,
+ 'availability': 'needs_auth',
+ 'categories': ['Gaming'],
+ 'channel': 'The Witcher',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCzybXLxv08IApdjdN0mJhEg',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCzybXLxv08IApdjdN0mJhEg',
+ 'comment_count': int,
+ 'description': 'md5:595a43060c51c2a8cb61dd33c18e5fbd',
+ 'duration': 142,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:17',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1401991663,
+ 'upload_date': '20140605',
+ 'uploader': 'The Witcher',
+ 'uploader_id': '@thewitcher',
+ 'uploader_url': 'https://www.youtube.com/@thewitcher',
+ 'view_count': int,
},
- {
- 'note': 'Age-gate video embedable only with clientScreen=EMBED',
- 'url': 'https://youtube.com/watch?v=Tq92D6wQ1mg',
- 'info_dict': {
- 'id': 'Tq92D6wQ1mg',
- 'title': '[MMD] Adios - EVERGLOW [+Motion DL]',
- 'ext': 'mp4',
- 'upload_date': '20191228',
- 'description': 'md5:17eccca93a786d51bc67646756894066',
- 'age_limit': 18,
- 'like_count': int,
- 'availability': 'needs_auth',
- 'channel_id': 'UC1yoRdFoFJaCY-AGfD9W0wQ',
- 'view_count': int,
- 'thumbnail': 'https://i.ytimg.com/vi_webp/Tq92D6wQ1mg/sddefault.webp',
- 'channel': 'Projekt Melody',
- 'live_status': 'not_live',
- 'tags': ['mmd', 'dance', 'mikumikudance', 'kpop', 'vtuber'],
- 'playable_in_embed': True,
- 'categories': ['Entertainment'],
- 'duration': 106,
- 'channel_url': 'https://www.youtube.com/channel/UC1yoRdFoFJaCY-AGfD9W0wQ',
- 'comment_count': int,
- 'channel_follower_count': int,
- 'uploader': 'Projekt Melody',
- 'uploader_url': 'https://www.youtube.com/@ProjektMelody',
- 'uploader_id': '@ProjektMelody',
- 'timestamp': 1577508724,
- },
- 'skip': 'Age-restricted; requires authentication',
+ 'params': {'skip_download': True},
+ 'skip': 'Age-restricted; requires authentication',
+ }, {
+ 'note': 'Formerly an age-gated video with embed allowed in public site',
+ 'url': 'https://youtube.com/watch?v=HsUATh_Nc2U',
+ 'info_dict': {
+ 'id': 'HsUATh_Nc2U',
+ 'ext': 'mp4',
+ 'title': 'Godzilla 2 (Official Video)',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Entertainment'],
+ 'channel': 'FlyingKitty',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCYQT13AtrJC0gsM1far_zJg',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCYQT13AtrJC0gsM1far_zJg',
+ 'comment_count': int,
+ 'description': 'md5:bf77e03fcae5529475e500129b05668a',
+ 'duration': 177,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:2',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1586358900,
+ 'upload_date': '20200408',
+ 'uploader': 'FlyingKitty',
+ 'uploader_id': '@FlyingKitty900',
+ 'uploader_url': 'https://www.youtube.com/@FlyingKitty900',
+ 'view_count': int,
},
- {
- 'note': 'Non-Agegated non-embeddable video',
- 'url': 'https://youtube.com/watch?v=MeJVWBSsPAY',
- 'info_dict': {
- 'id': 'MeJVWBSsPAY',
- 'ext': 'mp4',
- 'title': 'OOMPH! - Such Mich Find Mich (Lyrics)',
- 'description': 'Fan Video. Music & Lyrics by OOMPH!.',
- 'upload_date': '20130730',
- 'track': 'Such mich find mich',
- 'age_limit': 0,
- 'tags': ['oomph', 'such mich find mich', 'lyrics', 'german industrial', 'musica industrial'],
- 'like_count': int,
- 'playable_in_embed': False,
- 'creator': 'OOMPH!',
- 'thumbnail': 'https://i.ytimg.com/vi/MeJVWBSsPAY/sddefault.jpg',
- 'view_count': int,
- 'alt_title': 'Such mich find mich',
- 'duration': 210,
- 'channel': 'Herr Lurik',
- 'channel_id': 'UCdR3RSDPqub28LjZx0v9-aA',
- 'categories': ['Music'],
- 'availability': 'public',
- 'channel_url': 'https://www.youtube.com/channel/UCdR3RSDPqub28LjZx0v9-aA',
- 'live_status': 'not_live',
- 'artist': 'OOMPH!',
- 'channel_follower_count': int,
- 'uploader': 'Herr Lurik',
- 'uploader_url': 'https://www.youtube.com/@HerrLurik',
- 'uploader_id': '@HerrLurik',
- 'media_type': 'video',
- },
+ 'params': {'skip_download': True},
+ }, {
+ 'note': 'Age-gated video embedable only with clientScreen=EMBED',
+ 'url': 'https://youtube.com/watch?v=Tq92D6wQ1mg',
+ 'info_dict': {
+ 'id': 'Tq92D6wQ1mg',
+ 'ext': 'mp4',
+ 'title': '[MMD] Adios - EVERGLOW [+Motion DL]',
+ 'age_limit': 18,
+ 'availability': 'needs_auth',
+ 'categories': ['Entertainment'],
+ 'channel': 'Projekt Melody',
+ 'channel_follower_count': int,
+ 'channel_id': 'UC1yoRdFoFJaCY-AGfD9W0wQ',
+ 'channel_url': 'https://www.youtube.com/channel/UC1yoRdFoFJaCY-AGfD9W0wQ',
+ 'comment_count': int,
+ 'description': 'md5:17eccca93a786d51bc67646756894066',
+ 'duration': 106,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:5',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1577508724,
+ 'upload_date': '20191228',
+ 'uploader': 'Projekt Melody',
+ 'uploader_id': '@ProjektMelody',
+ 'uploader_url': 'https://www.youtube.com/@ProjektMelody',
+ 'view_count': int,
},
- {
- 'note': 'Non-bypassable age-gated video',
- 'url': 'https://youtube.com/watch?v=Cr381pDsSsA',
- 'only_matching': True,
+ 'skip': 'Age-restricted; requires authentication',
+ }, {
+ 'note': 'Non-age-gated non-embeddable video',
+ 'url': 'https://youtube.com/watch?v=MeJVWBSsPAY',
+ 'info_dict': {
+ 'id': 'MeJVWBSsPAY',
+ 'ext': 'mp4',
+ 'title': 'OOMPH! - Such Mich Find Mich (Lyrics)',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Music'],
+ 'channel': 'Herr Lurik',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCdR3RSDPqub28LjZx0v9-aA',
+ 'channel_url': 'https://www.youtube.com/channel/UCdR3RSDPqub28LjZx0v9-aA',
+ 'description': 'md5:205c1049102a4dffa61e4831c1f16851',
+ 'duration': 210,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': False,
+ 'tags': 'count:5',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1375214517,
+ 'upload_date': '20130730',
+ 'uploader': 'Herr Lurik',
+ 'uploader_id': '@HerrLurik',
+ 'uploader_url': 'https://www.youtube.com/@HerrLurik',
+ 'view_count': int,
},
- # video_info is None (https://github.com/ytdl-org/youtube-dl/issues/4421)
+ }, {
+ 'note': 'Non-bypassable age-gated video',
+ 'url': 'https://youtube.com/watch?v=Cr381pDsSsA',
+ 'only_matching': True,
+ }, {
+ # video_info is None
+ # https://github.com/ytdl-org/youtube-dl/issues/4421
# YouTube Red ad is not captured for creator
- {
- 'url': '__2ABJjxzNo',
- 'info_dict': {
- 'id': '__2ABJjxzNo',
- 'ext': 'mp4',
- 'duration': 266,
- 'upload_date': '20100430',
- 'creator': 'deadmau5',
- 'description': 'md5:6cbcd3a92ce1bc676fc4d6ab4ace2336',
- 'title': 'Deadmau5 - Some Chords (HD)',
- 'alt_title': 'Some Chords',
- 'availability': 'public',
- 'tags': 'count:14',
- 'channel_id': 'UCYEK6xds6eo-3tr4xRdflmQ',
- 'view_count': int,
- 'live_status': 'not_live',
- 'channel': 'deadmau5',
- 'thumbnail': 'https://i.ytimg.com/vi_webp/__2ABJjxzNo/maxresdefault.webp',
- 'like_count': int,
- 'track': 'Some Chords',
- 'artist': 'deadmau5',
- 'playable_in_embed': True,
- 'age_limit': 0,
- 'channel_url': 'https://www.youtube.com/channel/UCYEK6xds6eo-3tr4xRdflmQ',
- 'categories': ['Music'],
- 'album': 'Some Chords',
- 'channel_follower_count': int,
- 'uploader': 'deadmau5',
- 'uploader_url': 'https://www.youtube.com/@deadmau5',
- 'uploader_id': '@deadmau5',
- 'media_type': 'video',
- },
- 'expected_warnings': [
- 'DASH manifest missing',
- ],
+ 'url': '__2ABJjxzNo',
+ 'info_dict': {
+ 'id': '__2ABJjxzNo',
+ 'ext': 'mp4',
+ 'title': 'Deadmau5 - Some Chords (HD)',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Music'],
+ 'channel': 'deadmau5',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCYEK6xds6eo-3tr4xRdflmQ',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCYEK6xds6eo-3tr4xRdflmQ',
+ 'comment_count': int,
+ 'description': 'md5:c27e1e9e095a3d9dd99de2f0f377ba06',
+ 'duration': 266,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:14',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1272659179,
+ 'upload_date': '20100430',
+ 'uploader': 'deadmau5',
+ 'uploader_id': '@deadmau5',
+ 'uploader_url': 'https://www.youtube.com/@deadmau5',
+ 'view_count': int,
},
- # Olympics (https://github.com/ytdl-org/youtube-dl/issues/4431)
- {
- 'url': 'lqQg6PlCWgI',
- 'info_dict': {
- 'id': 'lqQg6PlCWgI',
- 'ext': 'mp4',
- 'duration': 6085,
- 'upload_date': '20150827',
- 'description': 'md5:04bbbf3ccceb6795947572ca36f45904',
- 'title': 'Hockey - Women - GER-AUS - London 2012 Olympic Games',
- 'like_count': int,
- 'release_timestamp': 1343767800,
- 'playable_in_embed': True,
- 'categories': ['Sports'],
- 'release_date': '20120731',
- 'channel': 'Olympics',
- 'tags': ['Hockey', '2012-07-31', '31 July 2012', 'Riverbank Arena', 'Session', 'Olympics', 'Olympic Games', 'London 2012', '2012 Summer Olympics', 'Summer Games'],
- 'channel_id': 'UCTl3QQTvqHFjurroKxexy2Q',
- 'thumbnail': 'https://i.ytimg.com/vi/lqQg6PlCWgI/maxresdefault.jpg',
- 'age_limit': 0,
- 'availability': 'public',
- 'live_status': 'was_live',
- 'view_count': int,
- 'channel_url': 'https://www.youtube.com/channel/UCTl3QQTvqHFjurroKxexy2Q',
- 'channel_follower_count': int,
- 'uploader': 'Olympics',
- 'uploader_url': 'https://www.youtube.com/@Olympics',
- 'uploader_id': '@Olympics',
- 'channel_is_verified': True,
- 'timestamp': 1440707674,
- 'media_type': 'livestream',
- },
- 'params': {
- 'skip_download': 'requires avconv',
- },
+ 'expected_warnings': ['DASH manifest missing'],
+ 'params': {'skip_download': True},
+ }, {
+ # https://github.com/ytdl-org/youtube-dl/issues/4431
+ 'url': 'lqQg6PlCWgI',
+ 'info_dict': {
+ 'id': 'lqQg6PlCWgI',
+ 'ext': 'mp4',
+ 'title': 'Hockey - Women - GER-AUS - London 2012 Olympic Games',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Sports'],
+ 'channel': 'Olympics',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCTl3QQTvqHFjurroKxexy2Q',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCTl3QQTvqHFjurroKxexy2Q',
+ 'description': 'md5:04bbbf3ccceb6795947572ca36f45904',
+ 'duration': 6085,
+ 'like_count': int,
+ 'live_status': 'was_live',
+ 'media_type': 'livestream',
+ 'playable_in_embed': True,
+ 'release_date': '20120731',
+ 'release_timestamp': 1343767800,
+ 'tags': 'count:10',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1440707674,
+ 'upload_date': '20150827',
+ 'uploader': 'Olympics',
+ 'uploader_id': '@Olympics',
+ 'uploader_url': 'https://www.youtube.com/@Olympics',
+ 'view_count': int,
},
+ 'params': {'skip_download': True},
+ }, {
# Non-square pixels
- {
- 'url': 'https://www.youtube.com/watch?v=_b-2C3KPAM0',
- 'info_dict': {
- 'id': '_b-2C3KPAM0',
- 'ext': 'mp4',
- 'stretched_ratio': 16 / 9.,
- 'duration': 85,
- 'upload_date': '20110310',
- 'description': 'made by Wacom from Korea | 字幕&加油添醋 by TY\'s Allen | 感謝heylisa00cavey1001同學熱情提供梗及翻譯',
- 'title': '[A-made] 變態妍字幕版 太妍 我就是這樣的人',
- 'playable_in_embed': True,
- 'channel': '孫ᄋᄅ',
- 'age_limit': 0,
- 'tags': 'count:11',
- 'channel_url': 'https://www.youtube.com/channel/UCS-xxCmRaA6BFdmgDPA_BIw',
- 'channel_id': 'UCS-xxCmRaA6BFdmgDPA_BIw',
- 'thumbnail': 'https://i.ytimg.com/vi/_b-2C3KPAM0/maxresdefault.jpg',
- 'view_count': int,
- 'categories': ['People & Blogs'],
- 'like_count': int,
- 'live_status': 'not_live',
- 'availability': 'unlisted',
- 'comment_count': int,
- 'channel_follower_count': int,
- 'uploader': '孫ᄋᄅ',
- 'uploader_url': 'https://www.youtube.com/@AllenMeow',
- 'uploader_id': '@AllenMeow',
- 'timestamp': 1299776999,
- 'media_type': 'video',
- },
+ 'url': 'https://www.youtube.com/watch?v=_b-2C3KPAM0',
+ 'info_dict': {
+ 'id': '_b-2C3KPAM0',
+ 'ext': 'mp4',
+ 'title': '[A-made] 變態妍字幕版 太妍 我就是這樣的人',
+ 'age_limit': 0,
+ 'availability': 'unlisted',
+ 'categories': ['People & Blogs'],
+ 'channel': '孫ᄋᄅ',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCS-xxCmRaA6BFdmgDPA_BIw',
+ 'channel_url': 'https://www.youtube.com/channel/UCS-xxCmRaA6BFdmgDPA_BIw',
+ 'comment_count': int,
+ 'description': 'md5:636f03cf211e7687daffe5bded88a94f',
+ 'duration': 85,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'stretched_ratio': 16 / 9.,
+ 'tags': 'count:11',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1299776999,
+ 'upload_date': '20110310',
+ 'uploader': '孫ᄋᄅ',
+ 'uploader_id': '@AllenMeow',
+ 'uploader_url': 'https://www.youtube.com/@AllenMeow',
+ 'view_count': int,
},
- # url_encoded_fmt_stream_map is empty string
- {
- 'url': 'qEJwOuvDf7I',
- 'info_dict': {
- 'id': 'qEJwOuvDf7I',
- 'ext': 'webm',
- 'title': 'Обсуждение судебной практики по выборам 14 сентября 2014 года в Санкт-Петербурге',
- 'description': '',
- 'upload_date': '20150404',
- },
- 'params': {
- 'skip_download': 'requires avconv',
- },
- 'skip': 'This live event has ended.',
- },
- # Extraction from multiple DASH manifests (https://github.com/ytdl-org/youtube-dl/pull/6097)
- {
- 'url': 'https://www.youtube.com/watch?v=FIl7x6_3R5Y',
- 'info_dict': {
- 'id': 'FIl7x6_3R5Y',
- 'ext': 'webm',
- 'title': 'md5:7b81415841e02ecd4313668cde88737a',
- 'description': 'md5:116377fd2963b81ec4ce64b542173306',
- 'duration': 220,
- 'upload_date': '20150625',
- 'formats': 'mincount:31',
- },
- 'skip': 'not actual anymore',
+ 'params': {'skip_download': True},
+ }, {
+ # url_encoded_fmt_stream_map is empty string (deprecated)
+ # https://github.com/ytdl-org/youtube-dl/commit/3a9fadd6dfc127ed0707b218b11ac10c654af1e2
+ # https://github.com/ytdl-org/youtube-dl/commit/67299f23d8b1894120e875edf97440de87e22308
+ 'url': 'qEJwOuvDf7I',
+ 'only_matching': True,
+ }, {
+ # Extraction from multiple DASH manifests
+ # https://github.com/ytdl-org/youtube-dl/pull/6097
+ 'url': 'https://www.youtube.com/watch?v=FIl7x6_3R5Y',
+ 'info_dict': {
+ 'id': 'FIl7x6_3R5Y',
+ 'ext': 'mp4',
+ 'title': '[60fps] 150614 마마무 솔라 \'Mr. 애매모호\' 라이브 직캠 @대학로 게릴라 콘서트',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['People & Blogs'],
+ 'channel': 'dorappi2000',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCNlmrKRHLHcd2gq6LtPOTlQ',
+ 'channel_url': 'https://www.youtube.com/channel/UCNlmrKRHLHcd2gq6LtPOTlQ',
+ 'description': 'md5:116377fd2963b81ec4ce64b542173306',
+ 'duration': 220,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:12',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1435276932,
+ 'upload_date': '20150626',
+ 'uploader': 'dorappi2000',
+ 'uploader_id': '@dorappi2000',
+ 'uploader_url': 'https://www.youtube.com/@dorappi2000',
+ 'view_count': int,
},
+ 'params': {'skip_download': True},
+ }, {
# DASH manifest with segment_list
- {
- 'url': 'https://www.youtube.com/embed/CsmdDsKjzN8',
- 'md5': '8ce563a1d667b599d21064e982ab9e31',
- 'info_dict': {
- 'id': 'CsmdDsKjzN8',
- 'ext': 'mp4',
- 'upload_date': '20150501', # According to ' valid video id redirection
+ # https://github.com/ytdl-org/youtube-dl/pull/25063
+ 'url': 'DJztXj2GPfl',
+ 'info_dict': {
+ 'id': 'DJztXj2GPfk',
+ 'ext': 'mp4',
+ 'title': 'Panjabi MC - Mundian To Bach Ke (The Dictator Soundtrack)',
+ 'description': 'md5:bf577a41da97918e94fa9798d9228825',
+ 'upload_date': '20090125',
+ 'artist': 'Panjabi MC',
+ 'track': 'Beware of the Boys (Mundian to Bach Ke) - Motivo Hi-Lectro Remix',
+ 'album': 'Beware of the Boys (Mundian To Bach Ke)',
},
- {
- 'url': 'https://www.youtube.com/watch?feature=player_embedded&v=V36LpHqtcDY',
- 'only_matching': True,
+ 'skip': 'Video unavailable',
+ }, {
+ # empty description results in an empty string
+ # https://github.com/ytdl-org/youtube-dl/pull/26575
+ 'url': 'https://www.youtube.com/watch?v=x41yOUIvK2k',
+ 'info_dict': {
+ 'id': 'x41yOUIvK2k',
+ 'ext': 'mp4',
+ 'title': 'IMG 3456',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Pets & Animals'],
+ 'channel': 'l\'Or Vert asbl',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCo03ZQPBW5U4UC3regpt1nw',
+ 'channel_url': 'https://www.youtube.com/channel/UCo03ZQPBW5U4UC3regpt1nw',
+ 'description': '',
+ 'duration': 7,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': [],
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1497343210,
+ 'upload_date': '20170613',
+ 'uploader': 'l\'Or Vert asbl',
+ 'uploader_id': '@ElevageOrVert',
+ 'uploader_url': 'https://www.youtube.com/@ElevageOrVert',
+ 'view_count': int,
},
- {
- # YouTube Red paid video (https://github.com/ytdl-org/youtube-dl/issues/10059)
- 'url': 'https://www.youtube.com/watch?v=i1Ko8UG-Tdo',
- 'only_matching': True,
+ 'params': {'skip_download': True},
+ }, {
+ # with '};' inside yt initial data (see [1])
+ # see [2] for an example with '};' inside ytInitialPlayerResponse
+ # 1. https://github.com/ytdl-org/youtube-dl/issues/27093
+ # 2. https://github.com/ytdl-org/youtube-dl/issues/27216
+ 'url': 'https://www.youtube.com/watch?v=CHqg6qOn4no',
+ 'info_dict': {
+ 'id': 'CHqg6qOn4no',
+ 'ext': 'mp4',
+ 'title': 'Part 77 Sort a list of simple types in c#',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Education'],
+ 'channel': 'kudvenkat',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCCTVrRB5KpIiK6V2GGVsR1Q',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCCTVrRB5KpIiK6V2GGVsR1Q',
+ 'chapters': 'count:4',
+ 'comment_count': int,
+ 'description': 'md5:b8746fa52e10cdbf47997903f13b20dc',
+ 'duration': 522,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:12',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1377976349,
+ 'upload_date': '20130831',
+ 'uploader': 'kudvenkat',
+ 'uploader_id': '@Csharp-video-tutorialsBlogspot',
+ 'uploader_url': 'https://www.youtube.com/@Csharp-video-tutorialsBlogspot',
+ 'view_count': int,
},
- {
- # Rental video preview
- 'url': 'https://www.youtube.com/watch?v=yYr8q0y5Jfg',
- 'info_dict': {
- 'id': 'uGpuVWrhIzE',
- 'ext': 'mp4',
- 'title': 'Piku - Trailer',
- 'description': 'md5:c36bd60c3fd6f1954086c083c72092eb',
- 'upload_date': '20150811',
- 'license': 'Standard YouTube License',
- },
- 'params': {
- 'skip_download': True,
- },
- 'skip': 'This video is not available.',
+ 'params': {'skip_download': True},
+ }, {
+ # another example of '};' in ytInitialData
+ 'url': 'https://www.youtube.com/watch?v=gVfgbahppCY',
+ 'only_matching': True,
+ }, {
+ 'url': 'https://www.youtube.com/watch_popup?v=63RmMXCd_bQ',
+ 'only_matching': True,
+ }, {
+ # https://github.com/ytdl-org/youtube-dl/pull/28094
+ 'url': 'OtqTfy26tG0',
+ 'info_dict': {
+ 'id': 'OtqTfy26tG0',
+ 'ext': 'mp4',
+ 'title': 'Burn Out',
+ 'age_limit': 0,
+ 'album': 'Every Day',
+ 'alt_title': 'Burn Out',
+ 'artists': ['The Cinematic Orchestra'],
+ 'availability': 'public',
+ 'categories': ['Music'],
+ 'channel': 'The Cinematic Orchestra',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCIzsJBIyo8hhpFm1NK0uLgw',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCIzsJBIyo8hhpFm1NK0uLgw',
+ 'comment_count': int,
+ 'creators': ['The Cinematic Orchestra'],
+ 'description': 'md5:fee8b19b7ba433cc2957d1c7582067ac',
+ 'duration': 614,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'release_date': '20020513',
+ 'release_year': 2023,
+ 'tags': 'count:3',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1416497379,
+ 'track': 'Burn Out',
+ 'upload_date': '20141120',
+ 'uploader': 'The Cinematic Orchestra',
+ 'view_count': int,
},
- {
- # YouTube Red video with episode data
- 'url': 'https://www.youtube.com/watch?v=iqKdEhx-dD4',
- 'info_dict': {
- 'id': 'iqKdEhx-dD4',
- 'ext': 'mp4',
- 'title': 'Isolation - Mind Field (Ep 1)',
- 'description': 'md5:f540112edec5d09fc8cc752d3d4ba3cd',
- 'duration': 2085,
- 'upload_date': '20170118',
- 'series': 'Mind Field',
- 'season_number': 1,
- 'episode_number': 1,
- 'thumbnail': 'https://i.ytimg.com/vi_webp/iqKdEhx-dD4/maxresdefault.webp',
- 'tags': 'count:12',
- 'view_count': int,
- 'availability': 'public',
- 'age_limit': 0,
- 'channel': 'Vsauce',
- 'episode': 'Episode 1',
- 'categories': ['Entertainment'],
- 'season': 'Season 1',
- 'channel_id': 'UC6nSFpj9HTCZ5t-N3Rm3-HA',
- 'channel_url': 'https://www.youtube.com/channel/UC6nSFpj9HTCZ5t-N3Rm3-HA',
- 'like_count': int,
- 'playable_in_embed': True,
- 'live_status': 'not_live',
- 'channel_follower_count': int,
- 'uploader': 'Vsauce',
- 'uploader_url': 'https://www.youtube.com/@Vsauce',
- 'uploader_id': '@Vsauce',
- 'comment_count': int,
- 'channel_is_verified': True,
- 'timestamp': 1484761047,
- 'media_type': 'video',
- },
- 'params': {
- 'skip_download': True,
- },
- 'expected_warnings': [
- 'Skipping DASH manifest',
- ],
+ 'params': {'skip_download': True},
+ }, {
+ # controversial video, only works with bpctr when authenticated with cookies
+ 'url': 'https://www.youtube.com/watch?v=nGC3D_FkCmg',
+ 'only_matching': True,
+ }, {
+ # controversial video, requires bpctr/contentCheckOk
+ 'url': 'https://www.youtube.com/watch?v=SZJvDhaSDnc',
+ 'info_dict': {
+ 'id': 'SZJvDhaSDnc',
+ 'ext': 'mp4',
+ 'title': 'San Diego teen commits suicide after bullying over embarrassing video',
+ 'age_limit': 18,
+ 'availability': 'needs_auth',
+ 'categories': ['News & Politics'],
+ 'channel': 'CBS Mornings',
+ 'channel_follower_count': int,
+ 'channel_id': 'UC-SJ6nODDmufqBzPBwCvYvQ',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UC-SJ6nODDmufqBzPBwCvYvQ',
+ 'comment_count': int,
+ 'description': 'md5:acde3a73d3f133fc97e837a9f76b53b7',
+ 'duration': 170,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:5',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1405513526,
+ 'upload_date': '20140716',
+ 'uploader': 'CBS Mornings',
+ 'uploader_id': '@CBSMornings',
+ 'uploader_url': 'https://www.youtube.com/@CBSMornings',
+ 'view_count': int,
},
- {
- # The following content has been identified by the YouTube community
- # as inappropriate or offensive to some audiences.
- 'url': 'https://www.youtube.com/watch?v=6SJNVb0GnPI',
- 'info_dict': {
- 'id': '6SJNVb0GnPI',
- 'ext': 'mp4',
- 'title': 'Race Differences in Intelligence',
- 'description': 'md5:5d161533167390427a1f8ee89a1fc6f1',
- 'duration': 965,
- 'upload_date': '20140124',
- },
- 'params': {
- 'skip_download': True,
- },
- 'skip': 'This video has been removed for violating YouTube\'s policy on hate speech.',
+ 'skip': 'Age-restricted; requires authentication',
+ }, {
+ # restricted location
+ # https://github.com/ytdl-org/youtube-dl/issues/28685
+ 'url': 'cBvYw8_A0vQ',
+ 'info_dict': {
+ 'id': 'cBvYw8_A0vQ',
+ 'ext': 'mp4',
+ 'title': '4K Ueno Okachimachi Street Scenes 上野御徒町歩き',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Travel & Events'],
+ 'channel': 'Walk around Japan',
+ 'channel_follower_count': int,
+ 'channel_id': 'UC3o_t8PzBmXf5S9b7GLx1Mw',
+ 'channel_url': 'https://www.youtube.com/channel/UC3o_t8PzBmXf5S9b7GLx1Mw',
+ 'description': 'md5:ea770e474b7cd6722b4c95b833c03630',
+ 'duration': 1456,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:5',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1605884416,
+ 'upload_date': '20201120',
+ 'uploader': 'Walk around Japan',
+ 'uploader_id': '@walkaroundjapan7124',
+ 'uploader_url': 'https://www.youtube.com/@walkaroundjapan7124',
+ 'view_count': int,
},
- {
- # itag 212
- 'url': '1t24XAntNCY',
- 'only_matching': True,
+ 'params': {'skip_download': True},
+ }, {
+ # Has multiple audio streams
+ 'url': 'WaOKSUlf4TM',
+ 'only_matching': True,
+ }, {
+ # Requires Premium: has format 141 when requested using YTM url
+ 'url': 'https://music.youtube.com/watch?v=XclachpHxis',
+ 'only_matching': True,
+ }, {
+ # multiple subtitles with same lang_code
+ 'url': 'https://www.youtube.com/watch?v=wsQiKKfKxug',
+ 'only_matching': True,
+ }, {
+ # Force use android client fallback
+ 'url': 'https://www.youtube.com/watch?v=YOelRv7fMxY',
+ 'info_dict': {
+ 'id': 'YOelRv7fMxY',
+ 'ext': '3gp',
+ 'title': 'DIGGING A SECRET TUNNEL Part 1',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Entertainment'],
+ 'channel': 'colinfurze',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCp68_FLety0O-n9QU6phsgw',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCp68_FLety0O-n9QU6phsgw',
+ 'chapters': 'count:4',
+ 'comment_count': int,
+ 'description': 'md5:5d5991195d599b56cd0c4148907eec50',
+ 'duration': 596,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:6',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1624546829,
+ 'upload_date': '20210624',
+ 'uploader': 'colinfurze',
+ 'uploader_id': '@colinfurze',
+ 'uploader_url': 'https://www.youtube.com/@colinfurze',
+ 'view_count': int,
},
- {
- # geo restricted to JP
- 'url': 'sJL6WA-aGkQ',
- 'only_matching': True,
+ 'params': {
+ 'extractor_args': {'youtube': {'player_client': ['android']}},
+ 'format': '17', # 3gp format available on android
+ 'skip_download': True,
},
- {
- 'url': 'https://invidio.us/watch?v=BaW_jenozKc',
- 'only_matching': True,
+ 'skip': 'Android client broken',
+ }, {
+ # Skip download of additional client configs (remix client config in this case)
+ 'url': 'https://music.youtube.com/watch?v=MgNrAu2pzNs',
+ 'only_matching': True,
+ 'params': {'extractor_args': {'youtube': {'player_skip': ['configs']}}},
+ }, {
+ # shorts
+ 'url': 'https://www.youtube.com/shorts/BGQWPY4IigY',
+ 'only_matching': True,
+ }, {
+ 'note': 'Storyboards',
+ 'url': 'https://www.youtube.com/watch?v=5KLPxDtMqe8',
+ 'info_dict': {
+ 'id': '5KLPxDtMqe8',
+ 'ext': 'mhtml',
+ 'title': 'Your Brain is Plastic',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Education'],
+ 'channel': 'SciShow',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCZYTClx2T1of7BRZ86-8fow',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCZYTClx2T1of7BRZ86-8fow',
+ 'chapters': 'count:5',
+ 'comment_count': int,
+ 'description': 'md5:89cd86034bdb5466cd87c6ba206cd2bc',
+ 'duration': 248,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:12',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1395685455,
+ 'upload_date': '20140324',
+ 'uploader': 'SciShow',
+ 'uploader_id': '@SciShow',
+ 'uploader_url': 'https://www.youtube.com/@SciShow',
+ 'view_count': int,
},
- {
- 'url': 'https://redirect.invidious.io/watch?v=BaW_jenozKc',
- 'only_matching': True,
+ 'params': {
+ 'format': 'mhtml',
+ 'skip_download': True,
},
- {
- # from https://nitter.pussthecat.org/YouTube/status/1360363141947944964#m
- 'url': 'https://redirect.invidious.io/Yh0AhrY9GjA',
- 'only_matching': True,
+ }, {
+ # Ensure video upload_date is in UTC timezone (video was uploaded 1641170939)
+ 'url': 'https://www.youtube.com/watch?v=2NUZ8W2llS4',
+ 'info_dict': {
+ 'id': '2NUZ8W2llS4',
+ 'ext': 'mp4',
+ 'title': 'The NP that test your phone performance 🙂',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Gaming'],
+ 'channel': 'Leon Nguyen',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCRqNBSOHgilHfAczlUmlWHA',
+ 'channel_url': 'https://www.youtube.com/channel/UCRqNBSOHgilHfAczlUmlWHA',
+ 'comment_count': int,
+ 'description': 'md5:144494b24d4f9dfacb97c1bbef5de84d',
+ 'duration': 21,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:23',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1641170939,
+ 'upload_date': '20220103',
+ 'uploader': 'Leon Nguyen',
+ 'uploader_id': '@LeonNguyen',
+ 'uploader_url': 'https://www.youtube.com/@LeonNguyen',
+ 'view_count': int,
},
- {
- # DRM protected
- 'url': 'https://www.youtube.com/watch?v=s7_qI6_mIXc',
- 'only_matching': True,
+ 'params': {'skip_download': True},
+ }, {
+ # date text is premiered video, ensure upload date in UTC (published 1641172509)
+ 'url': 'https://www.youtube.com/watch?v=mzZzzBU6lrM',
+ 'info_dict': {
+ 'id': 'mzZzzBU6lrM',
+ 'ext': 'mp4',
+ 'title': 'I Met GeorgeNotFound In Real Life...',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Entertainment'],
+ 'channel': 'Quackity',
+ 'channel_follower_count': int,
+ 'channel_id': 'UC_8NknAFiyhOUaZqHR3lq3Q',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UC_8NknAFiyhOUaZqHR3lq3Q',
+ 'comment_count': int,
+ 'description': 'md5:42e72df3d4d5965903a2b9359c3ccd25',
+ 'duration': 955,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'release_date': '20220103',
+ 'release_timestamp': 1641172509,
+ 'tags': 'count:26',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1641172509,
+ 'upload_date': '20220103',
+ 'uploader': 'Quackity',
+ 'uploader_id': '@Quackity',
+ 'uploader_url': 'https://www.youtube.com/@Quackity',
+ 'view_count': int,
},
- {
- # Video with unsupported adaptive stream type formats
- 'url': 'https://www.youtube.com/watch?v=Z4Vy8R84T1U',
- 'info_dict': {
- 'id': 'Z4Vy8R84T1U',
- 'ext': 'mp4',
- 'title': 'saman SMAN 53 Jakarta(Sancety) opening COFFEE4th at SMAN 53 Jakarta',
- 'description': 'md5:d41d8cd98f00b204e9800998ecf8427e',
- 'duration': 433,
- 'upload_date': '20130923',
- 'formats': 'maxcount:10',
- },
- 'params': {
- 'skip_download': True,
- 'youtube_include_dash_manifest': False,
- },
- 'skip': 'not actual anymore',
+ 'params': {'skip_download': True},
+ }, {
+ # continuous livestream.
+ # Upload date was 2022-07-12T05:12:29-07:00, while stream start is 2022-07-12T15:59:30+00:00
+ 'url': 'https://www.youtube.com/watch?v=jfKfPfyJRdk',
+ 'info_dict': {
+ 'id': 'jfKfPfyJRdk',
+ 'ext': 'mp4',
+ 'title': str,
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Music'],
+ 'channel': 'Lofi Girl',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCSJ4gkVC6NrvII8umztf0Ow',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCSJ4gkVC6NrvII8umztf0Ow',
+ 'concurrent_view_count': int,
+ 'description': 'md5:48841fcfc1be6131d729fa7b4a7784cb',
+ 'like_count': int,
+ 'live_status': 'is_live',
+ 'media_type': 'livestream',
+ 'playable_in_embed': True,
+ 'release_date': '20220712',
+ 'release_timestamp': 1657641570,
+ 'tags': 'count:32',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1657627949,
+ 'upload_date': '20220712',
+ 'uploader': 'Lofi Girl',
+ 'uploader_id': '@LofiGirl',
+ 'uploader_url': 'https://www.youtube.com/@LofiGirl',
+ 'view_count': int,
},
- {
- # Youtube Music Auto-generated description
- # TODO: fix metadata extraction
- 'url': 'https://music.youtube.com/watch?v=MgNrAu2pzNs',
- 'info_dict': {
- 'id': 'MgNrAu2pzNs',
- 'ext': 'mp4',
- 'title': 'Voyeur Girl',
- 'description': 'md5:7ae382a65843d6df2685993e90a8628f',
- 'upload_date': '20190312',
- 'artists': ['Stephen'],
- 'creators': ['Stephen'],
- 'track': 'Voyeur Girl',
- 'album': 'it\'s too much love to know my dear',
- 'release_date': '20190313',
- 'alt_title': 'Voyeur Girl',
- 'view_count': int,
- 'playable_in_embed': True,
- 'like_count': int,
- 'categories': ['Music'],
- 'channel_url': 'https://www.youtube.com/channel/UC-pWHpBjdGG69N9mM2auIAA',
- 'channel': 'Stephen', # TODO: should be "Stephen - Topic"
- 'uploader': 'Stephen',
- 'availability': 'public',
- 'duration': 169,
- 'thumbnail': 'https://i.ytimg.com/vi_webp/MgNrAu2pzNs/maxresdefault.webp',
- 'age_limit': 0,
- 'channel_id': 'UC-pWHpBjdGG69N9mM2auIAA',
- 'tags': 'count:11',
- 'live_status': 'not_live',
- 'channel_follower_count': int,
- 'media_type': 'video',
- },
- 'params': {
- 'skip_download': True,
- },
+ 'params': {'skip_download': True},
+ }, {
+ 'url': 'https://www.youtube.com/watch?v=tjjjtzRLHvA',
+ 'info_dict': {
+ 'id': 'tjjjtzRLHvA',
+ 'ext': 'mp4',
+ 'title': 'ハッシュタグ無し };if window.ytcsi',
+ 'age_limit': 0,
+ 'availability': 'unlisted',
+ 'categories': ['Music'],
+ 'channel': 'Lesmiscore',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCdqltm_7iv1Vs6kp6Syke5A',
+ 'channel_url': 'https://www.youtube.com/channel/UCdqltm_7iv1Vs6kp6Syke5A',
+ 'description': '',
+ 'duration': 6,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'short',
+ 'playable_in_embed': True,
+ 'tags': [],
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1648005313,
+ 'upload_date': '20220323',
+ 'uploader': 'Lesmiscore',
+ 'uploader_id': '@lesmiscore',
+ 'uploader_url': 'https://www.youtube.com/@lesmiscore',
+ 'view_count': int,
},
- {
- 'url': 'https://www.youtubekids.com/watch?v=3b8nCWDgZ6Q',
- 'only_matching': True,
+ 'params': {'skip_download': True},
+ }, {
+ # Prefer primary title+description language metadata by default
+ # Do not prefer translated description if primary is empty
+ 'url': 'https://www.youtube.com/watch?v=el3E4MbxRqQ',
+ 'info_dict': {
+ 'id': 'el3E4MbxRqQ',
+ 'ext': 'mp4',
+ 'title': 'dlp test video 2 - primary sv no desc',
+ 'age_limit': 0,
+ 'availability': 'unlisted',
+ 'categories': ['People & Blogs'],
+ 'channel': 'cole-dlp-test-acc',
+ 'channel_id': 'UCiu-3thuViMebBjw_5nWYrA',
+ 'channel_url': 'https://www.youtube.com/channel/UCiu-3thuViMebBjw_5nWYrA',
+ 'description': '',
+ 'duration': 5,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': [],
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1662677394,
+ 'upload_date': '20220908',
+ 'uploader': 'cole-dlp-test-acc',
+ 'uploader_id': '@coletdjnz',
+ 'uploader_url': 'https://www.youtube.com/@coletdjnz',
+ 'view_count': int,
},
- {
- # invalid -> valid video id redirection
- 'url': 'DJztXj2GPfl',
- 'info_dict': {
- 'id': 'DJztXj2GPfk',
- 'ext': 'mp4',
- 'title': 'Panjabi MC - Mundian To Bach Ke (The Dictator Soundtrack)',
- 'description': 'md5:bf577a41da97918e94fa9798d9228825',
- 'upload_date': '20090125',
- 'artist': 'Panjabi MC',
- 'track': 'Beware of the Boys (Mundian to Bach Ke) - Motivo Hi-Lectro Remix',
- 'album': 'Beware of the Boys (Mundian To Bach Ke)',
- },
- 'params': {
- 'skip_download': True,
- },
- 'skip': 'Video unavailable',
+ 'params': {'skip_download': True},
+ }, {
+ # Extractor argument: prefer translated title+description
+ 'url': 'https://www.youtube.com/watch?v=gHKT4uU8Zng',
+ 'info_dict': {
+ 'id': 'gHKT4uU8Zng',
+ 'ext': 'mp4',
+ 'title': 'dlp test video title primary (en-GB)',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['People & Blogs'],
+ 'channel': 'cole-dlp-test-acc',
+ 'channel_id': 'UCiu-3thuViMebBjw_5nWYrA',
+ 'channel_url': 'https://www.youtube.com/channel/UCiu-3thuViMebBjw_5nWYrA',
+ 'description': 'md5:e8c098ba19888e08554f960ffbf6f90e',
+ 'duration': 5,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': [],
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1659073275,
+ 'upload_date': '20220729',
+ 'uploader': 'cole-dlp-test-acc',
+ 'uploader_id': '@coletdjnz',
+ 'uploader_url': 'https://www.youtube.com/@coletdjnz',
+ 'view_count': int,
},
- {
- # empty description results in an empty string
- 'url': 'https://www.youtube.com/watch?v=x41yOUIvK2k',
- 'info_dict': {
- 'id': 'x41yOUIvK2k',
- 'ext': 'mp4',
- 'title': 'IMG 3456',
- 'description': '',
- 'upload_date': '20170613',
- 'view_count': int,
- 'thumbnail': 'https://i.ytimg.com/vi_webp/x41yOUIvK2k/maxresdefault.webp',
- 'like_count': int,
- 'channel_id': 'UCo03ZQPBW5U4UC3regpt1nw',
- 'tags': [],
- 'channel_url': 'https://www.youtube.com/channel/UCo03ZQPBW5U4UC3regpt1nw',
- 'availability': 'public',
- 'age_limit': 0,
- 'categories': ['Pets & Animals'],
- 'duration': 7,
- 'playable_in_embed': True,
- 'live_status': 'not_live',
- 'channel': 'l\'Or Vert asbl',
- 'channel_follower_count': int,
- 'uploader': 'l\'Or Vert asbl',
- 'uploader_url': 'https://www.youtube.com/@ElevageOrVert',
- 'uploader_id': '@ElevageOrVert',
- 'timestamp': 1497343210,
- 'media_type': 'video',
- },
- 'params': {
- 'skip_download': True,
- },
+ 'params': {
+ 'extractor_args': {'youtube': {'lang': ['fr']}},
+ 'skip_download': True,
},
- {
- # with '};' inside yt initial data (see [1])
- # see [2] for an example with '};' inside ytInitialPlayerResponse
- # 1. https://github.com/ytdl-org/youtube-dl/issues/27093
- # 2. https://github.com/ytdl-org/youtube-dl/issues/27216
- 'url': 'https://www.youtube.com/watch?v=CHqg6qOn4no',
- 'info_dict': {
- 'id': 'CHqg6qOn4no',
- 'ext': 'mp4',
- 'title': 'Part 77 Sort a list of simple types in c#',
- 'description': 'md5:b8746fa52e10cdbf47997903f13b20dc',
- 'upload_date': '20130831',
- 'channel_id': 'UCCTVrRB5KpIiK6V2GGVsR1Q',
- 'like_count': int,
- 'channel_url': 'https://www.youtube.com/channel/UCCTVrRB5KpIiK6V2GGVsR1Q',
- 'live_status': 'not_live',
- 'categories': ['Education'],
- 'availability': 'public',
- 'thumbnail': 'https://i.ytimg.com/vi/CHqg6qOn4no/sddefault.jpg',
- 'tags': 'count:12',
- 'playable_in_embed': True,
- 'age_limit': 0,
- 'view_count': int,
- 'duration': 522,
- 'channel': 'kudvenkat',
- 'comment_count': int,
- 'channel_follower_count': int,
- 'chapters': list,
- 'uploader': 'kudvenkat',
- 'uploader_url': 'https://www.youtube.com/@Csharp-video-tutorialsBlogspot',
- 'uploader_id': '@Csharp-video-tutorialsBlogspot',
- 'channel_is_verified': True,
- 'heatmap': 'count:100',
- 'timestamp': 1377976349,
- 'media_type': 'video',
- },
- 'params': {
- 'skip_download': True,
- },
+ 'expected_warnings': [r'Preferring "fr" translated fields'],
+ }, {
+ 'note': '6 channel audio',
+ 'url': 'https://www.youtube.com/watch?v=zgdo7-RRjgo',
+ 'only_matching': True,
+ }, {
+ 'note': 'Multiple HLS formats with same itag',
+ 'url': 'https://www.youtube.com/watch?v=kX3nB4PpJko',
+ 'info_dict': {
+ 'id': 'kX3nB4PpJko',
+ 'ext': 'mp4',
+ 'title': 'Last To Take Hand Off Jet, Keeps It!',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Entertainment'],
+ 'channel': 'MrBeast',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCX6OQ3DkcsbYNE6H8uQQuVA',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA',
+ 'comment_count': int,
+ 'description': 'md5:42731fced13eff2c48c099fbb5c1b3a0',
+ 'duration': 937,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': [],
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1668286800,
+ 'upload_date': '20221112',
+ 'uploader': 'MrBeast',
+ 'uploader_id': '@MrBeast',
+ 'uploader_url': 'https://www.youtube.com/@MrBeast',
+ 'view_count': int,
},
- {
- # another example of '};' in ytInitialData
- 'url': 'https://www.youtube.com/watch?v=gVfgbahppCY',
- 'only_matching': True,
+ 'params': {
+ 'extractor_args': {'youtube': {'player_client': ['ios']}},
+ 'format': '233-1',
+ 'skip_download': True,
},
- {
- 'url': 'https://www.youtube.com/watch_popup?v=63RmMXCd_bQ',
- 'only_matching': True,
+ 'skip': 'PO Token Required',
+ }, {
+ 'note': 'Audio formats with Dynamic Range Compression',
+ 'url': 'https://www.youtube.com/watch?v=Tq92D6wQ1mg',
+ 'info_dict': {
+ 'id': 'Tq92D6wQ1mg',
+ 'ext': 'webm',
+ 'title': '[MMD] Adios - EVERGLOW [+Motion DL]',
+ 'age_limit': 18,
+ 'availability': 'needs_auth',
+ 'categories': ['Entertainment'],
+ 'channel': 'Projekt Melody',
+ 'channel_follower_count': int,
+ 'channel_id': 'UC1yoRdFoFJaCY-AGfD9W0wQ',
+ 'channel_url': 'https://www.youtube.com/channel/UC1yoRdFoFJaCY-AGfD9W0wQ',
+ 'comment_count': int,
+ 'description': 'md5:17eccca93a786d51bc67646756894066',
+ 'duration': 106,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:5',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1577508724,
+ 'upload_date': '20191228',
+ 'uploader': 'Projekt Melody',
+ 'uploader_id': '@ProjektMelody',
+ 'uploader_url': 'https://www.youtube.com/@ProjektMelody',
+ 'view_count': int,
},
- {
- # https://github.com/ytdl-org/youtube-dl/pull/28094
- 'url': 'OtqTfy26tG0',
- 'info_dict': {
- 'id': 'OtqTfy26tG0',
- 'ext': 'mp4',
- 'title': 'Burn Out',
- 'description': 'md5:8d07b84dcbcbfb34bc12a56d968b6131',
- 'upload_date': '20141120',
- 'artist': 'The Cinematic Orchestra',
- 'track': 'Burn Out',
- 'album': 'Every Day',
- 'like_count': int,
- 'live_status': 'not_live',
- 'alt_title': 'Burn Out',
- 'duration': 614,
- 'age_limit': 0,
- 'view_count': int,
- 'channel_url': 'https://www.youtube.com/channel/UCIzsJBIyo8hhpFm1NK0uLgw',
- 'creator': 'The Cinematic Orchestra',
- 'channel': 'The Cinematic Orchestra',
- 'tags': ['The Cinematic Orchestra', 'Every Day', 'Burn Out'],
- 'channel_id': 'UCIzsJBIyo8hhpFm1NK0uLgw',
- 'availability': 'public',
- 'thumbnail': 'https://i.ytimg.com/vi/OtqTfy26tG0/maxresdefault.jpg',
- 'categories': ['Music'],
- 'playable_in_embed': True,
- 'channel_follower_count': int,
- 'uploader': 'The Cinematic Orchestra',
- 'comment_count': int,
- 'media_type': 'video',
- },
- 'params': {
- 'skip_download': True,
- },
+ 'params': {
+ 'extractor_args': {'youtube': {'player_client': ['tv_embedded']}},
+ 'format': '251-drc',
+ 'skip_download': True,
},
- {
- # controversial video, only works with bpctr when authenticated with cookies
- 'url': 'https://www.youtube.com/watch?v=nGC3D_FkCmg',
- 'only_matching': True,
+ 'skip': 'Age-restricted; requires authentication',
+ }, {
+ 'note': 'Support /live/ URL + media type for post-live content',
+ 'url': 'https://www.youtube.com/live/qVv6vCqciTM',
+ 'info_dict': {
+ 'id': 'qVv6vCqciTM',
+ 'ext': 'mp4',
+ 'title': '【 #インターネット女クリスマス 】3Dで歌ってはしゃぐインターネットの女たち【月ノ美兎/名取さな】',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['Entertainment'],
+ 'channel': 'さなちゃんねる',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCIdEIHpS0TdkqRkHL5OkLtA',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCIdEIHpS0TdkqRkHL5OkLtA',
+ 'chapters': 'count:13',
+ 'comment_count': int,
+ 'description': 'md5:6aebf95cc4a1d731aebc01ad6cc9806d',
+ 'duration': 4438,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'was_live',
+ 'media_type': 'livestream',
+ 'playable_in_embed': True,
+ 'release_date': '20221223',
+ 'release_timestamp': 1671793345,
+ 'tags': 'count:6',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1671798112,
+ 'upload_date': '20221223',
+ 'uploader': 'さなちゃんねる',
+ 'uploader_id': '@sana_natori',
+ 'uploader_url': 'https://www.youtube.com/@sana_natori',
+ 'view_count': int,
},
- {
- # controversial video, requires bpctr/contentCheckOk
- 'url': 'https://www.youtube.com/watch?v=SZJvDhaSDnc',
- 'info_dict': {
- 'id': 'SZJvDhaSDnc',
- 'ext': 'mp4',
- 'title': 'San Diego teen commits suicide after bullying over embarrassing video',
- 'channel_id': 'UC-SJ6nODDmufqBzPBwCvYvQ',
- 'upload_date': '20140716',
- 'description': 'md5:acde3a73d3f133fc97e837a9f76b53b7',
- 'duration': 170,
- 'categories': ['News & Politics'],
- 'view_count': int,
- 'channel': 'CBS Mornings',
- 'tags': ['suicide', 'bullying', 'video', 'cbs', 'news'],
- 'thumbnail': 'https://i.ytimg.com/vi/SZJvDhaSDnc/hqdefault.jpg',
- 'age_limit': 18,
- 'availability': 'needs_auth',
- 'channel_url': 'https://www.youtube.com/channel/UC-SJ6nODDmufqBzPBwCvYvQ',
- 'like_count': int,
- 'live_status': 'not_live',
- 'playable_in_embed': True,
- 'channel_follower_count': int,
- 'uploader': 'CBS Mornings',
- 'uploader_url': 'https://www.youtube.com/@CBSMornings',
- 'uploader_id': '@CBSMornings',
- 'comment_count': int,
- 'channel_is_verified': True,
- 'timestamp': 1405513526,
- },
- 'skip': 'Age-restricted; requires authentication',
+ 'params': {'skip_download': True},
+ }, {
+ # Fallbacks when webpage and web client is unavailable
+ 'url': 'https://www.youtube.com/watch?v=wSSmNUl9Snw',
+ 'info_dict': {
+ 'id': 'wSSmNUl9Snw',
+ 'ext': 'webm',
+ 'title': 'The Computer Hack That Saved Apollo 14',
+ 'age_limit': 0,
+ # 'availability': 'public',
+ # 'categories': ['Science & Technology'],
+ 'channel': 'Scott Manley',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCxzC4EngIsMrPmbm6Nxvb-A',
+ 'channel_is_verified': True,
+ 'channel_url': 'https://www.youtube.com/channel/UCxzC4EngIsMrPmbm6Nxvb-A',
+ 'chapters': 'count:2',
+ 'comment_count': int,
+ 'description': 'md5:f4bed7b200404b72a394c2f97b782c02',
+ 'duration': 682,
+ 'heatmap': 'count:100',
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'video',
+ 'playable_in_embed': True,
+ 'tags': 'count:8',
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1504198713,
+ 'upload_date': '20170831',
+ 'uploader': 'Scott Manley',
+ 'uploader_id': '@scottmanley',
+ 'uploader_url': 'https://www.youtube.com/@scottmanley',
+ 'view_count': int,
},
- {
- # restricted location, https://github.com/ytdl-org/youtube-dl/issues/28685
- 'url': 'cBvYw8_A0vQ',
- 'info_dict': {
- 'id': 'cBvYw8_A0vQ',
- 'ext': 'mp4',
- 'title': '4K Ueno Okachimachi Street Scenes 上野御徒町歩き',
- 'description': 'md5:ea770e474b7cd6722b4c95b833c03630',
- 'upload_date': '20201120',
- 'duration': 1456,
- 'categories': ['Travel & Events'],
- 'channel_id': 'UC3o_t8PzBmXf5S9b7GLx1Mw',
- 'view_count': int,
- 'channel': 'Walk around Japan',
- 'tags': ['Ueno Tokyo', 'Okachimachi Tokyo', 'Ameyoko Street', 'Tokyo attraction', 'Travel in Tokyo'],
- 'thumbnail': 'https://i.ytimg.com/vi/cBvYw8_A0vQ/hqdefault.jpg',
- 'age_limit': 0,
- 'availability': 'public',
- 'channel_url': 'https://www.youtube.com/channel/UC3o_t8PzBmXf5S9b7GLx1Mw',
- 'live_status': 'not_live',
- 'playable_in_embed': True,
- 'channel_follower_count': int,
- 'uploader': 'Walk around Japan',
- 'uploader_url': 'https://www.youtube.com/@walkaroundjapan7124',
- 'uploader_id': '@walkaroundjapan7124',
- 'timestamp': 1605884416,
- 'media_type': 'video',
- },
- 'params': {
- 'skip_download': True,
- },
- }, {
- # Has multiple audio streams
- 'url': 'WaOKSUlf4TM',
- 'only_matching': True,
- }, {
- # Requires Premium: has format 141 when requested using YTM url
- 'url': 'https://music.youtube.com/watch?v=XclachpHxis',
- 'only_matching': True,
- }, {
- # multiple subtitles with same lang_code
- 'url': 'https://www.youtube.com/watch?v=wsQiKKfKxug',
- 'only_matching': True,
- }, {
- # Force use android client fallback
- 'url': 'https://www.youtube.com/watch?v=YOelRv7fMxY',
- 'info_dict': {
- 'id': 'YOelRv7fMxY',
- 'title': 'DIGGING A SECRET TUNNEL Part 1',
- 'ext': '3gp',
- 'upload_date': '20210624',
- 'channel_id': 'UCp68_FLety0O-n9QU6phsgw',
- 'channel_url': r're:https?://(?:www\.)?youtube\.com/channel/UCp68_FLety0O-n9QU6phsgw',
- 'description': 'md5:5d5991195d599b56cd0c4148907eec50',
- 'duration': 596,
- 'categories': ['Entertainment'],
- 'view_count': int,
- 'channel': 'colinfurze',
- 'tags': ['Colin', 'furze', 'Terry', 'tunnel', 'underground', 'bunker'],
- 'thumbnail': 'https://i.ytimg.com/vi/YOelRv7fMxY/maxresdefault.jpg',
- 'age_limit': 0,
- 'availability': 'public',
- 'like_count': int,
- 'live_status': 'not_live',
- 'playable_in_embed': True,
- 'channel_follower_count': int,
- 'chapters': list,
- 'uploader': 'colinfurze',
- 'uploader_url': 'https://www.youtube.com/@colinfurze',
- 'uploader_id': '@colinfurze',
- 'comment_count': int,
- 'channel_is_verified': True,
- 'heatmap': 'count:100',
- },
- 'params': {
- 'format': '17', # 3gp format available on android
- 'extractor_args': {'youtube': {'player_client': ['android']}},
- },
- 'skip': 'android client broken',
+ 'params': {
+ 'extractor_args': {'youtube': {
+ 'player_client': ['ios'],
+ 'player_skip': ['webpage'],
+ }},
+ 'skip_download': True,
},
- {
- # Skip download of additional client configs (remix client config in this case)
- 'url': 'https://music.youtube.com/watch?v=MgNrAu2pzNs',
- 'only_matching': True,
- 'params': {
- 'extractor_args': {'youtube': {'player_skip': ['configs']}},
- },
- }, {
- # shorts
- 'url': 'https://www.youtube.com/shorts/BGQWPY4IigY',
- 'only_matching': True,
- }, {
- 'note': 'Storyboards',
- 'url': 'https://www.youtube.com/watch?v=5KLPxDtMqe8',
- 'info_dict': {
- 'id': '5KLPxDtMqe8',
- 'ext': 'mhtml',
- 'format_id': 'sb0',
- 'title': 'Your Brain is Plastic',
- 'description': 'md5:89cd86034bdb5466cd87c6ba206cd2bc',
- 'upload_date': '20140324',
- 'like_count': int,
- 'channel_id': 'UCZYTClx2T1of7BRZ86-8fow',
- 'channel_url': 'https://www.youtube.com/channel/UCZYTClx2T1of7BRZ86-8fow',
- 'view_count': int,
- 'thumbnail': 'https://i.ytimg.com/vi/5KLPxDtMqe8/maxresdefault.jpg',
- 'playable_in_embed': True,
- 'tags': 'count:12',
- 'availability': 'public',
- 'channel': 'SciShow',
- 'live_status': 'not_live',
- 'duration': 248,
- 'categories': ['Education'],
- 'age_limit': 0,
- 'channel_follower_count': int,
- 'chapters': list,
- 'uploader': 'SciShow',
- 'uploader_url': 'https://www.youtube.com/@SciShow',
- 'uploader_id': '@SciShow',
- 'comment_count': int,
- 'channel_is_verified': True,
- 'heatmap': 'count:100',
- 'timestamp': 1395685455,
- 'media_type': 'video',
- }, 'params': {'format': 'mhtml', 'skip_download': True},
- }, {
- # Ensure video upload_date is in UTC timezone (video was uploaded 1641170939)
- 'url': 'https://www.youtube.com/watch?v=2NUZ8W2llS4',
- 'info_dict': {
- 'id': '2NUZ8W2llS4',
- 'ext': 'mp4',
- 'title': 'The NP that test your phone performance 🙂',
- 'description': 'md5:144494b24d4f9dfacb97c1bbef5de84d',
- 'channel_id': 'UCRqNBSOHgilHfAczlUmlWHA',
- 'channel_url': 'https://www.youtube.com/channel/UCRqNBSOHgilHfAczlUmlWHA',
- 'duration': 21,
- 'view_count': int,
- 'age_limit': 0,
- 'categories': ['Gaming'],
- 'tags': 'count:23',
- 'playable_in_embed': True,
- 'live_status': 'not_live',
- 'upload_date': '20220103',
- 'like_count': int,
- 'availability': 'public',
- 'channel': 'Leon Nguyen',
- 'thumbnail': 'https://i.ytimg.com/vi_webp/2NUZ8W2llS4/maxresdefault.webp',
- 'comment_count': int,
- 'channel_follower_count': int,
- 'uploader': 'Leon Nguyen',
- 'uploader_url': 'https://www.youtube.com/@LeonNguyen',
- 'uploader_id': '@LeonNguyen',
- 'heatmap': 'count:100',
- 'timestamp': 1641170939,
- 'media_type': 'video',
- },
- }, {
- # date text is premiered video, ensure upload date in UTC (published 1641172509)
- 'url': 'https://www.youtube.com/watch?v=mzZzzBU6lrM',
- 'info_dict': {
- 'id': 'mzZzzBU6lrM',
- 'ext': 'mp4',
- 'title': 'I Met GeorgeNotFound In Real Life...',
- 'description': 'md5:978296ec9783a031738b684d4ebf302d',
- 'channel_id': 'UC_8NknAFiyhOUaZqHR3lq3Q',
- 'channel_url': 'https://www.youtube.com/channel/UC_8NknAFiyhOUaZqHR3lq3Q',
- 'duration': 955,
- 'view_count': int,
- 'age_limit': 0,
- 'categories': ['Entertainment'],
- 'tags': 'count:26',
- 'playable_in_embed': True,
- 'live_status': 'not_live',
- 'release_timestamp': 1641172509,
- 'release_date': '20220103',
- 'upload_date': '20220103',
- 'like_count': int,
- 'availability': 'public',
- 'channel': 'Quackity',
- 'thumbnail': 'https://i.ytimg.com/vi/mzZzzBU6lrM/maxresdefault.jpg',
- 'channel_follower_count': int,
- 'uploader': 'Quackity',
- 'uploader_id': '@Quackity',
- 'uploader_url': 'https://www.youtube.com/@Quackity',
- 'comment_count': int,
- 'channel_is_verified': True,
- 'heatmap': 'count:100',
- 'timestamp': 1641172509,
- 'media_type': 'video',
- },
+ 'skip': 'PO Token Required',
+ }, {
+ # uploader_id has non-ASCII characters that are percent-encoded in YT's JSON
+ # https://github.com/yt-dlp/yt-dlp/pull/11818
+ 'url': 'https://www.youtube.com/shorts/18NGQq7p3LY',
+ 'info_dict': {
+ 'id': '18NGQq7p3LY',
+ 'ext': 'mp4',
+ 'title': '아이브 이서 장원영 리즈 삐끼삐끼 챌린지',
+ 'age_limit': 0,
+ 'availability': 'public',
+ 'categories': ['People & Blogs'],
+ 'channel': 'ㅇㅇ',
+ 'channel_follower_count': int,
+ 'channel_id': 'UCC25oTm2J7ZVoi5TngOHg9g',
+ 'channel_url': 'https://www.youtube.com/channel/UCC25oTm2J7ZVoi5TngOHg9g',
+ 'description': '',
+ 'duration': 3,
+ 'like_count': int,
+ 'live_status': 'not_live',
+ 'media_type': 'short',
+ 'playable_in_embed': True,
+ 'tags': [],
+ 'thumbnail': r're:https?://i\.ytimg\.com/.+',
+ 'timestamp': 1724306170,
+ 'upload_date': '20240822',
+ 'uploader': 'ㅇㅇ',
+ 'uploader_id': '@으아-v1k',
+ 'uploader_url': 'https://www.youtube.com/@으아-v1k',
+ 'view_count': int,
},
- { # continuous livestream.
- # Upload date was 2022-07-12T05:12:29-07:00, while stream start is 2022-07-12T15:59:30+00:00
- 'url': 'https://www.youtube.com/watch?v=jfKfPfyJRdk',
- 'info_dict': {
- 'id': 'jfKfPfyJRdk',
- 'ext': 'mp4',
- 'channel_id': 'UCSJ4gkVC6NrvII8umztf0Ow',
- 'like_count': int,
- 'uploader': 'Lofi Girl',
- 'categories': ['Music'],
- 'concurrent_view_count': int,
- 'playable_in_embed': True,
- 'timestamp': 1657627949,
- 'release_date': '20220712',
- 'channel_url': 'https://www.youtube.com/channel/UCSJ4gkVC6NrvII8umztf0Ow',
- 'description': 'md5:452d5c82f72bb7e62a4e0297c3f01c23',
- 'age_limit': 0,
- 'thumbnail': 'https://i.ytimg.com/vi/jfKfPfyJRdk/maxresdefault.jpg',
- 'release_timestamp': 1657641570,
- 'uploader_url': 'https://www.youtube.com/@LofiGirl',
- 'channel_follower_count': int,
- 'channel_is_verified': True,
- 'title': r're:^lofi hip hop radio 📚 beats to relax/study to',
- 'view_count': int,
- 'live_status': 'is_live',
- 'media_type': 'livestream',
- 'tags': 'count:32',
- 'channel': 'Lofi Girl',
- 'availability': 'public',
- 'upload_date': '20220712',
- 'uploader_id': '@LofiGirl',
- },
- 'params': {'skip_download': True},
- }, {
- 'url': 'https://www.youtube.com/watch?v=tjjjtzRLHvA',
- 'info_dict': {
- 'id': 'tjjjtzRLHvA',
- 'ext': 'mp4',
- 'title': 'ハッシュタグ無し };if window.ytcsi',
- 'upload_date': '20220323',
- 'like_count': int,
- 'availability': 'unlisted',
- 'channel': 'Lesmiscore',
- 'thumbnail': r're:^https?://.*\.jpg',
- 'age_limit': 0,
- 'categories': ['Music'],
- 'view_count': int,
- 'description': '',
- 'channel_url': 'https://www.youtube.com/channel/UCdqltm_7iv1Vs6kp6Syke5A',
- 'channel_id': 'UCdqltm_7iv1Vs6kp6Syke5A',
- 'live_status': 'not_live',
- 'playable_in_embed': True,
- 'channel_follower_count': int,
- 'duration': 6,
- 'tags': [],
- 'uploader_id': '@lesmiscore',
- 'uploader': 'Lesmiscore',
- 'uploader_url': 'https://www.youtube.com/@lesmiscore',
- 'timestamp': 1648005313,
- 'media_type': 'short',
- },
- }, {
- # Prefer primary title+description language metadata by default
- # Do not prefer translated description if primary is empty
- 'url': 'https://www.youtube.com/watch?v=el3E4MbxRqQ',
- 'info_dict': {
- 'id': 'el3E4MbxRqQ',
- 'ext': 'mp4',
- 'title': 'dlp test video 2 - primary sv no desc',
- 'description': '',
- 'channel': 'cole-dlp-test-acc',
- 'tags': [],
- 'view_count': int,
- 'channel_url': 'https://www.youtube.com/channel/UCiu-3thuViMebBjw_5nWYrA',
- 'like_count': int,
- 'playable_in_embed': True,
- 'availability': 'unlisted',
- 'thumbnail': r're:^https?://.*\.jpg',
- 'age_limit': 0,
- 'duration': 5,
- 'live_status': 'not_live',
- 'upload_date': '20220908',
- 'categories': ['People & Blogs'],
- 'channel_id': 'UCiu-3thuViMebBjw_5nWYrA',
- 'uploader_url': 'https://www.youtube.com/@coletdjnz',
- 'uploader_id': '@coletdjnz',
- 'uploader': 'cole-dlp-test-acc',
- 'timestamp': 1662677394,
- 'media_type': 'video',
- },
- 'params': {'skip_download': True},
- }, {
- # Extractor argument: prefer translated title+description
- 'url': 'https://www.youtube.com/watch?v=gHKT4uU8Zng',
- 'info_dict': {
- 'id': 'gHKT4uU8Zng',
- 'ext': 'mp4',
- 'channel': 'cole-dlp-test-acc',
- 'tags': [],
- 'duration': 5,
- 'live_status': 'not_live',
- 'channel_id': 'UCiu-3thuViMebBjw_5nWYrA',
- 'upload_date': '20220729',
- 'view_count': int,
- 'categories': ['People & Blogs'],
- 'thumbnail': r're:^https?://.*\.jpg',
- 'title': 'dlp test video title translated (fr)',
- 'availability': 'public',
- 'age_limit': 0,
- 'description': 'dlp test video description translated (fr)',
- 'playable_in_embed': True,
- 'channel_url': 'https://www.youtube.com/channel/UCiu-3thuViMebBjw_5nWYrA',
- 'uploader_url': 'https://www.youtube.com/@coletdjnz',
- 'uploader_id': '@coletdjnz',
- 'uploader': 'cole-dlp-test-acc',
- 'timestamp': 1659073275,
- 'like_count': int,
- 'media_type': 'video',
- },
- 'params': {'skip_download': True, 'extractor_args': {'youtube': {'lang': ['fr']}}},
- 'expected_warnings': [r'Preferring "fr" translated fields'],
- }, {
- 'note': '6 channel audio',
- 'url': 'https://www.youtube.com/watch?v=zgdo7-RRjgo',
- 'only_matching': True,
- }, {
- 'note': 'Multiple HLS formats with same itag',
- 'url': 'https://www.youtube.com/watch?v=kX3nB4PpJko',
- 'info_dict': {
- 'id': 'kX3nB4PpJko',
- 'ext': 'mp4',
- 'categories': ['Entertainment'],
- 'description': 'md5:e8031ff6e426cdb6a77670c9b81f6fa6',
- 'live_status': 'not_live',
- 'duration': 937,
- 'channel_follower_count': int,
- 'thumbnail': 'https://i.ytimg.com/vi_webp/kX3nB4PpJko/maxresdefault.webp',
- 'title': 'Last To Take Hand Off Jet, Keeps It!',
- 'channel': 'MrBeast',
- 'playable_in_embed': True,
- 'view_count': int,
- 'upload_date': '20221112',
- 'channel_url': 'https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA',
- 'age_limit': 0,
- 'availability': 'public',
- 'channel_id': 'UCX6OQ3DkcsbYNE6H8uQQuVA',
- 'like_count': int,
- 'tags': [],
- 'uploader': 'MrBeast',
- 'uploader_url': 'https://www.youtube.com/@MrBeast',
- 'uploader_id': '@MrBeast',
- 'comment_count': int,
- 'channel_is_verified': True,
- 'heatmap': 'count:100',
- 'media_type': 'video',
- },
- 'params': {'extractor_args': {'youtube': {'player_client': ['ios']}}, 'format': '233-1'},
- }, {
- 'note': 'Audio formats with Dynamic Range Compression',
- 'url': 'https://www.youtube.com/watch?v=Tq92D6wQ1mg',
- 'info_dict': {
- 'id': 'Tq92D6wQ1mg',
- 'ext': 'webm',
- 'title': '[MMD] Adios - EVERGLOW [+Motion DL]',
- 'channel_url': 'https://www.youtube.com/channel/UC1yoRdFoFJaCY-AGfD9W0wQ',
- 'channel_id': 'UC1yoRdFoFJaCY-AGfD9W0wQ',
- 'channel_follower_count': int,
- 'description': 'md5:17eccca93a786d51bc67646756894066',
- 'upload_date': '20191228',
- 'tags': ['mmd', 'dance', 'mikumikudance', 'kpop', 'vtuber'],
- 'playable_in_embed': True,
- 'like_count': int,
- 'categories': ['Entertainment'],
- 'thumbnail': 'https://i.ytimg.com/vi/Tq92D6wQ1mg/sddefault.jpg',
- 'age_limit': 18,
- 'channel': 'Projekt Melody',
- 'view_count': int,
- 'availability': 'needs_auth',
- 'comment_count': int,
- 'live_status': 'not_live',
- 'duration': 106,
- 'uploader': 'Projekt Melody',
- 'uploader_id': '@ProjektMelody',
- 'uploader_url': 'https://www.youtube.com/@ProjektMelody',
- 'timestamp': 1577508724,
- },
- 'params': {'extractor_args': {'youtube': {'player_client': ['tv_embedded']}}, 'format': '251-drc'},
- 'skip': 'Age-restricted; requires authentication',
+ 'params': {'skip_download': True},
+ }]
+ _WEBPAGE_TESTS = [{
+ #