mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[vevo] Support 1080p videos (Fixes #3656)
This commit is contained in:
		| @@ -6,6 +6,7 @@ import xml.etree.ElementTree | ||||
| from .common import InfoExtractor | ||||
| from ..utils import ( | ||||
|     compat_HTTPError, | ||||
|     compat_urllib_request, | ||||
|     ExtractorError, | ||||
| ) | ||||
|  | ||||
| @@ -69,6 +70,21 @@ class VevoIE(InfoExtractor): | ||||
|     }] | ||||
|     _SMIL_BASE_URL = 'http://smil.lvl3.vevo.com/' | ||||
|  | ||||
|     def _real_initialize(self): | ||||
|         req = compat_urllib_request.Request( | ||||
|             'http://www.vevo.com/auth', data=b'') | ||||
|         webpage = self._download_webpage( | ||||
|             req, None, | ||||
|             note='Retrieving oauth token', | ||||
|             errnote='Unable to retrieve oauth token', | ||||
|             fatal=False) | ||||
|         if webpage is False: | ||||
|             self._oauth_token = None | ||||
|         else: | ||||
|             self._oauth_token = self._search_regex( | ||||
|                 r'access_token":\s*"([^"]+)"', | ||||
|                 webpage, 'access token', fatal=False) | ||||
|  | ||||
|     def _formats_from_json(self, video_info): | ||||
|         last_version = {'version': -1} | ||||
|         for version in video_info['videoVersions']: | ||||
| @@ -129,6 +145,26 @@ class VevoIE(InfoExtractor): | ||||
|             }) | ||||
|         return formats | ||||
|  | ||||
|     def _download_api_formats(self, video_id): | ||||
|         if not self._oauth_token: | ||||
|             self._downloader.report_warning( | ||||
|                 'No oauth token available, skipping API HLS download') | ||||
|             return [] | ||||
|  | ||||
|         api_url = 'https://apiv2.vevo.com/video/%s/streams/hls?token=%s' % ( | ||||
|             video_id, self._oauth_token) | ||||
|         api_data = self._download_json( | ||||
|             api_url, video_id, | ||||
|             note='Downloading HLS formats', | ||||
|             errnote='Failed to download HLS format list', fatal=False) | ||||
|         if api_data is None: | ||||
|             return [] | ||||
|  | ||||
|         m3u8_url = api_data[0]['url'] | ||||
|         return self._extract_m3u8_formats( | ||||
|             m3u8_url, video_id, entry_protocol='m3u8_native', ext='mp4', | ||||
|             preference=0) | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         video_id = mobj.group('id') | ||||
| @@ -152,6 +188,9 @@ class VevoIE(InfoExtractor): | ||||
|         else: | ||||
|             age_limit = None | ||||
|  | ||||
|         # Download via HLS API | ||||
|         formats.extend(self._download_api_formats(video_id)) | ||||
|  | ||||
|         # Download SMIL | ||||
|         smil_blocks = sorted(( | ||||
|             f for f in video_info['videoVersions'] | ||||
| @@ -166,7 +205,6 @@ class VevoIE(InfoExtractor): | ||||
|                 fatal=False) | ||||
|             if smil_url_m is not None: | ||||
|                 smil_url = smil_url_m | ||||
|  | ||||
|         try: | ||||
|             smil_xml = self._download_webpage(smil_url, video_id, | ||||
|                                               'Downloading SMIL info') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister