mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-11-01 09:26:45 -07:00 
			
		
		
		
	This commit is contained in:
		@@ -15,7 +15,16 @@ from ..utils import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class VevoIE(InfoExtractor):
 | 
			
		||||
class VevoBaseIE(InfoExtractor):
 | 
			
		||||
    def _extract_json(self, webpage, video_id, item):
 | 
			
		||||
        return self._parse_json(
 | 
			
		||||
            self._search_regex(
 | 
			
		||||
                r'window\.__INITIAL_STORE__\s*=\s*({.+?});\s*</script>',
 | 
			
		||||
                webpage, 'initial store'),
 | 
			
		||||
            video_id)['default'][item]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class VevoIE(VevoBaseIE):
 | 
			
		||||
    '''
 | 
			
		||||
    Accepts urls from vevo.com or in the format 'vevo:{id}'
 | 
			
		||||
    (currently used by MTVIE and MySpaceIE)
 | 
			
		||||
@@ -186,7 +195,14 @@ class VevoIE(InfoExtractor):
 | 
			
		||||
            video_versions = self._call_api(
 | 
			
		||||
                'video/%s/streams' % video_id, video_id,
 | 
			
		||||
                'Downloading video versions info',
 | 
			
		||||
                'Failed to download video versions info')
 | 
			
		||||
                'Failed to download video versions info',
 | 
			
		||||
                fatal=False)
 | 
			
		||||
 | 
			
		||||
            # Some videos are only available via webpage (e.g.
 | 
			
		||||
            # https://github.com/rg3/youtube-dl/issues/9366)
 | 
			
		||||
            if not video_versions:
 | 
			
		||||
                webpage = self._download_webpage(url, video_id)
 | 
			
		||||
                video_versions = self._extract_json(webpage, video_id, 'streams')[video_id][0]
 | 
			
		||||
 | 
			
		||||
            timestamp = parse_iso8601(video_info.get('releaseDate'))
 | 
			
		||||
            artists = video_info.get('artists')
 | 
			
		||||
@@ -306,7 +322,7 @@ class VevoIE(InfoExtractor):
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class VevoPlaylistIE(InfoExtractor):
 | 
			
		||||
class VevoPlaylistIE(VevoBaseIE):
 | 
			
		||||
    _VALID_URL = r'https?://www\.vevo\.com/watch/(?P<kind>playlist|genre)/(?P<id>[^/?#&]+)'
 | 
			
		||||
 | 
			
		||||
    _TESTS = [{
 | 
			
		||||
@@ -357,11 +373,7 @@ class VevoPlaylistIE(InfoExtractor):
 | 
			
		||||
            if video_id:
 | 
			
		||||
                return self.url_result('vevo:%s' % video_id, VevoIE.ie_key())
 | 
			
		||||
 | 
			
		||||
        playlists = self._parse_json(
 | 
			
		||||
            self._search_regex(
 | 
			
		||||
                r'window\.__INITIAL_STORE__\s*=\s*({.+?});\s*</script>',
 | 
			
		||||
                webpage, 'initial store'),
 | 
			
		||||
            playlist_id)['default']['%ss' % playlist_kind]
 | 
			
		||||
        playlists = self._extract_json(webpage, playlist_id, '%ss' % playlist_kind)
 | 
			
		||||
 | 
			
		||||
        playlist = (list(playlists.values())[0]
 | 
			
		||||
                    if playlist_kind == 'playlist' else playlists[playlist_id])
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user