mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:30:46 +00:00 
			
		
		
		
	[vimeo:likes] Add new extractor (Fixes #3835)
This commit is contained in:
		@@ -412,11 +412,12 @@ from .videoweed import VideoWeedIE
 | 
			
		||||
from .vidme import VidmeIE
 | 
			
		||||
from .vimeo import (
 | 
			
		||||
    VimeoIE,
 | 
			
		||||
    VimeoChannelIE,
 | 
			
		||||
    VimeoUserIE,
 | 
			
		||||
    VimeoAlbumIE,
 | 
			
		||||
    VimeoChannelIE,
 | 
			
		||||
    VimeoGroupsIE,
 | 
			
		||||
    VimeoLikesIE,
 | 
			
		||||
    VimeoReviewIE,
 | 
			
		||||
    VimeoUserIE,
 | 
			
		||||
    VimeoWatchLaterIE,
 | 
			
		||||
)
 | 
			
		||||
from .vimple import VimpleIE
 | 
			
		||||
 
 | 
			
		||||
@@ -397,12 +397,6 @@ class GenericIE(InfoExtractor):
 | 
			
		||||
        },
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    def report_download_webpage(self, video_id):
 | 
			
		||||
        """Report webpage download."""
 | 
			
		||||
        if not self._downloader.params.get('test', False):
 | 
			
		||||
            self._downloader.report_warning('Falling back on generic information extractor.')
 | 
			
		||||
        super(GenericIE, self).report_download_webpage(video_id)
 | 
			
		||||
 | 
			
		||||
    def report_following_redirect(self, new_url):
 | 
			
		||||
        """Report information extraction."""
 | 
			
		||||
        self._downloader.to_screen('[redirect] Following redirect to %s' % new_url)
 | 
			
		||||
@@ -502,6 +496,7 @@ class GenericIE(InfoExtractor):
 | 
			
		||||
 | 
			
		||||
        url, smuggled_data = unsmuggle_url(url)
 | 
			
		||||
        force_videoid = None
 | 
			
		||||
        is_intentional = smuggled_data and smuggled_data.get('to_generic')
 | 
			
		||||
        if smuggled_data and 'force_videoid' in smuggled_data:
 | 
			
		||||
            force_videoid = smuggled_data['force_videoid']
 | 
			
		||||
            video_id = force_videoid
 | 
			
		||||
@@ -544,6 +539,9 @@ class GenericIE(InfoExtractor):
 | 
			
		||||
                    'upload_date': upload_date,
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
        if not self._downloader.params.get('test', False) and not is_intentional:
 | 
			
		||||
            self._downloader.report_warning('Falling back on generic information extractor.')
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            webpage = self._download_webpage(url, video_id)
 | 
			
		||||
        except ValueError:
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@ from ..utils import (
 | 
			
		||||
    get_element_by_attribute,
 | 
			
		||||
    ExtractorError,
 | 
			
		||||
    RegexNotFoundError,
 | 
			
		||||
    smuggle_url,
 | 
			
		||||
    std_headers,
 | 
			
		||||
    unsmuggle_url,
 | 
			
		||||
    urlencode_postdata,
 | 
			
		||||
@@ -529,3 +530,35 @@ class VimeoWatchLaterIE(VimeoBaseInfoExtractor, VimeoChannelIE):
 | 
			
		||||
 | 
			
		||||
    def _real_extract(self, url):
 | 
			
		||||
        return self._extract_videos('watchlater', 'https://vimeo.com/home/watchlater')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class VimeoLikesIE(InfoExtractor):
 | 
			
		||||
    _VALID_URL = r'https?://(?:www\.)?vimeo\.com/user(?P<id>[0-9]+)/likes(?:$|[?#])'
 | 
			
		||||
    IE_NAME = 'vimeo:likes'
 | 
			
		||||
    IE_DESC = 'Vimeo user likes'
 | 
			
		||||
    _TEST = {
 | 
			
		||||
        'url': 'https://vimeo.com/user20132939/likes',
 | 
			
		||||
        'playlist_mincount': 4,
 | 
			
		||||
        'add_ies': ['Generic'],
 | 
			
		||||
        "info_dict": {
 | 
			
		||||
            "description": "Videos Philipp Hagemeister likes on Vimeo.",
 | 
			
		||||
            "title": "Vimeo / Philipp Hagemeister's likes",
 | 
			
		||||
        },
 | 
			
		||||
        'params': {
 | 
			
		||||
            'extract_flat': False,
 | 
			
		||||
        },
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    def _real_extract(self, url):
 | 
			
		||||
        user_id = self._match_id(url)
 | 
			
		||||
        rss_url = '%s//vimeo.com/user%s/likes/rss' % (
 | 
			
		||||
            self.http_scheme(), user_id)
 | 
			
		||||
        surl = smuggle_url(rss_url, {
 | 
			
		||||
            'force_videoid': '%s_likes' % user_id,
 | 
			
		||||
            'to_generic': True,
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
            '_type': 'url',
 | 
			
		||||
            'url': surl,
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user