diff --git a/yt_dlp/extractor/vimeo.py b/yt_dlp/extractor/vimeo.py index 36e594be8..cdeb1e28b 100644 --- a/yt_dlp/extractor/vimeo.py +++ b/yt_dlp/extractor/vimeo.py @@ -519,494 +519,472 @@ class VimeoIE(VimeoBaseInfoExtractor): # Non-standard embedded Vimeo player r']+src=(["\'])(?P(?:https?:)?//(?:www\.)?vimeo\.com/[0-9]+)\1', ] - _TESTS = [ - { - 'url': 'http://vimeo.com/56015672#at=0', - 'md5': '8879b6cc097e987f02484baf890129e5', - 'info_dict': { - 'id': '56015672', - 'ext': 'mp4', - 'title': "youtube-dl test video '' ä↭𝕐-BaW jenozKc", - 'description': 'md5:2d3305bad981a06ff79f027f19865021', - 'timestamp': 1355990239, - 'upload_date': '20121220', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/user7108434', - 'uploader_id': 'user7108434', - 'uploader': 'Filippo Valsorda', - 'duration': 10, - 'license': 'by-sa', - }, - 'params': { - 'format': 'best[protocol=https]', - }, - 'skip': 'No longer available', + _TESTS = [{ + 'url': 'http://vimeo.com/56015672#at=0', + 'md5': '8879b6cc097e987f02484baf890129e5', + 'info_dict': { + 'id': '56015672', + 'ext': 'mp4', + 'title': "youtube-dl test video '' ä↭𝕐-BaW jenozKc", + 'description': 'md5:2d3305bad981a06ff79f027f19865021', + 'timestamp': 1355990239, + 'upload_date': '20121220', + 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/user7108434', + 'uploader_id': 'user7108434', + 'uploader': 'Filippo Valsorda', + 'duration': 10, + 'license': 'by-sa', }, - { - 'url': 'https://player.vimeo.com/video/54469442', - 'md5': '619b811a4417aa4abe78dc653becf511', - 'note': 'Videos that embed the url in the player page', - 'info_dict': { - 'id': '54469442', - 'ext': 'mp4', - 'title': 'Kathy Sierra: Building the minimum Badass User, Business of Software 2012', - 'uploader': 'Business of Software', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/businessofsoftware', - 'uploader_id': 'businessofsoftware', - 'duration': 3610, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - }, - 'params': { - 'format': 'best[protocol=https]', - }, - 'expected_warnings': ['Failed to parse XML: not well-formed'], + 'params': { + 'format': 'best[protocol=https]', }, - { - 'url': 'http://vimeo.com/68375962', - 'md5': 'aaf896bdb7ddd6476df50007a0ac0ae7', - 'note': 'Video protected with password', - 'info_dict': { - 'id': '68375962', - 'ext': 'mp4', - 'title': 'youtube-dl password protected test video', - 'timestamp': 1371214555, - 'upload_date': '20130614', - 'release_timestamp': 1371214555, - 'release_date': '20130614', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/user18948128', - 'uploader_id': 'user18948128', - 'uploader': 'Jaime Marquínez Ferrándiz', - 'duration': 10, - 'comment_count': int, - 'like_count': int, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - }, - 'params': { - 'format': 'best[protocol=https]', - 'videopassword': 'youtube-dl', - }, - 'expected_warnings': ['Failed to parse XML: not well-formed'], + 'skip': 'No longer available', + }, { + 'url': 'https://player.vimeo.com/video/54469442', + 'md5': '619b811a4417aa4abe78dc653becf511', + 'note': 'Videos that embed the url in the player page', + 'info_dict': { + 'id': '54469442', + 'ext': 'mp4', + 'title': 'Kathy Sierra: Building the minimum Badass User, Business of Software 2012', + 'uploader': 'Business of Software', + 'uploader_id': 'businessofsoftware', + 'uploader_url': 'https://vimeo.com/businessofsoftware', + 'duration': 3610, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', }, - { - 'url': 'http://vimeo.com/channels/keypeele/75629013', - 'md5': '2f86a05afe9d7abc0b9126d229bbe15d', - 'info_dict': { - 'id': '75629013', - 'ext': 'mp4', - 'title': 'Key & Peele: Terrorist Interrogation', - 'description': 'md5:6173f270cd0c0119f22817204b3eb86c', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/atencio', - 'uploader_id': 'atencio', - 'uploader': 'Peter Atencio', - 'channel_id': 'keypeele', - 'channel_url': r're:https?://(?:www\.)?vimeo\.com/channels/keypeele', - 'timestamp': 1380339469, - 'upload_date': '20130928', - 'duration': 187, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'view_count': int, - 'comment_count': int, - 'like_count': int, - }, - 'params': {'format': 'http-1080p'}, - 'expected_warnings': ['Failed to parse XML: not well-formed'], + 'params': {'format': 'best[protocol=https]'}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + 'url': 'http://vimeo.com/68375962', + 'md5': 'aaf896bdb7ddd6476df50007a0ac0ae7', + 'note': 'Video protected with password', + 'info_dict': { + 'id': '68375962', + 'ext': 'mp4', + 'title': 'youtube-dl password protected test video', + 'timestamp': 1371214555, + 'upload_date': '20130614', + 'release_timestamp': 1371214555, + 'release_date': '20130614', + 'uploader_id': 'user18948128', + 'uploader_url': 'https://vimeo.com/user18948128', + 'uploader': 'Jaime Marquínez Ferrándiz', + 'duration': 10, + 'comment_count': int, + 'like_count': int, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', }, - { - 'url': 'http://vimeo.com/76979871', - 'note': 'Video with subtitles', - 'info_dict': { - 'id': '76979871', - 'ext': 'mp4', - 'title': 'The New Vimeo Player (You Know, For Videos)', - 'description': str, # FIXME: Dynamic SEO spam description - 'timestamp': 1381860509, - 'upload_date': '20131015', - 'release_timestamp': 1381860509, - 'release_date': '20131015', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/staff', - 'uploader_id': 'staff', - 'uploader': 'Vimeo', - 'duration': 62, - 'comment_count': int, - 'like_count': int, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'subtitles': { - 'de': 'count:2', - 'en': 'count:2', - 'es': 'count:2', - 'fr': 'count:2', - }, + 'params': { + 'format': 'best[protocol=https]', + 'videopassword': 'youtube-dl', + }, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + 'url': 'http://vimeo.com/channels/keypeele/75629013', + 'md5': '2f86a05afe9d7abc0b9126d229bbe15d', + 'info_dict': { + 'id': '75629013', + 'ext': 'mp4', + 'title': 'Key & Peele: Terrorist Interrogation', + 'description': 'md5:6173f270cd0c0119f22817204b3eb86c', + 'uploader_id': 'atencio', + 'uploader_url': 'https://vimeo.com/atencio', + 'uploader': 'Peter Atencio', + 'channel_id': 'keypeele', + 'channel_url': 'https://vimeo.com/channels/keypeele', + 'timestamp': 1380339469, + 'upload_date': '20130928', + 'duration': 187, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'view_count': int, + 'comment_count': int, + 'like_count': int, + }, + 'params': {'format': 'http-1080p'}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + 'url': 'http://vimeo.com/76979871', + 'note': 'Video with subtitles', + 'info_dict': { + 'id': '76979871', + 'ext': 'mp4', + 'title': 'The New Vimeo Player (You Know, For Videos)', + 'description': str, # FIXME: Dynamic SEO spam description + 'timestamp': 1381860509, + 'upload_date': '20131015', + 'release_timestamp': 1381860509, + 'release_date': '20131015', + 'uploader_id': 'staff', + 'uploader_url': 'https://vimeo.com/staff', + 'uploader': 'Vimeo', + 'duration': 62, + 'comment_count': int, + 'like_count': int, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'subtitles': { + 'de': 'count:2', + 'en': 'count:2', + 'es': 'count:2', + 'fr': 'count:2', }, - 'expected_warnings': [ - 'Ignoring subtitle tracks found in the HLS manifest', - 'Failed to parse XML: not well-formed', + }, + 'expected_warnings': [ + 'Ignoring subtitle tracks found in the HLS manifest', + 'Failed to parse XML: not well-formed', + ], + }, { + # from https://www.ouya.tv/game/Pier-Solar-and-the-Great-Architects/ + 'url': 'https://player.vimeo.com/video/98044508', + 'note': 'The js code contains assignments to the same variable as the config', + 'info_dict': { + 'id': '98044508', + 'ext': 'mp4', + 'title': 'Pier Solar OUYA Official Trailer', + 'uploader': 'Tulio Gonçalves', + 'uploader_id': 'user28849593', + 'uploader_url': 'https://vimeo.com/user28849593', + 'duration': 118, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + }, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + # contains Original format + 'url': 'https://vimeo.com/33951933', + # 'md5': '53c688fa95a55bf4b7293d37a89c5c53', + 'info_dict': { + 'id': '33951933', + 'ext': 'mp4', + 'title': 'FOX CLASSICS - Forever Classic ID - A Full Minute', + 'uploader': 'The DMCI', + 'uploader_id': 'dmci', + 'uploader_url': 'https://vimeo.com/dmci', + 'timestamp': 1324361742, + 'upload_date': '20111220', + 'description': 'md5:f37b4ad0f3ded6fa16f38ecde16c3c44', + 'duration': 60, + 'comment_count': int, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'like_count': int, + 'release_timestamp': 1324361742, + 'release_date': '20111220', + }, + # 'params': {'format': 'Original'}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + 'note': 'Contains source format not accessible in webpage', + 'url': 'https://vimeo.com/393756517', + # 'md5': 'c464af248b592190a5ffbb5d33f382b0', + 'info_dict': { + 'id': '393756517', + # 'ext': 'mov', + 'ext': 'mp4', + 'timestamp': 1582660091, + 'uploader_id': 'frameworkla', + 'title': 'Straight To Hell - Sabrina: Netflix', + 'uploader': 'Framework Studio', + 'upload_date': '20200225', + 'duration': 176, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'uploader_url': 'https://vimeo.com/frameworkla', + 'comment_count': int, + 'like_count': int, + 'release_timestamp': 1582660091, + 'release_date': '20200225', + }, + # 'params': {'format': 'source'}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + # only available via https://vimeo.com/channels/tributes/6213729 and + # not via https://vimeo.com/6213729 + 'url': 'https://vimeo.com/channels/tributes/6213729', + 'info_dict': { + 'id': '6213729', + 'ext': 'mp4', + 'title': 'Vimeo Tribute: The Shining', + 'uploader': 'Casey Donahue', + 'uploader_id': 'caseydonahue', + 'uploader_url': 'https://vimeo.com/caseydonahue', + 'channel_id': 'tributes', + 'channel_url': 'https://vimeo.com/channels/tributes', + 'timestamp': 1250886430, + 'upload_date': '20090821', + 'description': str, # FIXME: Dynamic SEO spam description + 'duration': 321, + 'comment_count': int, + 'view_count': int, + 'tags': 'count:4', + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'like_count': int, + }, + 'params': {'skip_download': True}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + # redirects to ondemand extractor and should be passed through it + # for successful extraction + 'url': 'https://vimeo.com/73445910', + 'info_dict': { + 'id': '73445910', + 'ext': 'mp4', + 'title': 'The Reluctant Revolutionary', + 'uploader': '10Ft Films', + 'uploader_url': 'https://vimeo.com/tenfootfilms', + 'uploader_id': 'tenfootfilms', + 'description': 'md5:0fa704e05b04f91f40b7f3ca2e801384', + 'upload_date': '20130830', + 'timestamp': 1377853339, + }, + 'params': {'skip_download': True}, + 'skip': 'this page is no longer available.', + }, { + 'url': 'https://player.vimeo.com/video/68375962', + 'md5': 'aaf896bdb7ddd6476df50007a0ac0ae7', + 'info_dict': { + 'id': '68375962', + 'ext': 'mp4', + 'title': 'youtube-dl password protected test video', + 'uploader_id': 'user18948128', + 'uploader_url': 'https://vimeo.com/user18948128', + 'uploader': 'Jaime Marquínez Ferrándiz', + 'duration': 10, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + }, + 'params': { + 'format': 'best[protocol=https]', + 'videopassword': 'youtube-dl', + }, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + 'url': 'http://vimeo.com/moogaloop.swf?clip_id=2539741', + 'only_matching': True, + }, { + 'url': 'https://vimeo.com/109815029', + 'note': 'Video not completely processed, "failed" seed status', + 'only_matching': True, + }, { + 'url': 'https://vimeo.com/groups/travelhd/videos/22439234', + 'only_matching': True, + }, { + 'url': 'https://vimeo.com/album/2632481/video/79010983', + 'only_matching': True, + }, { + 'url': 'https://vimeo.com/showcase/3253534/video/119195465', + 'note': 'A video in a password protected album (showcase)', + 'info_dict': { + 'id': '119195465', + 'ext': 'mp4', + 'title': "youtube-dl test video '' ä↭𝕐-BaW jenozKc", + 'uploader': 'Philipp Hagemeister', + 'uploader_id': 'user20132939', + 'description': str, # FIXME: Dynamic SEO spam description + 'upload_date': '20150209', + 'timestamp': 1423518307, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'duration': 10, + 'like_count': int, + 'uploader_url': 'https://vimeo.com/user20132939', + 'view_count': int, + 'comment_count': int, + }, + 'params': { + 'format': 'best[protocol=https]', + 'videopassword': 'youtube-dl', + }, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + # source file returns 403: Forbidden + 'url': 'https://vimeo.com/7809605', + 'only_matching': True, + }, { + 'note': 'Direct URL with hash', + 'url': 'https://vimeo.com/160743502/abd0e13fb4', + 'info_dict': { + 'id': '160743502', + 'ext': 'mp4', + 'uploader': 'Julian Tryba', + 'uploader_id': 'aliniamedia', + 'title': 'Harrisville New Hampshire', + 'timestamp': 1459259666, + 'upload_date': '20160329', + 'release_timestamp': 1459259666, + 'license': 'by-nc', + 'duration': 159, + 'comment_count': int, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'like_count': int, + 'uploader_url': 'https://vimeo.com/aliniamedia', + 'release_date': '20160329', + }, + 'params': {'skip_download': True}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + 'url': 'https://vimeo.com/138909882', + 'info_dict': { + 'id': '138909882', + # 'ext': 'm4v', + 'ext': 'mp4', + 'title': 'Eastnor Castle 2015 Firework Champions - The Promo!', + 'description': 'md5:9441e6829ae94f380cc6417d982f63ac', + 'uploader_id': 'fireworkchampions', + 'uploader': 'Firework Champions', + 'upload_date': '20150910', + 'timestamp': 1441916295, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'uploader_url': 'https://vimeo.com/fireworkchampions', + 'duration': 229, + 'like_count': int, + 'comment_count': int, + 'release_timestamp': 1441916295, + 'release_date': '20150910', + }, + 'params': { + 'skip_download': True, + # 'format': 'source', + }, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + 'url': 'https://vimeo.com/channels/staffpicks/143603739', + 'info_dict': { + 'id': '143603739', + 'ext': 'mp4', + 'uploader': 'Karim Huu Do', + 'timestamp': 1445846953, + 'upload_date': '20151026', + 'title': 'The Shoes - Submarine Feat. Blaine Harrison', + 'uploader_id': 'karimhd', + 'description': 'md5:8e2eea76de4504c2e8020a9bcfa1e843', + 'channel_id': 'staffpicks', + 'duration': 336, + 'comment_count': int, + 'view_count': int, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'like_count': int, + 'uploader_url': 'https://vimeo.com/karimhd', + 'channel_url': 'https://vimeo.com/channels/staffpicks', + 'tags': 'count:6', + }, + 'params': {'skip_download': 'm3u8'}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + # requires passing unlisted_hash(a52724358e) to load_download_config request + 'url': 'https://vimeo.com/392479337/a52724358e', + 'only_matching': True, + }, { + # similar, but all numeric: ID must be 581039021, not 9603038895 + # https://github.com/ytdl-org/youtube-dl/issues/29690 + 'url': 'https://vimeo.com/581039021/9603038895', + 'info_dict': { + 'id': '581039021', + 'ext': 'mp4', + 'timestamp': 1627621014, + 'release_timestamp': 1627621014, + 'duration': 976, + 'comment_count': int, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'like_count': int, + 'uploader_url': 'https://vimeo.com/txwestcapital', + 'release_date': '20210730', + 'uploader': 'Christopher Inks', + 'title': 'Thursday, July 29, 2021 BMA Evening Video Update', + 'uploader_id': 'txwestcapital', + 'upload_date': '20210730', + }, + 'params': {'skip_download': True}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + # chapters must be sorted, see: https://github.com/yt-dlp/yt-dlp/issues/5308 + 'url': 'https://player.vimeo.com/video/756714419', + 'info_dict': { + 'id': '756714419', + 'ext': 'mp4', + 'title': 'Dr Arielle Schwartz - Therapeutic yoga for optimum sleep', + 'uploader': 'Alex Howard', + 'uploader_id': 'user54729178', + 'uploader_url': 'https://vimeo.com/user54729178', + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'duration': 2636, + 'chapters': [ + {'start_time': 0, 'end_time': 10, 'title': ''}, + {'start_time': 10, 'end_time': 106, 'title': 'Welcoming Dr Arielle Schwartz'}, + {'start_time': 106, 'end_time': 305, 'title': 'What is therapeutic yoga?'}, + {'start_time': 305, 'end_time': 594, 'title': 'Vagal toning practices'}, + {'start_time': 594, 'end_time': 888, 'title': 'Trauma and difficulty letting go'}, + {'start_time': 888, 'end_time': 1059, 'title': "Dr Schwartz' insomnia experience"}, + {'start_time': 1059, 'end_time': 1471, 'title': 'A strategy for helping sleep issues'}, + {'start_time': 1471, 'end_time': 1667, 'title': 'Yoga nidra'}, + {'start_time': 1667, 'end_time': 2121, 'title': 'Wisdom in stillness'}, + {'start_time': 2121, 'end_time': 2386, 'title': 'What helps us be more able to let go?'}, + {'start_time': 2386, 'end_time': 2510, 'title': 'Practical tips to help ourselves'}, + {'start_time': 2510, 'end_time': 2636, 'title': 'Where to find out more'}, ], }, - { - # from https://www.ouya.tv/game/Pier-Solar-and-the-Great-Architects/ - 'url': 'https://player.vimeo.com/video/98044508', - 'note': 'The js code contains assignments to the same variable as the config', - 'info_dict': { - 'id': '98044508', - 'ext': 'mp4', - 'title': 'Pier Solar OUYA Official Trailer', - 'uploader': 'Tulio Gonçalves', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/user28849593', - 'uploader_id': 'user28849593', - 'duration': 118, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - }, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - 'params': {'extractor_args': {'generic': {'impersonate': ['chrome']}}}, + 'params': { + 'http_headers': {'Referer': 'https://sleepsuperconference.com'}, + 'skip_download': 'm3u8', }, - { - # contains Original format - 'url': 'https://vimeo.com/33951933', - # 'md5': '53c688fa95a55bf4b7293d37a89c5c53', - 'info_dict': { - 'id': '33951933', - 'ext': 'mp4', - 'title': 'FOX CLASSICS - Forever Classic ID - A Full Minute', - 'uploader': 'The DMCI', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/dmci', - 'uploader_id': 'dmci', - 'timestamp': 1324361742, - 'upload_date': '20111220', - 'description': 'md5:f37b4ad0f3ded6fa16f38ecde16c3c44', - 'duration': 60, - 'comment_count': int, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'like_count': int, - 'release_timestamp': 1324361742, - 'release_date': '20111220', - }, - # 'params': {'format': 'Original'}, - 'expected_warnings': ['Failed to parse XML: not well-formed'], + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + # vimeo.com URL with unlisted hash and Original format + 'url': 'https://vimeo.com/144579403/ec02229140', + # 'md5': '6b662c2884e0373183fbde2a0d15cb78', + 'info_dict': { + 'id': '144579403', + 'ext': 'mp4', + 'title': 'SALESMANSHIP', + 'description': 'md5:4338302f347a1ff8841b4a3aecaa09f0', + 'uploader': 'Off the Picture Pictures', + 'uploader_id': 'offthepicturepictures', + 'uploader_url': 'https://vimeo.com/offthepicturepictures', + 'duration': 669, + 'upload_date': '20151104', + 'timestamp': 1446607180, + 'release_date': '20151104', + 'release_timestamp': 1446607180, + 'like_count': int, + 'comment_count': int, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', }, - { - 'note': 'Contains source format not accessible in webpage', - 'url': 'https://vimeo.com/393756517', - # 'md5': 'c464af248b592190a5ffbb5d33f382b0', - 'info_dict': { - 'id': '393756517', - # 'ext': 'mov', - 'ext': 'mp4', - 'timestamp': 1582660091, - 'uploader_id': 'frameworkla', - 'title': 'Straight To Hell - Sabrina: Netflix', - 'uploader': 'Framework Studio', - 'upload_date': '20200225', - 'duration': 176, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'uploader_url': 'https://vimeo.com/frameworkla', - 'comment_count': int, - 'like_count': int, - 'release_timestamp': 1582660091, - 'release_date': '20200225', - }, - # 'params': {'format': 'source'}, - 'expected_warnings': ['Failed to parse XML: not well-formed'], + # 'params': {'format': 'Original'}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + }, { + # player.vimeo.com URL with source format + 'url': 'https://player.vimeo.com/video/859028877', + # 'md5': '19ca3d2463441dee2d2f0671ac2916a2', + 'info_dict': { + 'id': '859028877', + 'ext': 'mp4', + 'title': 'Ariana Grande - Honeymoon Avenue (Live from London)', + 'uploader': 'Raja Virdi', + 'uploader_id': 'rajavirdi', + 'uploader_url': 'https://vimeo.com/rajavirdi', + 'duration': 300, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', }, - { - # only available via https://vimeo.com/channels/tributes/6213729 and - # not via https://vimeo.com/6213729 - 'url': 'https://vimeo.com/channels/tributes/6213729', - 'info_dict': { - 'id': '6213729', - 'ext': 'mp4', - 'title': 'Vimeo Tribute: The Shining', - 'uploader': 'Casey Donahue', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/caseydonahue', - 'uploader_id': 'caseydonahue', - 'channel_url': r're:https?://(?:www\.)?vimeo\.com/channels/tributes', - 'channel_id': 'tributes', - 'timestamp': 1250886430, - 'upload_date': '20090821', - 'description': str, # FIXME: Dynamic SEO spam description - 'duration': 321, - 'comment_count': int, - 'view_count': int, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'like_count': int, - 'tags': ['[the shining', 'vimeohq', 'cv', 'vimeo tribute]'], - }, - 'params': { - 'skip_download': True, - }, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - }, - { - # redirects to ondemand extractor and should be passed through it - # for successful extraction - 'url': 'https://vimeo.com/73445910', - 'info_dict': { - 'id': '73445910', - 'ext': 'mp4', - 'title': 'The Reluctant Revolutionary', - 'uploader': '10Ft Films', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/tenfootfilms', - 'uploader_id': 'tenfootfilms', - 'description': 'md5:0fa704e05b04f91f40b7f3ca2e801384', - 'upload_date': '20130830', - 'timestamp': 1377853339, - }, - 'params': { - 'skip_download': True, - }, - 'skip': 'this page is no longer available.', - }, - { - 'url': 'https://player.vimeo.com/video/68375962', - 'md5': 'aaf896bdb7ddd6476df50007a0ac0ae7', - 'info_dict': { - 'id': '68375962', - 'ext': 'mp4', - 'title': 'youtube-dl password protected test video', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/user18948128', - 'uploader_id': 'user18948128', - 'uploader': 'Jaime Marquínez Ferrándiz', - 'duration': 10, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - }, - 'params': { - 'format': 'best[protocol=https]', - 'videopassword': 'youtube-dl', - }, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - }, - { - 'url': 'http://vimeo.com/moogaloop.swf?clip_id=2539741', - 'only_matching': True, - }, - { - 'url': 'https://vimeo.com/109815029', - 'note': 'Video not completely processed, "failed" seed status', - 'only_matching': True, - }, - { - 'url': 'https://vimeo.com/groups/travelhd/videos/22439234', - 'only_matching': True, - }, - { - 'url': 'https://vimeo.com/album/2632481/video/79010983', - 'only_matching': True, - }, - { - 'url': 'https://vimeo.com/showcase/3253534/video/119195465', - 'note': 'A video in a password protected album (showcase)', - 'info_dict': { - 'id': '119195465', - 'ext': 'mp4', - 'title': "youtube-dl test video '' ä↭𝕐-BaW jenozKc", - 'uploader': 'Philipp Hagemeister', - 'uploader_id': 'user20132939', - 'description': str, # FIXME: Dynamic SEO spam description - 'upload_date': '20150209', - 'timestamp': 1423518307, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'duration': 10, - 'like_count': int, - 'uploader_url': 'https://vimeo.com/user20132939', - 'view_count': int, - 'comment_count': int, - }, - 'params': { - 'format': 'best[protocol=https]', - 'videopassword': 'youtube-dl', - }, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - }, - { - # source file returns 403: Forbidden - 'url': 'https://vimeo.com/7809605', - 'only_matching': True, - }, - { - 'note': 'Direct URL with hash', - 'url': 'https://vimeo.com/160743502/abd0e13fb4', - 'info_dict': { - 'id': '160743502', - 'ext': 'mp4', - 'uploader': 'Julian Tryba', - 'uploader_id': 'aliniamedia', - 'title': 'Harrisville New Hampshire', - 'timestamp': 1459259666, - 'upload_date': '20160329', - 'release_timestamp': 1459259666, - 'license': 'by-nc', - 'duration': 159, - 'comment_count': int, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'like_count': int, - 'uploader_url': 'https://vimeo.com/aliniamedia', - 'release_date': '20160329', - }, - 'params': {'skip_download': True}, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - }, - { - 'url': 'https://vimeo.com/138909882', - 'info_dict': { - 'id': '138909882', - # 'ext': 'm4v', - 'ext': 'mp4', - 'title': 'Eastnor Castle 2015 Firework Champions - The Promo!', - 'description': 'md5:9441e6829ae94f380cc6417d982f63ac', - 'uploader_id': 'fireworkchampions', - 'uploader': 'Firework Champions', - 'upload_date': '20150910', - 'timestamp': 1441916295, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'uploader_url': 'https://vimeo.com/fireworkchampions', - 'duration': 229, - 'like_count': int, - 'comment_count': int, - 'release_timestamp': 1441916295, - 'release_date': '20150910', - }, - 'params': { - 'skip_download': True, - # 'format': 'source', - }, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - }, - { - 'url': 'https://vimeo.com/channels/staffpicks/143603739', - 'info_dict': { - 'id': '143603739', - 'ext': 'mp4', - 'uploader': 'Karim Huu Do', - 'timestamp': 1445846953, - 'upload_date': '20151026', - 'title': 'The Shoes - Submarine Feat. Blaine Harrison', - 'uploader_id': 'karimhd', - 'description': 'md5:8e2eea76de4504c2e8020a9bcfa1e843', - 'channel_id': 'staffpicks', - 'duration': 336, - 'comment_count': int, - 'view_count': int, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'like_count': int, - 'uploader_url': 'https://vimeo.com/karimhd', - 'channel_url': 'https://vimeo.com/channels/staffpicks', - 'tags': 'count:6', - }, - 'params': {'skip_download': 'm3u8'}, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - }, - { - # requires passing unlisted_hash(a52724358e) to load_download_config request - 'url': 'https://vimeo.com/392479337/a52724358e', - 'only_matching': True, - }, - { - # similar, but all numeric: ID must be 581039021, not 9603038895 - # issue #29690 - 'url': 'https://vimeo.com/581039021/9603038895', - 'info_dict': { - 'id': '581039021', - 'ext': 'mp4', - 'timestamp': 1627621014, - 'release_timestamp': 1627621014, - 'duration': 976, - 'comment_count': int, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'like_count': int, - 'uploader_url': 'https://vimeo.com/txwestcapital', - 'release_date': '20210730', - 'uploader': 'Christopher Inks', - 'title': 'Thursday, July 29, 2021 BMA Evening Video Update', - 'uploader_id': 'txwestcapital', - 'upload_date': '20210730', - }, - 'params': { - 'skip_download': True, - }, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - }, - { - # chapters must be sorted, see: https://github.com/yt-dlp/yt-dlp/issues/5308 - 'url': 'https://player.vimeo.com/video/756714419', - 'info_dict': { - 'id': '756714419', - 'ext': 'mp4', - 'title': 'Dr Arielle Schwartz - Therapeutic yoga for optimum sleep', - 'uploader': 'Alex Howard', - 'uploader_id': 'user54729178', - 'uploader_url': 'https://vimeo.com/user54729178', - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - 'duration': 2636, - 'chapters': [ - {'start_time': 0, 'end_time': 10, 'title': ''}, - {'start_time': 10, 'end_time': 106, 'title': 'Welcoming Dr Arielle Schwartz'}, - {'start_time': 106, 'end_time': 305, 'title': 'What is therapeutic yoga?'}, - {'start_time': 305, 'end_time': 594, 'title': 'Vagal toning practices'}, - {'start_time': 594, 'end_time': 888, 'title': 'Trauma and difficulty letting go'}, - {'start_time': 888, 'end_time': 1059, 'title': "Dr Schwartz' insomnia experience"}, - {'start_time': 1059, 'end_time': 1471, 'title': 'A strategy for helping sleep issues'}, - {'start_time': 1471, 'end_time': 1667, 'title': 'Yoga nidra'}, - {'start_time': 1667, 'end_time': 2121, 'title': 'Wisdom in stillness'}, - {'start_time': 2121, 'end_time': 2386, 'title': 'What helps us be more able to let go?'}, - {'start_time': 2386, 'end_time': 2510, 'title': 'Practical tips to help ourselves'}, - {'start_time': 2510, 'end_time': 2636, 'title': 'Where to find out more'}, - ], - }, - 'params': { - 'http_headers': {'Referer': 'https://sleepsuperconference.com'}, - 'skip_download': 'm3u8', - }, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - }, - { - # vimeo.com URL with unlisted hash and Original format - 'url': 'https://vimeo.com/144579403/ec02229140', - # 'md5': '6b662c2884e0373183fbde2a0d15cb78', - 'info_dict': { - 'id': '144579403', - 'ext': 'mp4', - 'title': 'SALESMANSHIP', - 'description': 'md5:4338302f347a1ff8841b4a3aecaa09f0', - 'uploader': 'Off the Picture Pictures', - 'uploader_id': 'offthepicturepictures', - 'uploader_url': 'https://vimeo.com/offthepicturepictures', - 'duration': 669, - 'upload_date': '20151104', - 'timestamp': 1446607180, - 'release_date': '20151104', - 'release_timestamp': 1446607180, - 'like_count': int, - 'comment_count': int, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - }, - # 'params': {'format': 'Original'}, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - }, - { - # player.vimeo.com URL with source format - 'url': 'https://player.vimeo.com/video/859028877', - # 'md5': '19ca3d2463441dee2d2f0671ac2916a2', - 'info_dict': { - 'id': '859028877', - 'ext': 'mp4', - 'title': 'Ariana Grande - Honeymoon Avenue (Live from London)', - 'uploader': 'Raja Virdi', - 'uploader_id': 'rajavirdi', - 'uploader_url': 'https://vimeo.com/rajavirdi', - 'duration': 300, - 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', - }, - # 'params': {'format': 'source'}, - 'expected_warnings': ['Failed to parse XML: not well-formed'], - 'params': {'skip_download': 'm3u8'}, - }, - { - # user playlist alias -> https://vimeo.com/258705797 - 'url': 'https://vimeo.com/user26785108/newspiritualguide', - 'only_matching': True, - }, - # https://gettingthingsdone.com/workflowmap/ - # vimeo embed with check-password page protected by Referer header - ] + # 'params': {'format': 'source'}, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + 'params': {'skip_download': 'm3u8'}, + }, { + # user playlist alias -> https://vimeo.com/258705797 + 'url': 'https://vimeo.com/user26785108/newspiritualguide', + 'only_matching': True, + }] _WEBPAGE_TESTS = [{ + # Referer & password-protected + # https://github.com/yt-dlp/yt-dlp/commit/a1a460759815414c6194bc921ac77a5533b6e02e + 'url': 'https://gettingthingsdone.com/workflowmap/', + 'info_dict': { + 'id': '105375912', + 'ext': 'mp4', + 'title': 'WORKFLOW MAP', + 'duration': 1950, + 'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+', + 'uploader': 'GTD', + 'uploader_id': 'gettingthingsdone', + 'uploader_url': 'https://vimeo.com/gettingthingsdone', + }, + 'expected_warnings': ['Failed to parse XML: not well-formed'], + 'skip': 'Password protected', + }, { 'url': 'https://www.gsd.harvard.edu/event/i-m-pei-a-centennial-celebration/', 'info_dict': { 'id': '855172304', @@ -1399,8 +1377,8 @@ class VimeoOndemandIE(VimeoIE): # XXX: Do not subclass from concrete IE 'ext': 'mp4', 'title': 'המעבדה - במאי יותם פלדמן', 'uploader': 'גם סרטים', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/gumfilms', 'uploader_id': 'gumfilms', + 'uploader_url': 'https://vimeo.com/gumfilms', 'description': 'md5:aeeba3dbd4d04b0fa98a4fdc9c639998', 'upload_date': '20140906', 'timestamp': 1410032453, @@ -1411,9 +1389,7 @@ class VimeoOndemandIE(VimeoIE): # XXX: Do not subclass from concrete IE 'view_count': int, 'like_count': int, }, - 'params': { - 'format': 'best[protocol=https]', - }, + 'params': {'format': 'best[protocol=https]'}, 'expected_warnings': ['Failed to parse XML: not well-formed'], }, { # requires Referer to be passed along with og:video:url @@ -1423,8 +1399,8 @@ class VimeoOndemandIE(VimeoIE): # XXX: Do not subclass from concrete IE 'ext': 'mp4', 'title': 'Rävlock, rätt läte på rätt plats', 'uploader': 'Lindroth & Norin', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/lindrothnorin', 'uploader_id': 'lindrothnorin', + 'uploader_url': 'https://vimeo.com/lindrothnorin', 'description': 'md5:c3c46a90529612c8279fb6af803fc0df', 'upload_date': '20150502', 'timestamp': 1430586422, @@ -1435,9 +1411,7 @@ class VimeoOndemandIE(VimeoIE): # XXX: Do not subclass from concrete IE 'like_count': int, 'tags': 'count:5', }, - 'params': { - 'skip_download': True, - }, + 'params': {'skip_download': True}, 'expected_warnings': ['Failed to parse XML: not well-formed'], }, { 'url': 'https://vimeo.com/ondemand/nazmaalik', @@ -1550,9 +1524,7 @@ class VimeoAlbumIE(VimeoBaseInfoExtractor): 'id': '3253534', }, 'playlist_count': 1, - 'params': { - 'videopassword': 'youtube-dl', - }, + 'params': {'videopassword': 'youtube-dl'}, }] _PAGE_SIZE = 100 @@ -1695,9 +1667,7 @@ class VimeoReviewIE(VimeoBaseInfoExtractor): 'uploader': 'TMB', 'uploader_id': 'user37284429', }, - 'params': { - 'videopassword': 'holygrail', - }, + 'params': {'videopassword': 'holygrail'}, 'skip': 'video gone', }] @@ -1816,8 +1786,8 @@ class VimeoProIE(VimeoBaseInfoExtractor): 'info_dict': { 'id': '68093876', 'ext': 'mp4', - 'uploader_url': r're:https?://(?:www\.)?vimeo\.com/openstreetmapus', 'uploader_id': 'openstreetmapus', + 'uploader_url': 'https://vimeo.com/openstreetmapus', 'uploader': 'OpenStreetMap US', 'title': 'Andy Allan - Putting the Carto into OpenStreetMap Cartography', 'description': 'md5:8cf69a1a435f2d763f4adf601e9c3125', @@ -1831,9 +1801,7 @@ class VimeoProIE(VimeoBaseInfoExtractor): 'release_timestamp': 1370907556, 'release_date': '20130610', }, - 'params': { - 'format': 'best[protocol=https]', - }, + 'params': {'format': 'best[protocol=https]'}, 'expected_warnings': ['Failed to parse XML: not well-formed'], }, { # password-protected VimeoPro page with Vimeo player embed