From 370f7820ea187646cadc0985bc1ea45beac5be4a Mon Sep 17 00:00:00 2001 From: bashonly <88596187+bashonly@users.noreply.github.com> Date: Wed, 19 Aug 2026 18:10:36 -0500 Subject: [PATCH] [ie/vimeo] Remove broken `macos_basic` client (#17481) Partially revert fdcc954df4955267ec1627cbeb347b661a110e7c Authored by: bashonly --- README.md | 2 +- yt_dlp/extractor/vimeo.py | 22 +--------------------- 2 files changed, 2 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 4838439aa5..0d0c93a3ea 100644 --- a/README.md +++ b/README.md @@ -1975,7 +1975,7 @@ The following extractors use this feature: * `backend`: Backend API to use for extraction - one of `streaks` (default) or `brightcove` (deprecated) #### vimeo -* `client`: Client to extract video data from. The currently available clients are `android`, `macos_basic`, and `web`. Only one client can be used. The `macos_basic` client is used by default, but the `web` client is used when logged-in. The `web` client only works with account cookies or login credentials. The `android` client only works with previously cached OAuth tokens +* `client`: Client to extract video data from. The currently available clients are `android` and `web`. Only one client can be used. The `web` client is used by default, and it only works with account cookies or login credentials. The `android` client only works with previously cached OAuth tokens * `original_format_policy`: Policy for when to try extracting original formats. One of `always`, `never`, or `auto`. The default `auto` policy tries to avoid exceeding the web client's API rate-limit by only making an extra request when Vimeo publicizes the video's downloadability #### zan diff --git a/yt_dlp/extractor/vimeo.py b/yt_dlp/extractor/vimeo.py index ec70a2daea..db546a983c 100644 --- a/yt_dlp/extractor/vimeo.py +++ b/yt_dlp/extractor/vimeo.py @@ -49,7 +49,7 @@ class VimeoBaseInfoExtractor(InfoExtractor): 'Cannot download embed-only video without embedding URL. Please call yt-dlp ' 'with the URL of the page that embeds this video.') - _DEFAULT_CLIENT = 'macos_basic' + _DEFAULT_CLIENT = 'web' _DEFAULT_AUTHED_CLIENT = 'web' _CLIENT_HEADERS = { 'Accept': 'application/vnd.vimeo.*+json; version=3.4.10', @@ -70,19 +70,6 @@ class VimeoBaseInfoExtractor(InfoExtractor): 'resource_key', 'badge', 'upload', 'transcode', 'is_playable', 'has_audio', ), }, - 'macos_basic': { - 'CACHE_ONLY': False, - 'REQUIRES_AUTH': False, - 'AUTH': 'NDc1N2JlN2Y5ZjZmMjU3NzE3NTRkZTg1NmY2YzU2MTI0OTFlNjJiYjpwVUNDWUlBZmZqSHhQcndBYWxGMzgyYys2NkN5d1JrREJZZXdPcEdsU05tdjFlVVo2aE1lYk9GcWE3ZW9KVldlYnFlOWh5Vno5UWtpUGJ5empYZFBpYkFwV0FFTnB5VWV4ZEh3aHZnRUNEL0VySnBzTmFraDdNbS9nMXhWanhIcw==', - 'USER_AGENT': 'Vimeo/1.6.3 (com.vimeo.mac; build:251121.142637.0; macOS 13.7.8) Alamofire/5.9.0 VimeoNetworking/5.0.0', - 'VIDEOS_FIELDS': ( - 'uri', 'name', 'description', 'type', 'link', 'player_embed_url', 'duration', 'width', - 'language', 'height', 'embed', 'created_time', 'modified_time', 'release_time', 'content_rating', - 'content_rating_class', 'rating_mod_locked', 'license', 'privacy', 'pictures', 'tags', 'stats', - 'categories', 'uploader', 'metadata', 'user', 'files', 'download', 'app', 'play', 'status', - 'resource_key', 'badge', 'upload', 'transcode', 'is_playable', 'has_audio', - ), - }, 'web': { 'CACHE_ONLY': False, 'REQUIRES_AUTH': True, @@ -1197,9 +1184,6 @@ class VimeoIE(VimeoBaseInfoExtractor): 'If your IP address is located in Europe you could try using a VPN/proxy,', f'or else u{self._login_hint()[1:]}', delim=' '), method=None) - # XXX: Temporary while macos_basic is the default client - elif e.cause.status == 401 and self._get_requested_client() == 'macos_basic': - self.raise_login_required('The Vimeo extractor only works when logged-in') else: raise @@ -1208,10 +1192,6 @@ class VimeoIE(VimeoBaseInfoExtractor): else: info = self._parse_api_response(video, video_id, unlisted_hash) - # XXX: Temporary while macos_basic is the default client - if not info.get('formats') and self._get_requested_client() == 'macos_basic': - self.raise_login_required('The Vimeo extractor only works when logged-in') - source_format = self._extract_original_format( f'https://vimeo.com/{video_id}', video_id, unlisted_hash) if source_format: