mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00: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
	 Sergey M․
					Sergey M․