[youtube] fixed some download tests
This commit is contained in:
parent
158d4e9088
commit
6f876fba51
|
@ -391,7 +391,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'135': {'ext': 'mp4', 'height': 480, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
'135': {'ext': 'mp4', 'height': 480, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
||||||
'136': {'ext': 'mp4', 'height': 720, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
'136': {'ext': 'mp4', 'height': 720, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
||||||
'137': {'ext': 'mp4', 'height': 1080, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
'137': {'ext': 'mp4', 'height': 1080, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
||||||
'138': {'ext': 'mp4', 'format_note': 'DASH video', 'vcodec': 'h264'}, # Height can vary (https://github.com/ytdl-org/haruhi-dl/issues/4559)
|
'138': {'ext': 'mp4', 'format_note': 'DASH video', 'vcodec': 'h264'}, # Height can vary (https://github.com/ytdl-org/youtube-dl/issues/4559)
|
||||||
'160': {'ext': 'mp4', 'height': 144, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
'160': {'ext': 'mp4', 'height': 144, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
||||||
'212': {'ext': 'mp4', 'height': 480, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
'212': {'ext': 'mp4', 'height': 480, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
||||||
'264': {'ext': 'mp4', 'height': 1440, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
'264': {'ext': 'mp4', 'height': 1440, 'format_note': 'DASH video', 'vcodec': 'h264'},
|
||||||
|
@ -461,16 +461,16 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'BaW_jenozKc',
|
'id': 'BaW_jenozKc',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': 'haruhi-dl test video "\'/\\ä↭𝕐',
|
'title': 'youtube-dl test video "\'/\\ä↭𝕐',
|
||||||
'uploader': 'Philipp Hagemeister',
|
'uploader': 'Philipp Hagemeister',
|
||||||
'uploader_id': 'phihag',
|
'uploader_id': 'phihag',
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/phihag',
|
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/phihag',
|
||||||
'channel_id': 'UCLqxVugv74EIW3VWh2NOa3Q',
|
'channel_id': 'UCLqxVugv74EIW3VWh2NOa3Q',
|
||||||
'channel_url': r're:https?://(?:www\.)?youtube\.com/channel/UCLqxVugv74EIW3VWh2NOa3Q',
|
'channel_url': r're:https?://(?:www\.)?youtube\.com/channel/UCLqxVugv74EIW3VWh2NOa3Q',
|
||||||
'upload_date': '20121002',
|
'upload_date': '20121002',
|
||||||
'description': 'test chars: "\'/\\ä↭𝕐\ntest URL: https://github.com/rg3/haruhi-dl/issues/1892\n\nThis is a test video for haruhi-dl.\n\nFor more information, contact phihag@phihag.de .',
|
'description': 'test chars: "\'/\\ä↭𝕐\ntest URL: https://github.com/rg3/youtube-dl/issues/1892\n\nThis is a test video for youtube-dl.\n\nFor more information, contact phihag@phihag.de .',
|
||||||
'categories': ['Science & Technology'],
|
'categories': ['Science & Technology'],
|
||||||
'tags': ['haruhi-dl'],
|
'tags': ['youtube-dl'],
|
||||||
'duration': 10,
|
'duration': 10,
|
||||||
'view_count': int,
|
'view_count': int,
|
||||||
'like_count': int,
|
'like_count': int,
|
||||||
|
@ -480,25 +480,21 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url': 'https://www.youtube.com/watch?v=UxxajLWwzqY',
|
'url': 'https://www.youtube.com/watch?v=MURua52_YPg',
|
||||||
'note': 'Test generic use_cipher_signature video (#897)',
|
'note': 'cipher "encrypted" signature',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'UxxajLWwzqY',
|
'id': 'MURua52_YPg',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'upload_date': '20120506',
|
'upload_date': '20200418',
|
||||||
'title': 'Icona Pop - I Love It (feat. Charli XCX) [OFFICIAL VIDEO]',
|
'title': 'My Ordinary Life',
|
||||||
'alt_title': 'I Love It (feat. Charli XCX)',
|
'description': 'Provided to YouTube by Fandalism\n\nMy Ordinary Life · The Living Tombstone\n\nMy Ordinary Life\n\n℗ The Living Tombstone\n\nReleased on: 2017-11-23\n\nAuto-generated by YouTube.',
|
||||||
'description': 'md5:19a2f98d9032b9311e686ed039564f63',
|
'duration': 231,
|
||||||
'tags': ['Icona Pop i love it', 'sweden', 'pop music', 'big beat records', 'big beat', 'charli',
|
'uploader': 'The Living Tombstone - Topic',
|
||||||
'xcx', 'charli xcx', 'girls', 'hbo', 'i love it', "i don't care", 'icona', 'pop',
|
'uploader_id': 'UC5EH9egdct4dmAo3AHwzPBA',
|
||||||
'iconic ep', 'iconic', 'love', 'it'],
|
'uploader_url': r're:https?://(?:www\.)?youtube\.com/channel/UC5EH9egdct4dmAo3AHwzPBA',
|
||||||
'duration': 180,
|
'creator': 'The Living Tombstone',
|
||||||
'uploader': 'Icona Pop',
|
'track': 'My Ordinary Life',
|
||||||
'uploader_id': 'IconaPop',
|
'artist': 'The Living Tombstone',
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/IconaPop',
|
|
||||||
'creator': 'Icona Pop',
|
|
||||||
'track': 'I Love It (feat. Charli XCX)',
|
|
||||||
'artist': 'Icona Pop',
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -509,30 +505,11 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'upload_date': '20130703',
|
'upload_date': '20130703',
|
||||||
'title': 'Justin Timberlake - Tunnel Vision (Official Music Video) (Explicit)',
|
'title': 'Justin Timberlake - Tunnel Vision (Official Music Video) (Explicit)',
|
||||||
'alt_title': 'Tunnel Vision',
|
'description': 'md5:fc2016d319b50b68c5541c3fd66ffd16',
|
||||||
'description': 'md5:07dab3356cde4199048e4c7cd93471e1',
|
|
||||||
'duration': 419,
|
'duration': 419,
|
||||||
'uploader': 'justintimberlakeVEVO',
|
'uploader': 'justintimberlakeVEVO',
|
||||||
'uploader_id': 'justintimberlakeVEVO',
|
'uploader_id': 'justintimberlakeVEVO',
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/justintimberlakeVEVO',
|
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/justintimberlakeVEVO',
|
||||||
'creator': 'Justin Timberlake',
|
|
||||||
'track': 'Tunnel Vision',
|
|
||||||
'artist': 'Justin Timberlake',
|
|
||||||
'age_limit': 18,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'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',
|
|
||||||
'uploader': 'SET India',
|
|
||||||
'uploader_id': 'setindia',
|
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/setindia',
|
|
||||||
'age_limit': 18,
|
'age_limit': 18,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -542,14 +519,14 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'BaW_jenozKc',
|
'id': 'BaW_jenozKc',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': 'haruhi-dl test video "\'/\\ä↭𝕐',
|
'title': 'youtube-dl test video "\'/\\ä↭𝕐',
|
||||||
'uploader': 'Philipp Hagemeister',
|
'uploader': 'Philipp Hagemeister',
|
||||||
'uploader_id': 'phihag',
|
'uploader_id': 'phihag',
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/phihag',
|
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/phihag',
|
||||||
'upload_date': '20121002',
|
'upload_date': '20121002',
|
||||||
'description': 'test chars: "\'/\\ä↭𝕐\ntest URL: https://github.com/rg3/haruhi-dl/issues/1892\n\nThis is a test video for haruhi-dl.\n\nFor more information, contact phihag@phihag.de .',
|
'description': 'test chars: "\'/\\ä↭𝕐\ntest URL: https://github.com/rg3/youtube-dl/issues/1892\n\nThis is a test video for youtube-dl.\n\nFor more information, contact phihag@phihag.de .',
|
||||||
'categories': ['Science & Technology'],
|
'categories': ['Science & Technology'],
|
||||||
'tags': ['haruhi-dl'],
|
'tags': ['youtube-dl'],
|
||||||
'duration': 10,
|
'duration': 10,
|
||||||
'view_count': int,
|
'view_count': int,
|
||||||
'like_count': int,
|
'like_count': int,
|
||||||
|
@ -584,7 +561,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'id': 'nfWlot6h_JM',
|
'id': 'nfWlot6h_JM',
|
||||||
'ext': 'm4a',
|
'ext': 'm4a',
|
||||||
'title': 'Taylor Swift - Shake It Off',
|
'title': 'Taylor Swift - Shake It Off',
|
||||||
'description': 'md5:307195cd21ff7fa352270fe884570ef0',
|
'description': 'md5:9dc0bd58efe700594b54f7d82bed0bac',
|
||||||
'duration': 242,
|
'duration': 242,
|
||||||
'uploader': 'TaylorSwiftVEVO',
|
'uploader': 'TaylorSwiftVEVO',
|
||||||
'uploader_id': 'TaylorSwiftVEVO',
|
'uploader_id': 'TaylorSwiftVEVO',
|
||||||
|
@ -595,21 +572,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'format': '141/bestaudio[ext=m4a]',
|
'format': '141/bestaudio[ext=m4a]',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
# Controversy video
|
|
||||||
{
|
|
||||||
'url': 'https://www.youtube.com/watch?v=T4XJQO3qol8',
|
|
||||||
'info_dict': {
|
|
||||||
'id': 'T4XJQO3qol8',
|
|
||||||
'ext': 'mp4',
|
|
||||||
'duration': 219,
|
|
||||||
'upload_date': '20100909',
|
|
||||||
'uploader': 'Amazing Atheist',
|
|
||||||
'uploader_id': 'TheAmazingAtheist',
|
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/TheAmazingAtheist',
|
|
||||||
'title': 'Burning Everyone\'s Koran',
|
|
||||||
'description': 'SUBSCRIBE: http://www.youtube.com/saturninefilms\n\nEven Obama has taken a stand against freedom on this issue: http://www.huffingtonpost.com/2010/09/09/obama-gma-interview-quran_n_710282.html',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
# Normal age-gate video (No vevo, embed allowed)
|
# Normal age-gate video (No vevo, embed allowed)
|
||||||
{
|
{
|
||||||
'url': 'https://youtube.com/watch?v=HtVdAasjOgU',
|
'url': 'https://youtube.com/watch?v=HtVdAasjOgU',
|
||||||
|
@ -642,7 +604,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'age_limit': 18,
|
'age_limit': 18,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
# video_info is None (https://github.com/ytdl-org/haruhi-dl/issues/4421)
|
# video_info is None (https://github.com/ytdl-org/youtube-dl/issues/4421)
|
||||||
# YouTube Red ad is not captured for creator
|
# YouTube Red ad is not captured for creator
|
||||||
{
|
{
|
||||||
'url': '__2ABJjxzNo',
|
'url': '__2ABJjxzNo',
|
||||||
|
@ -653,17 +615,15 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'upload_date': '20100430',
|
'upload_date': '20100430',
|
||||||
'uploader_id': 'deadmau5',
|
'uploader_id': 'deadmau5',
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/deadmau5',
|
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/deadmau5',
|
||||||
'creator': 'Dada Life, deadmau5',
|
'description': 'md5:6cbcd3a92ce1bc676fc4d6ab4ace2336',
|
||||||
'description': 'md5:12c56784b8032162bb936a5f76d55360',
|
|
||||||
'uploader': 'deadmau5',
|
'uploader': 'deadmau5',
|
||||||
'title': 'Deadmau5 - Some Chords (HD)',
|
'title': 'Deadmau5 - Some Chords (HD)',
|
||||||
'alt_title': 'This Machine Kills Some Chords',
|
|
||||||
},
|
},
|
||||||
'expected_warnings': [
|
'expected_warnings': [
|
||||||
'DASH manifest missing',
|
'DASH manifest missing',
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
# Olympics (https://github.com/ytdl-org/haruhi-dl/issues/4431)
|
# Olympics (https://github.com/ytdl-org/youtube-dl/issues/4431)
|
||||||
{
|
{
|
||||||
'url': 'lqQg6PlCWgI',
|
'url': 'lqQg6PlCWgI',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
@ -697,82 +657,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'title': '[A-made] 變態妍字幕版 太妍 我就是這樣的人',
|
'title': '[A-made] 變態妍字幕版 太妍 我就是這樣的人',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
# Multifeed videos (multiple cameras), URL is for Main Camera
|
|
||||||
'url': 'https://www.youtube.com/watch?v=jqWvoWXjCVs',
|
|
||||||
'info_dict': {
|
|
||||||
'id': 'jqWvoWXjCVs',
|
|
||||||
'title': 'teamPGP: Rocket League Noob Stream',
|
|
||||||
'description': 'md5:dc7872fb300e143831327f1bae3af010',
|
|
||||||
},
|
|
||||||
'playlist': [{
|
|
||||||
'info_dict': {
|
|
||||||
'id': 'jqWvoWXjCVs',
|
|
||||||
'ext': 'mp4',
|
|
||||||
'title': 'teamPGP: Rocket League Noob Stream (Main Camera)',
|
|
||||||
'description': 'md5:dc7872fb300e143831327f1bae3af010',
|
|
||||||
'duration': 7335,
|
|
||||||
'upload_date': '20150721',
|
|
||||||
'uploader': 'Beer Games Beer',
|
|
||||||
'uploader_id': 'beergamesbeer',
|
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/beergamesbeer',
|
|
||||||
'license': 'Standard YouTube License',
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
'info_dict': {
|
|
||||||
'id': '6h8e8xoXJzg',
|
|
||||||
'ext': 'mp4',
|
|
||||||
'title': 'teamPGP: Rocket League Noob Stream (kreestuh)',
|
|
||||||
'description': 'md5:dc7872fb300e143831327f1bae3af010',
|
|
||||||
'duration': 7337,
|
|
||||||
'upload_date': '20150721',
|
|
||||||
'uploader': 'Beer Games Beer',
|
|
||||||
'uploader_id': 'beergamesbeer',
|
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/beergamesbeer',
|
|
||||||
'license': 'Standard YouTube License',
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
'info_dict': {
|
|
||||||
'id': 'PUOgX5z9xZw',
|
|
||||||
'ext': 'mp4',
|
|
||||||
'title': 'teamPGP: Rocket League Noob Stream (grizzle)',
|
|
||||||
'description': 'md5:dc7872fb300e143831327f1bae3af010',
|
|
||||||
'duration': 7337,
|
|
||||||
'upload_date': '20150721',
|
|
||||||
'uploader': 'Beer Games Beer',
|
|
||||||
'uploader_id': 'beergamesbeer',
|
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/beergamesbeer',
|
|
||||||
'license': 'Standard YouTube License',
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
'info_dict': {
|
|
||||||
'id': 'teuwxikvS5k',
|
|
||||||
'ext': 'mp4',
|
|
||||||
'title': 'teamPGP: Rocket League Noob Stream (zim)',
|
|
||||||
'description': 'md5:dc7872fb300e143831327f1bae3af010',
|
|
||||||
'duration': 7334,
|
|
||||||
'upload_date': '20150721',
|
|
||||||
'uploader': 'Beer Games Beer',
|
|
||||||
'uploader_id': 'beergamesbeer',
|
|
||||||
'uploader_url': r're:https?://(?:www\.)?youtube\.com/user/beergamesbeer',
|
|
||||||
'license': 'Standard YouTube License',
|
|
||||||
},
|
|
||||||
}],
|
|
||||||
'params': {
|
|
||||||
'skip_download': True,
|
|
||||||
},
|
|
||||||
'skip': 'This video is not available.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
# Multifeed video with comma in title (see https://github.com/ytdl-org/haruhi-dl/issues/8536)
|
|
||||||
'url': 'https://www.youtube.com/watch?v=gVfLd0zhdlo',
|
|
||||||
'info_dict': {
|
|
||||||
'id': 'gVfLd0zhdlo',
|
|
||||||
'title': 'DevConf.cz 2016 Day 2 Workshops 1 14:00 - 15:30',
|
|
||||||
},
|
|
||||||
'playlist_count': 2,
|
|
||||||
'skip': 'Not multifeed anymore',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
'url': 'https://vid.plus/FlRa-iH7PGw',
|
'url': 'https://vid.plus/FlRa-iH7PGw',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
|
@ -782,16 +666,15 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
# Title with JS-like syntax "};" (see https://github.com/ytdl-org/haruhi-dl/issues/7468)
|
# Title with JS-like syntax "};" (see https://github.com/ytdl-org/youtube-dl/issues/7468)
|
||||||
# Also tests cut-off URL expansion in video description (see
|
# Also tests cut-off URL expansion in video description (see
|
||||||
# https://github.com/ytdl-org/haruhi-dl/issues/1892,
|
# https://github.com/ytdl-org/youtube-dl/issues/1892,
|
||||||
# https://github.com/ytdl-org/haruhi-dl/issues/8164)
|
# https://github.com/ytdl-org/youtube-dl/issues/8164)
|
||||||
'url': 'https://www.youtube.com/watch?v=lsguqyKfVQg',
|
'url': 'https://www.youtube.com/watch?v=lsguqyKfVQg',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'lsguqyKfVQg',
|
'id': 'lsguqyKfVQg',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': '{dark walk}; Loki/AC/Dishonored; collab w/Elflover21',
|
'title': '{dark walk}; Loki/AC/Dishonored; collab w/Elflover21',
|
||||||
'alt_title': 'Dark Walk - Position Music',
|
|
||||||
'description': 'md5:8085699c11dc3f597ce0410b0dcbb34a',
|
'description': 'md5:8085699c11dc3f597ce0410b0dcbb34a',
|
||||||
'duration': 133,
|
'duration': 133,
|
||||||
'upload_date': '20151119',
|
'upload_date': '20151119',
|
||||||
|
@ -808,7 +691,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
# Tags with '};' (see https://github.com/ytdl-org/haruhi-dl/issues/7468)
|
# Tags with '};' (see https://github.com/ytdl-org/youtube-dl/issues/7468)
|
||||||
'url': 'https://www.youtube.com/watch?v=Ms7iBXnlUO8',
|
'url': 'https://www.youtube.com/watch?v=Ms7iBXnlUO8',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
},
|
},
|
||||||
|
@ -855,7 +738,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
# YouTube Red paid video (https://github.com/ytdl-org/haruhi-dl/issues/10059)
|
# YouTube Red paid video (https://github.com/ytdl-org/youtube-dl/issues/10059)
|
||||||
'url': 'https://www.youtube.com/watch?v=i1Ko8UG-Tdo',
|
'url': 'https://www.youtube.com/watch?v=i1Ko8UG-Tdo',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
},
|
},
|
||||||
|
@ -1270,8 +1153,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
# regex won't capture the whole JSON. Yet working around by trying more
|
# regex won't capture the whole JSON. Yet working around by trying more
|
||||||
# concrete regex first keeping in mind proper quoted string handling
|
# concrete regex first keeping in mind proper quoted string handling
|
||||||
# to be implemented in future that will replace this workaround (see
|
# to be implemented in future that will replace this workaround (see
|
||||||
# https://github.com/ytdl-org/haruhi-dl/issues/7468,
|
# https://github.com/ytdl-org/youtube-dl/issues/7468,
|
||||||
# https://github.com/ytdl-org/haruhi-dl/pull/7599)
|
# https://github.com/ytdl-org/youtube-dl/pull/7599)
|
||||||
r';ytplayer\.config\s*=\s*({.+?});ytplayer',
|
r';ytplayer\.config\s*=\s*({.+?});ytplayer',
|
||||||
r';ytplayer\.config\s*=\s*({.+?});',
|
r';ytplayer\.config\s*=\s*({.+?});',
|
||||||
)
|
)
|
||||||
|
@ -1660,7 +1543,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
add_dash_mpd(video_info)
|
add_dash_mpd(video_info)
|
||||||
# Rental video is not rented but preview is available (e.g.
|
# Rental video is not rented but preview is available (e.g.
|
||||||
# https://www.youtube.com/watch?v=yYr8q0y5Jfg,
|
# https://www.youtube.com/watch?v=yYr8q0y5Jfg,
|
||||||
# https://github.com/ytdl-org/haruhi-dl/issues/10532)
|
# https://github.com/ytdl-org/youtube-dl/issues/10532)
|
||||||
if not video_info and args.get('ypc_vid'):
|
if not video_info and args.get('ypc_vid'):
|
||||||
return self.url_result(
|
return self.url_result(
|
||||||
args['ypc_vid'], YoutubeIE.ie_key(), video_id=args['ypc_vid'])
|
args['ypc_vid'], YoutubeIE.ie_key(), video_id=args['ypc_vid'])
|
||||||
|
@ -1671,7 +1554,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
if not player_response:
|
if not player_response:
|
||||||
player_response = extract_player_response(
|
player_response = extract_player_response(
|
||||||
self._search_regex(
|
self._search_regex(
|
||||||
r'(?:window(?:\["|\.)|var )ytInitialPlayerResponse(?:"])?\s*=\s*({.+});',
|
r'(?:window(?:\["|\.)|var )ytInitialPlayerResponse(?:"])?\s*=\s*({.+?(?!\\)});',
|
||||||
video_webpage, 'ytInitialPlayerResponse', fatal=False), video_id)
|
video_webpage, 'ytInitialPlayerResponse', fatal=False), video_id)
|
||||||
if not video_info or self._downloader.params.get('youtube_include_dash_manifest', True):
|
if not video_info or self._downloader.params.get('youtube_include_dash_manifest', True):
|
||||||
add_dash_mpd_pr(player_response)
|
add_dash_mpd_pr(player_response)
|
||||||
|
@ -1750,7 +1633,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
for feed in multifeed_metadata_list.split(','):
|
for feed in multifeed_metadata_list.split(','):
|
||||||
# Unquote should take place before split on comma (,) since textual
|
# Unquote should take place before split on comma (,) since textual
|
||||||
# fields may contain comma as well (see
|
# fields may contain comma as well (see
|
||||||
# https://github.com/ytdl-org/haruhi-dl/issues/8536)
|
# https://github.com/ytdl-org/youtube-dl/issues/8536)
|
||||||
feed_data = compat_parse_qs(compat_urllib_parse_unquote_plus(feed))
|
feed_data = compat_parse_qs(compat_urllib_parse_unquote_plus(feed))
|
||||||
|
|
||||||
def feed_entry(name):
|
def feed_entry(name):
|
||||||
|
@ -1791,7 +1674,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
|
|
||||||
# Check for "rental" videos
|
# Check for "rental" videos
|
||||||
if 'ypc_video_rental_bar_text' in video_info and 'author' not in video_info:
|
if 'ypc_video_rental_bar_text' in video_info and 'author' not in video_info:
|
||||||
raise ExtractorError('"rental" videos not supported. See https://github.com/ytdl-org/haruhi-dl/issues/359 for more information.', expected=True)
|
raise ExtractorError('"rental" videos not supported. See https://github.com/ytdl-org/youtube-dl/issues/359 for more information.', expected=True)
|
||||||
|
|
||||||
def _extract_filesize(media_url):
|
def _extract_filesize(media_url):
|
||||||
return int_or_none(self._search_regex(
|
return int_or_none(self._search_regex(
|
||||||
|
@ -1811,7 +1694,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
elif not is_live and (streaming_formats or len(video_info.get('url_encoded_fmt_stream_map', [''])[0]) >= 1 or len(video_info.get('adaptive_fmts', [''])[0]) >= 1):
|
elif not is_live and (streaming_formats or len(video_info.get('url_encoded_fmt_stream_map', [''])[0]) >= 1 or len(video_info.get('adaptive_fmts', [''])[0]) >= 1):
|
||||||
encoded_url_map = video_info.get('url_encoded_fmt_stream_map', [''])[0] + ',' + video_info.get('adaptive_fmts', [''])[0]
|
encoded_url_map = video_info.get('url_encoded_fmt_stream_map', [''])[0] + ',' + video_info.get('adaptive_fmts', [''])[0]
|
||||||
if 'rtmpe%3Dyes' in encoded_url_map:
|
if 'rtmpe%3Dyes' in encoded_url_map:
|
||||||
raise ExtractorError('rtmpe downloads are not supported, see https://github.com/ytdl-org/haruhi-dl/issues/343 for more information.', expected=True)
|
raise ExtractorError('rtmpe downloads are not supported, see https://web.archive.org/web/20200923164854/https://github.com/ytdl-org/youtube-dl/issues/343 for more information.', expected=True)
|
||||||
formats = []
|
formats = []
|
||||||
formats_spec = {}
|
formats_spec = {}
|
||||||
fmt_list = video_info.get('fmt_list', [''])[0]
|
fmt_list = video_info.get('fmt_list', [''])[0]
|
||||||
|
@ -1933,7 +1816,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
dct.update(formats_spec[format_id])
|
dct.update(formats_spec[format_id])
|
||||||
|
|
||||||
# Some itags are not included in DASH manifest thus corresponding formats will
|
# Some itags are not included in DASH manifest thus corresponding formats will
|
||||||
# lack metadata (see https://github.com/ytdl-org/haruhi-dl/pull/5993).
|
# lack metadata (see https://github.com/ytdl-org/youtube-dl/pull/5993).
|
||||||
# Trying to extract metadata from url_encoded_fmt_stream_map entry.
|
# Trying to extract metadata from url_encoded_fmt_stream_map entry.
|
||||||
mobj = re.search(r'^(?P<width>\d+)[xX](?P<height>\d+)$', url_data.get('size', [''])[0])
|
mobj = re.search(r'^(?P<width>\d+)[xX](?P<height>\d+)$', url_data.get('size', [''])[0])
|
||||||
width, height = (int(mobj.group('width')), int(mobj.group('height'))) if mobj else (None, None)
|
width, height = (int(mobj.group('width')), int(mobj.group('height'))) if mobj else (None, None)
|
||||||
|
@ -2269,7 +2152,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
# Remove the formats we found through non-DASH, they
|
# Remove the formats we found through non-DASH, they
|
||||||
# contain less info and it can be wrong, because we use
|
# contain less info and it can be wrong, because we use
|
||||||
# fixed values (for example the resolution). See
|
# fixed values (for example the resolution). See
|
||||||
# https://github.com/ytdl-org/haruhi-dl/issues/5774 for an
|
# https://github.com/ytdl-org/youtube-dl/issues/5774 for an
|
||||||
# example.
|
# example.
|
||||||
formats = [f for f in formats if f['format_id'] not in dash_formats.keys()]
|
formats = [f for f in formats if f['format_id'] not in dash_formats.keys()]
|
||||||
formats.extend(dash_formats.values())
|
formats.extend(dash_formats.values())
|
||||||
|
|
Loading…
Reference in a new issue