mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 01:27:07 -05:00 
			
		
		
		
	[vimeo:likes] Add new extractor (Fixes #3835)
This commit is contained in:
		@@ -139,7 +139,9 @@ def generator(test_case):
 | 
			
		||||
 | 
			
		||||
            if is_playlist:
 | 
			
		||||
                self.assertEqual(res_dict['_type'], 'playlist')
 | 
			
		||||
                self.assertTrue('entries' in res_dict)
 | 
			
		||||
                expect_info_dict(self, test_case.get('info_dict', {}), res_dict)
 | 
			
		||||
 | 
			
		||||
            if 'playlist_mincount' in test_case:
 | 
			
		||||
                assertGreaterEqual(
 | 
			
		||||
                    self,
 | 
			
		||||
@@ -188,7 +190,7 @@ def generator(test_case):
 | 
			
		||||
                expect_info_dict(self, tc.get('info_dict', {}), info_dict)
 | 
			
		||||
        finally:
 | 
			
		||||
            try_rm_tcs_files()
 | 
			
		||||
            if is_playlist and res_dict is not None:
 | 
			
		||||
            if is_playlist and res_dict is not None and res_dict.get('entries'):
 | 
			
		||||
                # Remove all other files that may have been extracted if the
 | 
			
		||||
                # extractor returns full results even with extract_flat
 | 
			
		||||
                res_tcs = [{'info_dict': e} for e in res_dict['entries']]
 | 
			
		||||
 
 | 
			
		||||
@@ -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