1
0
mirror of https://github.com/yt-dlp/yt-dlp.git synced 2025-07-23 21:58:29 +00:00

VimeoIE, VHXEmbedIE

This commit is contained in:
doe1080 2025-07-16 16:27:39 +09:00
parent 915fb7f664
commit 3dcfb26377
2 changed files with 72 additions and 98 deletions

View File

@ -1481,21 +1481,6 @@ class GenericIE(InfoExtractor):
'view_count': int,
},
'params': {'skip_download': True},
}, {
# ✅110
# VHXEmbedIE
'url': 'https://demo.vhx.tv/packages/behind-the-scenes-with-sasha/videos/hard-work',
'info_dict': {
'id': '2251259',
'ext': 'mp4',
'title': 'Untitled',
'duration': 30,
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'uploader': 'OTT Videos',
'uploader_id': 'user80538407',
'uploader_url': 'https://vimeo.com/user80538407',
},
'expected_warnings': ['Failed to parse XML'],
}, {
# 🔍111
# ViddlerIE
@ -1541,45 +1526,6 @@ class GenericIE(InfoExtractor):
'title': '#whilewewatch',
},
'skip': 'Invalid URL',
}, {
# ✅115
# VimeoIE
'url': 'https://www.gsd.harvard.edu/event/i-m-pei-a-centennial-celebration/',
'info_dict': {
'id': '855172304',
'ext': 'mp4',
'title': 'I. M. Pei: A Centennial Celebration',
'duration': 6073,
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'uploader': 'Harvard GSD',
'uploader_id': 'harvardgsd',
'uploader_url': 'https://vimeo.com/harvardgsd',
},
'expected_warnings': ['Failed to parse XML'],
'params': {
'extractor_args': {'generic': {'impersonate': ['chrome']}},
'skip_download': 'm3u8',
},
}, {
# 🆑116; duplicate of 115
# VimeoIE
'url': 'https://openclassrooms.com/en/courses/3314571-understanding-the-web',
'info_dict': {
'id': '148867247',
'ext': 'mp4',
'title': 'Understanding the web - Teaser',
},
'skip': 'Site changed',
}, {
# 🆑117; duplicate of 115
# VimeoIE
'url': 'http://www.esa.int/Our_Activities/Space_Science/Rosetta/Philae_comet_touch-down_webcast',
'info_dict': {
'id': '67864563',
'ext': 'flv',
'title': 'Rosetta #CometLanding webcast HL 10',
},
'skip': 'Invalid URL',
}, {
# ✅124
# YoutubeIE

View File

@ -553,7 +553,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'uploader_url': r're:https?://(?:www\.)?vimeo\.com/businessofsoftware',
'uploader_id': 'businessofsoftware',
'duration': 3610,
'thumbnail': 'https://i.vimeocdn.com/video/376682406-f34043e7b766af6bef2af81366eacd6724f3fc3173179a11a97a1e26587c9529-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
},
'params': {
'format': 'best[protocol=https]',
@ -578,8 +578,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'duration': 10,
'comment_count': int,
'like_count': int,
'view_count': int,
'thumbnail': 'https://i.vimeocdn.com/video/440665496-b2c5aee2b61089442c794f64113a8e8f7d5763c3e6b3ebfaf696ae6413f8b1f4-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
},
'params': {
'format': 'best[protocol=https]',
@ -603,7 +602,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'timestamp': 1380339469,
'upload_date': '20130928',
'duration': 187,
'thumbnail': 'https://i.vimeocdn.com/video/450239872-a05512d9b1e55d707a7c04365c10980f327b06d966351bc403a5d5d65c95e572-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'view_count': int,
'comment_count': int,
'like_count': int,
@ -629,12 +628,12 @@ class VimeoIE(VimeoBaseInfoExtractor):
'duration': 62,
'comment_count': int,
'like_count': int,
'thumbnail': 'https://i.vimeocdn.com/video/452001751-8216e0571c251a09d7a8387550942d89f7f86f6398f8ed886e639b0dd50d3c90-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'subtitles': {
'de': 'count:3',
'en': 'count:3',
'es': 'count:3',
'fr': 'count:3',
'de': 'count:2',
'en': 'count:2',
'es': 'count:2',
'fr': 'count:2',
},
},
'expected_warnings': [
@ -654,9 +653,10 @@ class VimeoIE(VimeoBaseInfoExtractor):
'uploader_url': r're:https?://(?:www\.)?vimeo\.com/user28849593',
'uploader_id': 'user28849593',
'duration': 118,
'thumbnail': 'https://i.vimeocdn.com/video/478636036-c18440305ef3df9decfb6bf207a61fe39d2d17fa462a96f6f2d93d30492b037d-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
},
'expected_warnings': ['Failed to parse XML: not well-formed'],
'params': {'extractor_args': {'generic': {'impersonate': ['chrome']}}},
},
{
# contains Original format
@ -674,8 +674,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'description': 'md5:f37b4ad0f3ded6fa16f38ecde16c3c44',
'duration': 60,
'comment_count': int,
'view_count': int,
'thumbnail': 'https://i.vimeocdn.com/video/231174622-dd07f015e9221ff529d451e1cc31c982b5d87bfafa48c4189b1da72824ee289a-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'like_count': int,
'release_timestamp': 1324361742,
'release_date': '20111220',
@ -697,7 +696,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'uploader': 'Framework Studio',
'upload_date': '20200225',
'duration': 176,
'thumbnail': 'https://i.vimeocdn.com/video/859377297-836494a4ef775e9d4edbace83937d9ad34dc846c688c0c419c0e87f7ab06c4b3-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'uploader_url': 'https://vimeo.com/frameworkla',
'comment_count': int,
'like_count': int,
@ -726,7 +725,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'duration': 321,
'comment_count': int,
'view_count': int,
'thumbnail': 'https://i.vimeocdn.com/video/22728298-bfc22146f930de7cf497821c7b0b9f168099201ecca39b00b6bd31fcedfca7a6-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'like_count': int,
'tags': ['[the shining', 'vimeohq', 'cv', 'vimeo tribute]'],
},
@ -766,7 +765,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'uploader_id': 'user18948128',
'uploader': 'Jaime Marquínez Ferrándiz',
'duration': 10,
'thumbnail': 'https://i.vimeocdn.com/video/440665496-b2c5aee2b61089442c794f64113a8e8f7d5763c3e6b3ebfaf696ae6413f8b1f4-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
},
'params': {
'format': 'best[protocol=https]',
@ -803,7 +802,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'description': str, # FIXME: Dynamic SEO spam description
'upload_date': '20150209',
'timestamp': 1423518307,
'thumbnail': r're:https://i\.vimeocdn\.com/video/default',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'duration': 10,
'like_count': int,
'uploader_url': 'https://vimeo.com/user20132939',
@ -836,11 +835,10 @@ class VimeoIE(VimeoBaseInfoExtractor):
'license': 'by-nc',
'duration': 159,
'comment_count': int,
'thumbnail': 'https://i.vimeocdn.com/video/562802436-585eeb13b5020c6ac0f171a2234067938098f84737787df05ff0d767f6d54ee9-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'like_count': int,
'uploader_url': 'https://vimeo.com/aliniamedia',
'release_date': '20160329',
'view_count': int,
},
'params': {'skip_download': True},
'expected_warnings': ['Failed to parse XML: not well-formed'],
@ -857,10 +855,9 @@ class VimeoIE(VimeoBaseInfoExtractor):
'uploader': 'Firework Champions',
'upload_date': '20150910',
'timestamp': 1441916295,
'thumbnail': 'https://i.vimeocdn.com/video/534715882-6ff8e4660cbf2fea68282876d8d44f318825dfe572cc4016e73b3266eac8ae3a-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'uploader_url': 'https://vimeo.com/fireworkchampions',
'duration': 229,
'view_count': int,
'like_count': int,
'comment_count': int,
'release_timestamp': 1441916295,
@ -887,7 +884,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'duration': 336,
'comment_count': int,
'view_count': int,
'thumbnail': 'https://i.vimeocdn.com/video/541243181-b593db36a16db2f0096f655da3f5a4dc46b8766d77b0f440df937ecb0c418347-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'like_count': int,
'uploader_url': 'https://vimeo.com/karimhd',
'channel_url': 'https://vimeo.com/channels/staffpicks',
@ -912,7 +909,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'release_timestamp': 1627621014,
'duration': 976,
'comment_count': int,
'thumbnail': 'https://i.vimeocdn.com/video/1202249320-4ddb2c30398c0dc0ee059172d1bd5ea481ad12f0e0e3ad01d2266f56c744b015-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'like_count': int,
'uploader_url': 'https://vimeo.com/txwestcapital',
'release_date': '20210730',
@ -936,7 +933,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
'uploader': 'Alex Howard',
'uploader_id': 'user54729178',
'uploader_url': 'https://vimeo.com/user54729178',
'thumbnail': r're:https://i\.vimeocdn\.com/video/1520099929-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'duration': 2636,
'chapters': [
{'start_time': 0, 'end_time': 10, 'title': '<Untitled Chapter 1>'},
@ -977,9 +974,8 @@ class VimeoIE(VimeoBaseInfoExtractor):
'release_date': '20151104',
'release_timestamp': 1446607180,
'like_count': int,
'view_count': int,
'comment_count': int,
'thumbnail': r're:https://i\.vimeocdn\.com/video/1018638656-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
},
# 'params': {'format': 'Original'},
'expected_warnings': ['Failed to parse XML: not well-formed'],
@ -996,10 +992,11 @@ class VimeoIE(VimeoBaseInfoExtractor):
'uploader_id': 'rajavirdi',
'uploader_url': 'https://vimeo.com/rajavirdi',
'duration': 300,
'thumbnail': r're:https://i\.vimeocdn\.com/video/1716727772-[\da-f]+-d',
'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
@ -1009,6 +1006,24 @@ class VimeoIE(VimeoBaseInfoExtractor):
# https://gettingthingsdone.com/workflowmap/
# vimeo embed with check-password page protected by Referer header
]
_WEBPAGE_TESTS = [{
'url': 'https://www.gsd.harvard.edu/event/i-m-pei-a-centennial-celebration/',
'info_dict': {
'id': '855172304',
'ext': 'mp4',
'title': 'I. M. Pei: A Centennial Celebration',
'duration': 6073,
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'uploader': 'Harvard GSD',
'uploader_id': 'harvardgsd',
'uploader_url': 'https://vimeo.com/harvardgsd',
},
'expected_warnings': ['Failed to parse XML: not well-formed'],
'params': {
'extractor_args': {'generic': {'impersonate': ['chrome']}},
'skip_download': 'm3u8',
},
}]
@classmethod
def _extract_embed_urls(cls, url, webpage):
@ -1389,7 +1404,7 @@ class VimeoOndemandIE(VimeoIE): # XXX: Do not subclass from concrete IE
'description': 'md5:aeeba3dbd4d04b0fa98a4fdc9c639998',
'upload_date': '20140906',
'timestamp': 1410032453,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'comment_count': int,
'license': 'https://creativecommons.org/licenses/by-nc-nd/3.0/',
'duration': 53,
@ -1416,7 +1431,7 @@ class VimeoOndemandIE(VimeoIE): # XXX: Do not subclass from concrete IE
'duration': 121,
'comment_count': int,
'view_count': int,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'like_count': int,
'tags': 'count:5',
},
@ -1637,7 +1652,7 @@ class VimeoReviewIE(VimeoBaseInfoExtractor):
'uploader_id': 'user170863801',
'uploader_url': 'https://vimeo.com/user170863801',
'duration': 30,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
},
'params': {'skip_download': 'm3u8'},
'expected_warnings': ['Failed to parse XML: not well-formed'],
@ -1652,7 +1667,7 @@ class VimeoReviewIE(VimeoBaseInfoExtractor):
'uploader_id': 'user21297594',
'description': "Comedian Dick Hardwick's five minute demo filmed in front of a live theater audience.\nEdit by Doug Mattocks",
'duration': 304,
'thumbnail': 'https://i.vimeocdn.com/video/450115033-43303819d9ebe24c2630352e18b7056d25197d09b3ae901abdac4c4f1d68de71-d_1280',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'uploader_url': 'https://vimeo.com/user21297594',
},
'skip': '404 Not Found',
@ -1666,7 +1681,7 @@ class VimeoReviewIE(VimeoBaseInfoExtractor):
'title': 're:(?i)^Death by dogma versus assembling agile . Sander Hoogendoorn',
'uploader': 'DevWeek Events',
'duration': 2773,
'thumbnail': r're:^https?://.*\.jpg$',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'uploader_id': 'user22258446',
},
'skip': 'video gone',
@ -1757,6 +1772,20 @@ class VHXEmbedIE(VimeoBaseInfoExtractor):
IE_NAME = 'vhx:embed'
_VALID_URL = r'https?://embed\.vhx\.tv/videos/(?P<id>\d+)'
_EMBED_REGEX = [r'<iframe[^>]+src="(?P<url>https?://embed\.vhx\.tv/videos/\d+[^"]*)"']
_WEBPAGE_TESTS = [{
'url': 'https://demo.vhx.tv/packages/behind-the-scenes-with-sasha/videos/hard-work',
'info_dict': {
'id': '2251259',
'ext': 'mp4',
'title': 'Untitled',
'duration': 30,
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'uploader': 'OTT Videos',
'uploader_id': 'user80538407',
'uploader_url': 'https://vimeo.com/user80538407',
},
'expected_warnings': ['Failed to parse XML: not well-formed'],
}]
@classmethod
def _extract_embed_urls(cls, url, webpage):
@ -1796,8 +1825,7 @@ class VimeoProIE(VimeoBaseInfoExtractor):
'upload_date': '20130610',
'timestamp': 1370907556,
'license': 'by',
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'view_count': int,
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'comment_count': int,
'like_count': int,
'release_timestamp': 1370907556,
@ -1814,7 +1842,7 @@ class VimeoProIE(VimeoBaseInfoExtractor):
'id': '764543723',
'ext': 'mp4',
'title': 'Mechanische Systeme in Perfektion: Realität erfassen, Innovation treiben',
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'description': 'md5:2a9d195cd1b0f6f79827107dc88c2420',
'uploader': 'CADFEM',
'uploader_id': 'cadfem',
@ -1890,7 +1918,7 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
'comment_count': int,
'like_count': int,
'duration': 9810,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'timestamp': 1747502974,
'upload_date': '20250517',
'release_timestamp': 1747502998,
@ -1912,7 +1940,7 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
'uploader_id': 'mitmedialab',
'uploader_url': 'https://vimeo.com/mitmedialab',
'duration': 23235,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'chapters': 'count:37',
'release_timestamp': 1744290000,
'release_date': '20250410',
@ -1938,7 +1966,7 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
'comment_count': int,
'like_count': int,
'duration': 4962,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'timestamp': 1736702464,
'upload_date': '20250112',
'release_timestamp': 1736702543,
@ -1951,7 +1979,7 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
# "24/7" livestream
'url': 'https://vimeo.com/event/4768062',
'info_dict': {
'id': '1079901414',
'id': '1097650937',
'ext': 'mp4',
'display_id': '4768062',
'title': r're:GRACELAND CAM \d{4}-\d{2}-\d{2} \d{2}:\d{2}$',
@ -1959,8 +1987,8 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
'uploader': 'Elvis Presley\'s Graceland',
'uploader_id': 'visitgraceland',
'uploader_url': 'https://vimeo.com/visitgraceland',
'release_timestamp': 1745975450,
'release_date': '20250430',
'release_timestamp': 1751396691,
'release_date': '20250701',
'live_status': 'is_live',
},
'params': {'skip_download': 'livestream'},
@ -1979,7 +2007,7 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
'comment_count': int,
'like_count': int,
'duration': 3961,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'timestamp': 1716408008,
'upload_date': '20240522',
'release_timestamp': 1716408062,
@ -2003,7 +2031,7 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
'comment_count': int,
'like_count': int,
'duration': 4466,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'timestamp': 1612228466,
'upload_date': '20210202',
'release_timestamp': 1612228538,
@ -2026,7 +2054,7 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
'comment_count': int,
'like_count': int,
'duration': 33115,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'timestamp': 1740261836,
'upload_date': '20250222',
'release_timestamp': 1740261873,
@ -2077,7 +2105,7 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
'uploader_id': 'mitmedialab',
'uploader_url': 'https://vimeo.com/mitmedialab',
'duration': 23235,
'thumbnail': r're:https://i\.vimeocdn\.com/video/\d+-[\da-f]+-d',
'thumbnail': r're:https?://i\.vimeocdn\.com/video/.+',
'chapters': 'count:37',
'release_timestamp': 1744290000,
'release_date': '20250410',