From e2ef4fece6c9742d1733e3bae408c4787765f78c Mon Sep 17 00:00:00 2001 From: Allen <64094914+allendema@users.noreply.github.com> Date: Sun, 12 Jan 2025 19:43:16 +0100 Subject: [PATCH] [ie/vine] Remove extractors (#11700) Authored by: allendema --- yt_dlp/extractor/_extractors.py | 4 - yt_dlp/extractor/tumblr.py | 21 ----- yt_dlp/extractor/twitter.py | 39 --------- yt_dlp/extractor/vine.py | 150 -------------------------------- 4 files changed, 214 deletions(-) delete mode 100644 yt_dlp/extractor/vine.py diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py index e3947dfb5..d42bce21b 100644 --- a/yt_dlp/extractor/_extractors.py +++ b/yt_dlp/extractor/_extractors.py @@ -2356,10 +2356,6 @@ from .vimm import ( VimmIE, VimmRecordingIE, ) -from .vine import ( - VineIE, - VineUserIE, -) from .viously import ViouslyIE from .viqeo import ViqeoIE from .viu import ( diff --git a/yt_dlp/extractor/tumblr.py b/yt_dlp/extractor/tumblr.py index d6d436883..1f2c9b19c 100644 --- a/yt_dlp/extractor/tumblr.py +++ b/yt_dlp/extractor/tumblr.py @@ -189,26 +189,6 @@ class TumblrIE(InfoExtractor): 'release_date': '20140227', }, 'add_ie': ['Vimeo'], - }, { - 'url': 'http://sutiblr.tumblr.com/post/139638707273', - 'md5': '2dd184b3669e049ba40563a7d423f95c', - 'info_dict': { - 'id': 'ir7qBEIKqvq', - 'ext': 'mp4', - 'title': 'Vine by sutiblr', - 'alt_title': 'Vine by sutiblr', - 'uploader': 'sutiblr', - 'uploader_id': '1198993975374495744', - 'upload_date': '20160220', - 'like_count': int, - 'comment_count': int, - 'repost_count': int, - 'thumbnail': r're:^https?://.*\.jpg', - 'timestamp': 1455940159, - 'view_count': int, - }, - 'add_ie': ['Vine'], - 'skip': 'Vine is unavailable', }, { 'url': 'https://silami.tumblr.com/post/84250043974/my-bad-river-flows-in-you-impression-on-maschine', 'md5': '3c92d7c3d867f14ccbeefa2119022277', @@ -366,7 +346,6 @@ class TumblrIE(InfoExtractor): _providers = { 'instagram': 'Instagram', 'vimeo': 'Vimeo', - 'vine': 'Vine', 'youtube': 'Youtube', 'dailymotion': 'Dailymotion', 'tiktok': 'TikTok', diff --git a/yt_dlp/extractor/twitter.py b/yt_dlp/extractor/twitter.py index 8196ce6c3..c05b5bf9c 100644 --- a/yt_dlp/extractor/twitter.py +++ b/yt_dlp/extractor/twitter.py @@ -409,26 +409,6 @@ class TwitterCardIE(InfoExtractor): }, 'add_ie': ['Youtube'], }, - { - 'url': 'https://twitter.com/i/cards/tfw/v1/665289828897005568', - 'info_dict': { - 'id': 'iBb2x00UVlv', - 'ext': 'mp4', - 'upload_date': '20151113', - 'uploader_id': '1189339351084113920', - 'uploader': 'ArsenalTerje', - 'title': 'Vine by ArsenalTerje', - 'timestamp': 1447451307, - 'alt_title': 'Vine by ArsenalTerje', - 'comment_count': int, - 'like_count': int, - 'thumbnail': r're:^https?://[^?#]+\.jpg', - 'view_count': int, - 'repost_count': int, - }, - 'add_ie': ['Vine'], - 'params': {'skip_download': 'm3u8'}, - }, { 'url': 'https://twitter.com/i/videos/tweet/705235433198714880', 'md5': '884812a2adc8aaf6fe52b15ccbfa3b88', @@ -567,25 +547,6 @@ class TwitterIE(TwitterBaseIE): 'age_limit': 0, '_old_archive_ids': ['twitter 700207533655363584'], }, - }, { - 'url': 'https://twitter.com/Filmdrunk/status/713801302971588609', - 'md5': '89a15ed345d13b86e9a5a5e051fa308a', - 'info_dict': { - 'id': 'MIOxnrUteUd', - 'ext': 'mp4', - 'title': 'Dr.Pepperの飲み方 #japanese #バカ #ドクペ #電動ガン', - 'uploader': 'TAKUMA', - 'uploader_id': '1004126642786242560', - 'timestamp': 1402826626, - 'upload_date': '20140615', - 'thumbnail': r're:^https?://.*\.jpg', - 'alt_title': 'Vine by TAKUMA', - 'comment_count': int, - 'repost_count': int, - 'like_count': int, - 'view_count': int, - }, - 'add_ie': ['Vine'], }, { 'url': 'https://twitter.com/captainamerica/status/719944021058060289', 'info_dict': { diff --git a/yt_dlp/extractor/vine.py b/yt_dlp/extractor/vine.py deleted file mode 100644 index eed4bfeeb..000000000 --- a/yt_dlp/extractor/vine.py +++ /dev/null @@ -1,150 +0,0 @@ -from .common import InfoExtractor -from ..utils import ( - determine_ext, - format_field, - int_or_none, - unified_timestamp, -) - - -class VineIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?vine\.co/(?:v|oembed)/(?P\w+)' - _EMBED_REGEX = [r']+src=[\'"](?P(?:https?:)?//(?:www\.)?vine\.co/v/[^/]+/embed/(?:simple|postcard))'] - _TESTS = [{ - 'url': 'https://vine.co/v/b9KOOWX7HUx', - 'md5': '2f36fed6235b16da96ce9b4dc890940d', - 'info_dict': { - 'id': 'b9KOOWX7HUx', - 'ext': 'mp4', - 'title': 'Chicken.', - 'alt_title': 'Vine by Jack', - 'timestamp': 1368997951, - 'upload_date': '20130519', - 'uploader': 'Jack', - 'uploader_id': '76', - 'view_count': int, - 'like_count': int, - 'comment_count': int, - 'repost_count': int, - }, - }, { - 'url': 'https://vine.co/v/e192BnZnZ9V', - 'info_dict': { - 'id': 'e192BnZnZ9V', - 'ext': 'mp4', - 'title': 'ยิ้ม~ เขิน~ อาย~ น่าร้ากอ้ะ >//< @n_whitewo @orlameena #lovesicktheseries #lovesickseason2', - 'alt_title': 'Vine by Pimry_zaa', - 'timestamp': 1436057405, - 'upload_date': '20150705', - 'uploader': 'Pimry_zaa', - 'uploader_id': '1135760698325307392', - 'view_count': int, - 'like_count': int, - 'comment_count': int, - 'repost_count': int, - }, - 'params': { - 'skip_download': True, - }, - }, { - 'url': 'https://vine.co/v/MYxVapFvz2z', - 'only_matching': True, - }, { - 'url': 'https://vine.co/v/bxVjBbZlPUH', - 'only_matching': True, - }, { - 'url': 'https://vine.co/oembed/MYxVapFvz2z.json', - 'only_matching': True, - }] - - def _real_extract(self, url): - video_id = self._match_id(url) - - data = self._download_json( - f'https://archive.vine.co/posts/{video_id}.json', video_id) - - def video_url(kind): - for url_suffix in ('Url', 'URL'): - format_url = data.get(f'video{kind}{url_suffix}') - if format_url: - return format_url - - formats = [] - for quality, format_id in enumerate(('low', '', 'dash')): - format_url = video_url(format_id.capitalize()) - if not format_url: - continue - # DASH link returns plain mp4 - if format_id == 'dash' and determine_ext(format_url) == 'mpd': - formats.extend(self._extract_mpd_formats( - format_url, video_id, mpd_id='dash', fatal=False)) - else: - formats.append({ - 'url': format_url, - 'format_id': format_id or 'standard', - 'quality': quality, - }) - self._check_formats(formats, video_id) - - username = data.get('username') - - alt_title = format_field(username, None, 'Vine by %s') - - return { - 'id': video_id, - 'title': data.get('description') or alt_title or 'Vine video', - 'alt_title': alt_title, - 'thumbnail': data.get('thumbnailUrl'), - 'timestamp': unified_timestamp(data.get('created')), - 'uploader': username, - 'uploader_id': data.get('userIdStr'), - 'view_count': int_or_none(data.get('loops')), - 'like_count': int_or_none(data.get('likes')), - 'comment_count': int_or_none(data.get('comments')), - 'repost_count': int_or_none(data.get('reposts')), - 'formats': formats, - } - - -class VineUserIE(InfoExtractor): - IE_NAME = 'vine:user' - _VALID_URL = r'https?://vine\.co/(?Pu/)?(?P[^/]+)' - _VINE_BASE_URL = 'https://vine.co/' - _TESTS = [{ - 'url': 'https://vine.co/itsruthb', - 'info_dict': { - 'id': 'itsruthb', - 'title': 'Ruth B', - 'description': '| Instagram/Twitter: itsruthb | still a lost boy from neverland', - }, - 'playlist_mincount': 611, - }, { - 'url': 'https://vine.co/u/942914934646415360', - 'only_matching': True, - }] - - @classmethod - def suitable(cls, url): - return False if VineIE.suitable(url) else super().suitable(url) - - def _real_extract(self, url): - mobj = self._match_valid_url(url) - user = mobj.group('user') - u = mobj.group('u') - - profile_url = '{}api/users/profiles/{}{}'.format( - self._VINE_BASE_URL, 'vanity/' if not u else '', user) - profile_data = self._download_json( - profile_url, user, note='Downloading user profile data') - - data = profile_data['data'] - user_id = data.get('userId') or data['userIdStr'] - profile = self._download_json( - f'https://archive.vine.co/profiles/{user_id}.json', user_id) - entries = [ - self.url_result( - f'https://vine.co/v/{post_id}', ie='Vine', video_id=post_id) - for post_id in profile['posts'] - if post_id and isinstance(post_id, str)] - return self.playlist_result( - entries, user, profile.get('username'), profile.get('description'))