mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-10-31 01:33:15 +00:00 
			
		
		
		
	[vimeo] improve format extraction and sorting(closes #25285)
This commit is contained in:
		
							parent
							
								
									b334732709
								
							
						
					
					
						commit
						52c50a10af
					
				| @ -140,28 +140,28 @@ class VimeoBaseInfoExtractor(InfoExtractor): | ||||
|             }) | ||||
| 
 | ||||
|         # TODO: fix handling of 308 status code returned for live archive manifest requests | ||||
|         sep_pattern = r'/sep/video/' | ||||
|         for files_type in ('hls', 'dash'): | ||||
|             for cdn_name, cdn_data in config_files.get(files_type, {}).get('cdns', {}).items(): | ||||
|                 manifest_url = cdn_data.get('url') | ||||
|                 if not manifest_url: | ||||
|                     continue | ||||
|                 format_id = '%s-%s' % (files_type, cdn_name) | ||||
|                 if files_type == 'hls': | ||||
|                     formats.extend(self._extract_m3u8_formats( | ||||
|                         manifest_url, video_id, 'mp4', | ||||
|                         'm3u8' if is_live else 'm3u8_native', m3u8_id=format_id, | ||||
|                         note='Downloading %s m3u8 information' % cdn_name, | ||||
|                         fatal=False)) | ||||
|                 elif files_type == 'dash': | ||||
|                     mpd_pattern = r'/%s/(?:sep/)?video/' % video_id | ||||
|                     mpd_manifest_urls = [] | ||||
|                     if re.search(mpd_pattern, manifest_url): | ||||
|                         for suffix, repl in (('', 'video'), ('_sep', 'sep/video')): | ||||
|                             mpd_manifest_urls.append((format_id + suffix, re.sub( | ||||
|                                 mpd_pattern, '/%s/%s/' % (video_id, repl), manifest_url))) | ||||
|                     else: | ||||
|                         mpd_manifest_urls = [(format_id, manifest_url)] | ||||
|                     for f_id, m_url in mpd_manifest_urls: | ||||
|                 sep_manifest_urls = [] | ||||
|                 if re.search(sep_pattern, manifest_url): | ||||
|                     for suffix, repl in (('', 'video'), ('_sep', 'sep/video')): | ||||
|                         sep_manifest_urls.append((format_id + suffix, re.sub( | ||||
|                             sep_pattern, '/%s/' % repl, manifest_url))) | ||||
|                 else: | ||||
|                     sep_manifest_urls = [(format_id, manifest_url)] | ||||
|                 for f_id, m_url in sep_manifest_urls: | ||||
|                     if files_type == 'hls': | ||||
|                         formats.extend(self._extract_m3u8_formats( | ||||
|                             m_url, video_id, 'mp4', | ||||
|                             'm3u8' if is_live else 'm3u8_native', m3u8_id=f_id, | ||||
|                             note='Downloading %s m3u8 information' % cdn_name, | ||||
|                             fatal=False)) | ||||
|                     elif files_type == 'dash': | ||||
|                         if 'json=1' in m_url: | ||||
|                             real_m_url = (self._download_json(m_url, video_id, fatal=False) or {}).get('url') | ||||
|                             if real_m_url: | ||||
| @ -170,11 +170,6 @@ class VimeoBaseInfoExtractor(InfoExtractor): | ||||
|                             m_url.replace('/master.json', '/master.mpd'), video_id, f_id, | ||||
|                             'Downloading %s MPD information' % cdn_name, | ||||
|                             fatal=False) | ||||
|                         for f in mpd_formats: | ||||
|                             if f.get('vcodec') == 'none': | ||||
|                                 f['preference'] = -50 | ||||
|                             elif f.get('acodec') == 'none': | ||||
|                                 f['preference'] = -40 | ||||
|                         formats.extend(mpd_formats) | ||||
| 
 | ||||
|         live_archive = live_event.get('archive') or {} | ||||
| @ -186,6 +181,12 @@ class VimeoBaseInfoExtractor(InfoExtractor): | ||||
|                 'preference': 1, | ||||
|             }) | ||||
| 
 | ||||
|         for f in formats: | ||||
|             if f.get('vcodec') == 'none': | ||||
|                 f['preference'] = -50 | ||||
|             elif f.get('acodec') == 'none': | ||||
|                 f['preference'] = -40 | ||||
| 
 | ||||
|         subtitles = {} | ||||
|         text_tracks = config['request'].get('text_tracks') | ||||
|         if text_tracks: | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Remita Amine
						Remita Amine