@ -544,8 +544,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
# Non-standard embedded Vimeo player
r ' <video[^>]+src=([ " \' ])(?P<url>(?:https?:)?//(?:www \ .)?vimeo \ .com/[0-9]+) \ 1 ' ,
]
_TESTS = [
{
_TESTS = [ {
' url ' : ' http://vimeo.com/56015672#at=0 ' ,
' md5 ' : ' 8879b6cc097e987f02484baf890129e5 ' ,
' info_dict ' : {
@ -565,8 +564,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
' format ' : ' best[protocol=https] ' ,
} ,
' skip ' : ' No longer available ' ,
} ,
{
} , {
' url ' : ' https://player.vimeo.com/video/54469442 ' ,
' md5 ' : ' 619b811a4417aa4abe78dc653becf511 ' ,
' note ' : ' Videos that embed the url in the player page ' ,
@ -575,17 +573,14 @@ class VimeoIE(VimeoBaseInfoExtractor):
' 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 ' ,
' uploader_url ' : ' https://vimeo.com/businessofsoftware ' ,
' duration ' : 3610 ,
' thumbnail ' : ' https://i.vimeocdn.com/video/376682406-f34043e7b766af6bef2af81366eacd6724f3fc3173179a11a97a1e26587c9529-d ' ,
} ,
' params ' : {
' format ' : ' best[protocol=https] ' ,
' thumbnail ' : r ' re:https?://i \ .vimeocdn \ .com/video/.+ ' ,
} ,
' 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 ' ,
@ -597,22 +592,20 @@ class VimeoIE(VimeoBaseInfoExtractor):
' upload_date ' : ' 20130614 ' ,
' release_timestamp ' : 1371214555 ,
' release_date ' : ' 20130614 ' ,
' uploader_url ' : r ' re:https?://(?:www \ .)?vimeo \ .com/user18948128 ' ,
' uploader_id ' : ' user18948128 ' ,
' uploader_url ' : ' https://vimeo.com/user18948128 ' ,
' uploader ' : ' Jaime Marquínez Ferrándiz ' ,
' 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] ' ,
' videopassword ' : ' youtube-dl ' ,
} ,
' expected_warnings ' : [ ' Failed to parse XML: not well-formed ' ] ,
} ,
{
} , {
' url ' : ' http://vimeo.com/channels/keypeele/75629013 ' ,
' md5 ' : ' 2f86a05afe9d7abc0b9126d229bbe15d ' ,
' info_dict ' : {
@ -620,23 +613,22 @@ class VimeoIE(VimeoBaseInfoExtractor):
' ext ' : ' mp4 ' ,
' title ' : ' Key & Peele: Terrorist Interrogation ' ,
' description ' : ' md5:6173f270cd0c0119f22817204b3eb86c ' ,
' uploader_url ' : r ' re:https?://(?:www \ .)?vimeo \ .com/atencio ' ,
' uploader_id ' : ' atencio ' ,
' uploader_url ' : ' https://vimeo.com/atencio ' ,
' uploader ' : ' Peter Atencio ' ,
' channel_id ' : ' keypeele ' ,
' channel_url ' : r ' re: https? ://(?:www\ .)? vimeo\ .com/channels/keypeele' ,
' channel_url ' : ' https://vimeo.com/channels/keypeele' ,
' 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 ,
} ,
' params ' : { ' format ' : ' http-1080p ' } ,
' expected_warnings ' : [ ' Failed to parse XML: not well-formed ' ] ,
} ,
{
} , {
' url ' : ' http://vimeo.com/76979871 ' ,
' note ' : ' Video with subtitles ' ,
' info_dict ' : {
@ -648,26 +640,25 @@ class VimeoIE(VimeoBaseInfoExtractor):
' upload_date ' : ' 20131015 ' ,
' release_timestamp ' : 1381860509 ,
' release_date ' : ' 20131015 ' ,
' uploader_url ' : r ' re:https?://(?:www \ .)?vimeo \ .com/staff ' ,
' uploader_id ' : ' staff ' ,
' uploader_url ' : ' https://vimeo.com/staff ' ,
' uploader ' : ' Vimeo ' ,
' 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 ' : [
' 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 ' ,
@ -676,14 +667,13 @@ class VimeoIE(VimeoBaseInfoExtractor):
' ext ' : ' mp4 ' ,
' title ' : ' Pier Solar OUYA Official Trailer ' ,
' uploader ' : ' Tulio Gonçalves ' ,
' uploader_url ' : r ' re:https?://(?:www \ .)?vimeo \ .com/user28849593 ' ,
' uploader_id ' : ' user28849593 ' ,
' uploader_url ' : ' https://vimeo.com/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 ' ] ,
} ,
{
} , {
# contains Original format
' url ' : ' https://vimeo.com/33951933 ' ,
# 'md5': '53c688fa95a55bf4b7293d37a89c5c53',
@ -692,23 +682,21 @@ class VimeoIE(VimeoBaseInfoExtractor):
' 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 ' ,
' uploader_url ' : ' https://vimeo.com/dmci ' ,
' timestamp ' : 1324361742 ,
' upload_date ' : ' 20111220 ' ,
' 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 ' ,
} ,
# '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',
@ -722,7 +710,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 ,
@ -731,8 +719,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
} ,
# '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 ' ,
@ -741,26 +728,23 @@ class VimeoIE(VimeoBaseInfoExtractor):
' 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 ' ,
' 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 ,
' thumbnail ' : ' https://i.vimeocdn.com/video/22728298-bfc22146f930de7cf497821c7b0b9f168099201ecca39b00b6bd31fcedfca7a6-d ' ,
' tags ' : ' count:4 ' ,
' thumbnail ' : r ' re:https?://i \ .vimeocdn \ .com/video/.+ ' ,
' like_count ' : int ,
' tags ' : [ ' [the shining ' , ' vimeohq ' , ' cv ' , ' vimeo tribute] ' ] ,
} ,
' params ' : {
' skip_download ' : True ,
} ,
' 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 ' ,
@ -769,54 +753,46 @@ class VimeoIE(VimeoBaseInfoExtractor):
' ext ' : ' mp4 ' ,
' title ' : ' The Reluctant Revolutionary ' ,
' uploader ' : ' 10Ft Films ' ,
' uploader_url ' : r ' re: https? ://(?:www\ .)? vimeo\ .com/tenfootfilms' ,
' uploader_url ' : ' https://vimeo.com/tenfootfilms' ,
' uploader_id ' : ' tenfootfilms ' ,
' description ' : ' md5:0fa704e05b04f91f40b7f3ca2e801384 ' ,
' upload_date ' : ' 20130830 ' ,
' timestamp ' : 1377853339 ,
} ,
' params ' : {
' skip_download ' : True ,
} ,
' 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_url ' : ' https://vimeo.com/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] ' ,
' 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 ' : {
@ -828,7 +804,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 ' ,
@ -840,13 +816,11 @@ class VimeoIE(VimeoBaseInfoExtractor):
' 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 ' : {
@ -861,16 +835,14 @@ 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 ' ] ,
} ,
{
} , {
' url ' : ' https://vimeo.com/138909882 ' ,
' info_dict ' : {
' id ' : ' 138909882 ' ,
@ -882,10 +854,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 ,
@ -896,8 +867,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
# 'format': 'source',
} ,
' expected_warnings ' : [ ' Failed to parse XML: not well-formed ' ] ,
} ,
{
} , {
' url ' : ' https://vimeo.com/channels/staffpicks/143603739 ' ,
' info_dict ' : {
' id ' : ' 143603739 ' ,
@ -912,7 +882,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 ' ,
@ -920,15 +890,13 @@ class VimeoIE(VimeoBaseInfoExtractor):
} ,
' 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
# https://github.com/ytdl-org/youtube-dl/issues/ 29690
' url ' : ' https://vimeo.com/581039021/9603038895 ' ,
' info_dict ' : {
' id ' : ' 581039021 ' ,
@ -937,7 +905,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 ' ,
@ -946,12 +914,9 @@ class VimeoIE(VimeoBaseInfoExtractor):
' uploader_id ' : ' txwestcapital ' ,
' upload_date ' : ' 20210730 ' ,
} ,
' params ' : {
' skip_download ' : True ,
} ,
' 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 ' : {
@ -961,7 +926,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> ' } ,
@ -983,8 +948,7 @@ class VimeoIE(VimeoBaseInfoExtractor):
' 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',
@ -1002,14 +966,12 @@ 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 ' ] ,
} ,
{
} , {
# player.vimeo.com URL with source format
' url ' : ' https://player.vimeo.com/video/859028877 ' ,
# 'md5': '19ca3d2463441dee2d2f0671ac2916a2',
@ -1021,19 +983,50 @@ 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
' 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 ' ,
} ,
# https://gettingthingsdone.com/workflowmap/
# vimeo embed with check-password page protected by Referer header
]
' 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 ' ,
' 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 ) :
@ -1408,21 +1401,19 @@ 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 ,
' 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 ,
' 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
@ -1432,21 +1423,19 @@ 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 ,
' 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 ' ,
} ,
' params ' : {
' skip_download ' : True ,
} ,
' params ' : { ' skip_download ' : True } ,
' expected_warnings ' : [ ' Failed to parse XML: not well-formed ' ] ,
} , {
' url ' : ' https://vimeo.com/ondemand/nazmaalik ' ,
@ -1559,9 +1548,7 @@ class VimeoAlbumIE(VimeoBaseInfoExtractor):
' id ' : ' 3253534 ' ,
} ,
' playlist_count ' : 1 ,
' params ' : {
' videopassword ' : ' youtube-dl ' ,
} ,
' params ' : { ' videopassword ' : ' youtube-dl ' } ,
} ]
_PAGE_SIZE = 100
@ -1660,7 +1647,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 ' ] ,
@ -1675,7 +1662,7 @@ class VimeoReviewIE(VimeoBaseInfoExtractor):
' uploader_id ' : ' user21297594 ' ,
' description ' : " Comedian Dick Hardwick ' s five minute demo filmed in front of a live theater audience. \n Edit 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 ' ,
@ -1689,7 +1676,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 ' ,
@ -1703,9 +1690,7 @@ class VimeoReviewIE(VimeoBaseInfoExtractor):
' uploader ' : ' TMB ' ,
' uploader_id ' : ' user37284429 ' ,
} ,
' params ' : {
' videopassword ' : ' holygrail ' ,
} ,
' params ' : { ' videopassword ' : ' holygrail ' } ,
' skip ' : ' video gone ' ,
} ]
@ -1780,6 +1765,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 ) :
@ -1810,8 +1809,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 ' ,
@ -1819,16 +1818,13 @@ 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 ,
' 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
@ -1837,7 +1833,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 ' ,
@ -1913,7 +1909,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 ,
@ -1935,7 +1931,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 ' ,
@ -1961,7 +1957,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 ,
@ -1974,7 +1970,7 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
# "24/7" livestream
' url ' : ' https://vimeo.com/event/4768062 ' ,
' info_dict ' : {
' id ' : ' 10 79901414 ' ,
' id ' : ' 10 97650937 ' ,
' ext ' : ' mp4 ' ,
' display_id ' : ' 4768062 ' ,
' title ' : r ' re:GRACELAND CAM \ d {4} - \ d {2} - \ d {2} \ d {2} : \ d {2} $ ' ,
@ -1982,8 +1978,8 @@ class VimeoEventIE(VimeoBaseInfoExtractor):
' uploader ' : ' Elvis Presley \' s Graceland ' ,
' uploader_id ' : ' visitgraceland ' ,
' uploader_url ' : ' https://vimeo.com/visitgraceland ' ,
' release_timestamp ' : 17 45975450 ,
' release_date ' : ' 20250 430 ' ,
' release_timestamp ' : 17 51396691 ,
' release_date ' : ' 20250 701 ' ,
' live_status ' : ' is_live ' ,
} ,
' params ' : { ' skip_download ' : ' livestream ' } ,
@ -2002,7 +1998,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 ,
@ -2026,7 +2022,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 ,
@ -2049,7 +2045,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 ,
@ -2100,7 +2096,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 ' ,