mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[channel9] Extract more formats
This commit is contained in:
		| @@ -9,6 +9,7 @@ from ..utils import ( | ||||
|     int_or_none, | ||||
|     parse_iso8601, | ||||
|     clean_html, | ||||
|     qualities, | ||||
| ) | ||||
|  | ||||
|  | ||||
| @@ -120,22 +121,75 @@ class Channel9IE(InfoExtractor): | ||||
|             content_data = self._download_json(content_url, content_id) | ||||
|             title = content_data['Title'] | ||||
|  | ||||
|             QUALITIES = ( | ||||
|                 'mp3', | ||||
|                 'wmv', 'mp4', | ||||
|                 'wmv-low', 'mp4-low', | ||||
|                 'wmv-mid', 'mp4-mid', | ||||
|                 'wmv-high', 'mp4-high', | ||||
|             ) | ||||
|  | ||||
|             quality_key = qualities(QUALITIES) | ||||
|  | ||||
|             def quality(quality_id, format_url): | ||||
|                 return (len(QUALITIES) if '_Source.' in format_url | ||||
|                         else quality_key(quality_id)) | ||||
|  | ||||
|             formats = [] | ||||
|             qualities = [ | ||||
|                 'VideoMP4Low', | ||||
|                 'VideoWMV', | ||||
|                 'VideoMP4Medium', | ||||
|                 'VideoMP4High', | ||||
|                 'VideoWMVHQ', | ||||
|             ] | ||||
|             for q in qualities: | ||||
|                 q_url = content_data.get(q) | ||||
|                 if not q_url: | ||||
|             urls = set() | ||||
|  | ||||
|             SITE_QUALITIES = { | ||||
|                 'MP3': 'mp3', | ||||
|                 'MP4': 'mp4', | ||||
|                 'Low Quality WMV': 'wmv-low', | ||||
|                 'Low Quality MP4': 'mp4-low', | ||||
|                 'Mid Quality WMV': 'wmv-mid', | ||||
|                 'Mid Quality MP4': 'mp4-mid', | ||||
|                 'High Quality WMV': 'wmv-high', | ||||
|                 'High Quality MP4': 'mp4-high', | ||||
|             } | ||||
|  | ||||
|             formats_select = self._search_regex( | ||||
|                 r'(?s)<select[^>]+name=["\']format[^>]+>(.+?)</select', webpage, | ||||
|                 'formats select', default=None) | ||||
|             if formats_select: | ||||
|                 for mobj in re.finditer( | ||||
|                         r'<option\b[^>]+\bvalue=(["\'])(?P<url>(?:(?!\1).)+)\1[^>]*>\s*(?P<format>[^<]+?)\s*<', | ||||
|                         formats_select): | ||||
|                     format_url = mobj.group('url') | ||||
|                     if format_url in urls: | ||||
|                         continue | ||||
|                     urls.add(format_url) | ||||
|                     format_id = mobj.group('format') | ||||
|                     quality_id = SITE_QUALITIES.get(format_id, format_id) | ||||
|                     formats.append({ | ||||
|                         'url': format_url, | ||||
|                         'format_id': quality_id, | ||||
|                         'quality': quality(quality_id, format_url), | ||||
|                         'vcodec': 'none' if quality_id == 'mp3' else None, | ||||
|                     }) | ||||
|  | ||||
|             API_QUALITIES = { | ||||
|                 'VideoMP4Low': 'mp4-low', | ||||
|                 'VideoWMV': 'wmv-mid', | ||||
|                 'VideoMP4Medium': 'mp4-mid', | ||||
|                 'VideoMP4High': 'mp4-high', | ||||
|                 'VideoWMVHQ': 'wmv-hq', | ||||
|             } | ||||
|  | ||||
|             for format_id, q in API_QUALITIES.items(): | ||||
|                 q_url = content_data.get(format_id) | ||||
|                 if not q_url or q_url in urls: | ||||
|                     continue | ||||
|                 urls.add(q_url) | ||||
|                 formats.append({ | ||||
|                     'format_id': q, | ||||
|                     'url': q_url, | ||||
|                     'format_id': q, | ||||
|                     'quality': quality(q, q_url), | ||||
|                 }) | ||||
|  | ||||
|             self._sort_formats(formats) | ||||
|  | ||||
|             slides = content_data.get('Slides') | ||||
|             zip_file = content_data.get('ZipFile') | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․