mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[revision3:embed] Add new extractor
This commit is contained in:
		| @@ -13,8 +13,64 @@ from ..utils import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Revision3EmbedIE(InfoExtractor): | ||||||
|  |     IE_NAME = 'revision3:embed' | ||||||
|  |     _VALID_URL = r'(?:revision3:(?:(?P<playlist_type>[^:]+):)?|https?://(?:(?:(?:www|embed)\.)?(?:revision3|animalist)|(?:(?:api|embed)\.)?seekernetwork)\.com/player/embed\?videoId=)(?P<playlist_id>\d+)' | ||||||
|  |     _TEST = { | ||||||
|  |         'url': 'http://api.seekernetwork.com/player/embed?videoId=67558', | ||||||
|  |         'md5': '83bcd157cab89ad7318dd7b8c9cf1306', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': '67558', | ||||||
|  |             'ext': 'mp4', | ||||||
|  |             'title': 'The Pros & Cons Of Zoos', | ||||||
|  |             'description': 'Zoos are often depicted as a terrible place for animals to live, but is there any truth to this?', | ||||||
|  |             'uploader_id': 'dnews', | ||||||
|  |             'uploader': 'DNews', | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     _API_KEY = 'ba9c741bce1b9d8e3defcc22193f3651b8867e62' | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         mobj = re.match(self._VALID_URL, url) | ||||||
|  |         playlist_id = mobj.group('playlist_id') | ||||||
|  |         playlist_type = mobj.group('playlist_type') or 'video_id' | ||||||
|  |         video_data = self._download_json( | ||||||
|  |             'http://revision3.com/api/getPlaylist.json', playlist_id, query={ | ||||||
|  |                 'api_key': self._API_KEY, | ||||||
|  |                 'codecs': 'h264,vp8,theora', | ||||||
|  |                 playlist_type: playlist_id, | ||||||
|  |             })['items'][0] | ||||||
|  |  | ||||||
|  |         formats = [] | ||||||
|  |         for vcodec, media in video_data['media'].items(): | ||||||
|  |             for quality_id, quality in media.items(): | ||||||
|  |                 if quality_id == 'hls': | ||||||
|  |                     formats.extend(self._extract_m3u8_formats( | ||||||
|  |                         quality['url'], playlist_id, 'mp4', | ||||||
|  |                         'm3u8_native', m3u8_id='hls', fatal=False)) | ||||||
|  |                 else: | ||||||
|  |                     formats.append({ | ||||||
|  |                         'url': quality['url'], | ||||||
|  |                         'format_id': '%s-%s' % (vcodec, quality_id), | ||||||
|  |                         'tbr': int_or_none(quality.get('bitrate')), | ||||||
|  |                         'vcodec': vcodec, | ||||||
|  |                     }) | ||||||
|  |         self._sort_formats(formats) | ||||||
|  |  | ||||||
|  |         return { | ||||||
|  |             'id': playlist_id, | ||||||
|  |             'title': unescapeHTML(video_data['title']), | ||||||
|  |             'description': unescapeHTML(video_data.get('summary')), | ||||||
|  |             'uploader': video_data.get('show', {}).get('name'), | ||||||
|  |             'uploader_id': video_data.get('show', {}).get('slug'), | ||||||
|  |             'duration': int_or_none(video_data.get('duration')), | ||||||
|  |             'formats': formats, | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |  | ||||||
| class Revision3IE(InfoExtractor): | class Revision3IE(InfoExtractor): | ||||||
|     _VALID_URL = r'https?://(?:www\.)?(?P<domain>(?:revision3|testtube|animalist)\.com)/(?P<id>[^/]+(?:/[^/?#]+)?)' |     IE_NAME = 'revision' | ||||||
|  |     _VALID_URL = r'https?://(?:www\.)?(?P<domain>(?:revision3|animalist)\.com)/(?P<id>[^/]+(?:/[^/?#]+)?)' | ||||||
|     _TESTS = [{ |     _TESTS = [{ | ||||||
|         'url': 'http://www.revision3.com/technobuffalo/5-google-predictions-for-2016', |         'url': 'http://www.revision3.com/technobuffalo/5-google-predictions-for-2016', | ||||||
|         'md5': 'd94a72d85d0a829766de4deb8daaf7df', |         'md5': 'd94a72d85d0a829766de4deb8daaf7df', | ||||||
| @@ -32,52 +88,14 @@ class Revision3IE(InfoExtractor): | |||||||
|         } |         } | ||||||
|     }, { |     }, { | ||||||
|         # Show |         # Show | ||||||
|         'url': 'http://testtube.com/brainstuff', |         'url': 'http://revision3.com/variant', | ||||||
|         'info_dict': { |         'only_matching': True, | ||||||
|             'id': '251', |  | ||||||
|             'title': 'BrainStuff', |  | ||||||
|             'description': 'Whether the topic is popcorn or particle physics, you can count on the HowStuffWorks team to explore-and explain-the everyday science in the world around us on BrainStuff.', |  | ||||||
|         }, |  | ||||||
|         'playlist_mincount': 93, |  | ||||||
|     }, { |  | ||||||
|         'url': 'https://testtube.com/dnews/5-weird-ways-plants-can-eat-animals?utm_source=FB&utm_medium=DNews&utm_campaign=DNewsSocial', |  | ||||||
|         'info_dict': { |  | ||||||
|             'id': '58227', |  | ||||||
|             'display_id': 'dnews/5-weird-ways-plants-can-eat-animals', |  | ||||||
|             'duration': 275, |  | ||||||
|             'ext': 'webm', |  | ||||||
|             'title': '5 Weird Ways Plants Can Eat Animals', |  | ||||||
|             'description': 'Why have some plants evolved to eat meat?', |  | ||||||
|             'upload_date': '20150120', |  | ||||||
|             'timestamp': 1421763300, |  | ||||||
|             'uploader': 'DNews', |  | ||||||
|             'uploader_id': 'dnews', |  | ||||||
|         }, |  | ||||||
|     }, { |  | ||||||
|         'url': 'http://testtube.com/tt-editors-picks/the-israel-palestine-conflict-explained-in-ten-min', |  | ||||||
|         'info_dict': { |  | ||||||
|             'id': '71618', |  | ||||||
|             'ext': 'mp4', |  | ||||||
|             'display_id': 'tt-editors-picks/the-israel-palestine-conflict-explained-in-ten-min', |  | ||||||
|             'title': 'The Israel-Palestine Conflict Explained in Ten Minutes', |  | ||||||
|             'description': 'If you\'d like to learn about the struggle between Israelis and Palestinians, this video is a great place to start', |  | ||||||
|             'uploader': 'Editors\' Picks', |  | ||||||
|             'uploader_id': 'tt-editors-picks', |  | ||||||
|             'timestamp': 1453309200, |  | ||||||
|             'upload_date': '20160120', |  | ||||||
|         }, |  | ||||||
|         'add_ie': ['Youtube'], |  | ||||||
|     }, { |     }, { | ||||||
|         # Tag |         # Tag | ||||||
|         'url': 'http://testtube.com/tech-news', |         'url': 'http://revision3.com/vr', | ||||||
|         'info_dict': { |         'only_matching': True, | ||||||
|             'id': '21018', |  | ||||||
|             'title': 'tech news', |  | ||||||
|         }, |  | ||||||
|         'playlist_mincount': 9, |  | ||||||
|     }] |     }] | ||||||
|     _PAGE_DATA_TEMPLATE = 'http://www.%s/apiProxy/ddn/%s?domain=%s' |     _PAGE_DATA_TEMPLATE = 'http://www.%s/apiProxy/ddn/%s?domain=%s' | ||||||
|     _API_KEY = 'ba9c741bce1b9d8e3defcc22193f3651b8867e62' |  | ||||||
|  |  | ||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         domain, display_id = re.match(self._VALID_URL, url).groups() |         domain, display_id = re.match(self._VALID_URL, url).groups() | ||||||
| @@ -119,33 +137,9 @@ class Revision3IE(InfoExtractor): | |||||||
|                 }) |                 }) | ||||||
|                 return info |                 return info | ||||||
|  |  | ||||||
|             video_data = self._download_json( |  | ||||||
|                 'http://revision3.com/api/getPlaylist.json?api_key=%s&codecs=h264,vp8,theora&video_id=%s' % (self._API_KEY, video_id), |  | ||||||
|                 video_id)['items'][0] |  | ||||||
|  |  | ||||||
|             formats = [] |  | ||||||
|             for vcodec, media in video_data['media'].items(): |  | ||||||
|                 for quality_id, quality in media.items(): |  | ||||||
|                     if quality_id == 'hls': |  | ||||||
|                         formats.extend(self._extract_m3u8_formats( |  | ||||||
|                             quality['url'], video_id, 'mp4', |  | ||||||
|                             'm3u8_native', m3u8_id='hls', fatal=False)) |  | ||||||
|                     else: |  | ||||||
|                         formats.append({ |  | ||||||
|                             'url': quality['url'], |  | ||||||
|                             'format_id': '%s-%s' % (vcodec, quality_id), |  | ||||||
|                             'tbr': int_or_none(quality.get('bitrate')), |  | ||||||
|                             'vcodec': vcodec, |  | ||||||
|                         }) |  | ||||||
|             self._sort_formats(formats) |  | ||||||
|  |  | ||||||
|             info.update({ |             info.update({ | ||||||
|                 'title': unescapeHTML(video_data['title']), |                 '_type': 'url_transparent', | ||||||
|                 'description': unescapeHTML(video_data.get('summary')), |                 'url': 'revision3:%s' % video_id, | ||||||
|                 'uploader': video_data.get('show', {}).get('name'), |  | ||||||
|                 'uploader_id': video_data.get('show', {}).get('slug'), |  | ||||||
|                 'duration': int_or_none(video_data.get('duration')), |  | ||||||
|                 'formats': formats, |  | ||||||
|             }) |             }) | ||||||
|             return info |             return info | ||||||
|         else: |         else: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user