[adobetv] Support embeddable videos (closes #6039)
This commit is contained in:
		
							parent
							
								
									396726244a
								
							
						
					
					
						commit
						607841af64
					
				| @ -4,7 +4,10 @@ from .abc import ABCIE | |||||||
| from .abc7news import Abc7NewsIE | from .abc7news import Abc7NewsIE | ||||||
| from .academicearth import AcademicEarthCourseIE | from .academicearth import AcademicEarthCourseIE | ||||||
| from .addanime import AddAnimeIE | from .addanime import AddAnimeIE | ||||||
| from .adobetv import AdobeTVIE | from .adobetv import ( | ||||||
|  |     AdobeTVIE, | ||||||
|  |     AdobeTVVideoIE, | ||||||
|  | ) | ||||||
| from .adultswim import AdultSwimIE | from .adultswim import AdultSwimIE | ||||||
| from .aftenposten import AftenpostenIE | from .aftenposten import AftenpostenIE | ||||||
| from .aftonbladet import AftonbladetIE | from .aftonbladet import AftonbladetIE | ||||||
|  | |||||||
| @ -5,6 +5,8 @@ from ..utils import ( | |||||||
|     parse_duration, |     parse_duration, | ||||||
|     unified_strdate, |     unified_strdate, | ||||||
|     str_to_int, |     str_to_int, | ||||||
|  |     float_or_none, | ||||||
|  |     ISO639Utils, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -69,3 +71,60 @@ class AdobeTVIE(InfoExtractor): | |||||||
|             'view_count': view_count, |             'view_count': view_count, | ||||||
|             'formats': formats, |             'formats': formats, | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class AdobeTVVideoIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://video\.tv\.adobe\.com/v/(?P<id>\d+)' | ||||||
|  | 
 | ||||||
|  |     _TEST = { | ||||||
|  |         'url': 'https://video.tv.adobe.com/v/2456/', | ||||||
|  |         'md5': '43662b577c018ad707a63766462b1e87', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': '2456', | ||||||
|  |             'ext': 'mp4', | ||||||
|  |             'title': 'New experience with Acrobat DC', | ||||||
|  |             'description': 'New experience with Acrobat DC', | ||||||
|  |             'duration': 248.667, | ||||||
|  |         }, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         video_id = self._match_id(url) | ||||||
|  | 
 | ||||||
|  |         webpage = self._download_webpage(url, video_id) | ||||||
|  | 
 | ||||||
|  |         player_params = self._parse_json(self._search_regex( | ||||||
|  |             r'var\s+bridge\s*=\s*([^;]+);', webpage, 'player parameters'), | ||||||
|  |             video_id) | ||||||
|  | 
 | ||||||
|  |         formats = [{ | ||||||
|  |             'url': source['src'], | ||||||
|  |             'width': source.get('width'), | ||||||
|  |             'height': source.get('height'), | ||||||
|  |             'tbr': source.get('bitrate'), | ||||||
|  |         } for source in player_params['sources']] | ||||||
|  | 
 | ||||||
|  |         # For both metadata and downloaded files the duration varies among | ||||||
|  |         # formats. I just pick the max one | ||||||
|  |         duration = max(filter(None, [ | ||||||
|  |             float_or_none(source.get('duration'), scale=1000) | ||||||
|  |             for source in player_params['sources']])) | ||||||
|  | 
 | ||||||
|  |         subtitles = {} | ||||||
|  |         for translation in player_params.get('translations', []): | ||||||
|  |             lang_id = translation.get('language_w3c') or ISO639Utils.long2short(translation['language_medium']) | ||||||
|  |             if lang_id not in subtitles: | ||||||
|  |                 subtitles[lang_id] = [] | ||||||
|  |             subtitles[lang_id].append({ | ||||||
|  |                 'url': translation['vttPath'], | ||||||
|  |                 'ext': 'vtt', | ||||||
|  |             }) | ||||||
|  | 
 | ||||||
|  |         return { | ||||||
|  |             'id': video_id, | ||||||
|  |             'formats': formats, | ||||||
|  |             'title': player_params['title'], | ||||||
|  |             'description': self._og_search_description(webpage), | ||||||
|  |             'duration': duration, | ||||||
|  |             'subtitles': subtitles, | ||||||
|  |         } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user