Add an extractor for theplatform.com
This commit is contained in:
		
							parent
							
								
									bfb9f7bc4c
								
							
						
					
					
						commit
						e9bf7479d2
					
				| @ -144,6 +144,7 @@ from .teamcoco import TeamcocoIE | |||||||
| from .techtalks import TechTalksIE | from .techtalks import TechTalksIE | ||||||
| from .ted import TEDIE | from .ted import TEDIE | ||||||
| from .tf1 import TF1IE | from .tf1 import TF1IE | ||||||
|  | from .theplatform import ThePlatformIE | ||||||
| from .thisav import ThisAVIE | from .thisav import ThisAVIE | ||||||
| from .toutv import TouTvIE | from .toutv import TouTvIE | ||||||
| from .traileraddict import TrailerAddictIE | from .traileraddict import TrailerAddictIE | ||||||
|  | |||||||
							
								
								
									
										69
									
								
								youtube_dl/extractor/theplatform.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								youtube_dl/extractor/theplatform.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | |||||||
|  | import re | ||||||
|  | import json | ||||||
|  | 
 | ||||||
|  | from .common import InfoExtractor | ||||||
|  | from ..utils import ( | ||||||
|  |     xpath_with_ns, | ||||||
|  |     find_xpath_attr, | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | _x = lambda p: xpath_with_ns(p, {'smil': 'http://www.w3.org/2005/SMIL21/Language'}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class ThePlatformIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://link\.theplatform\.com/s/[^/]+/(?P<id>[^/\?]+)' | ||||||
|  | 
 | ||||||
|  |     _TEST = { | ||||||
|  |         # from http://www.metacafe.com/watch/cb-e9I_cZgTgIPd/blackberrys_big_bold_z30/ | ||||||
|  |         u'url': u'http://link.theplatform.com/s/dJ5BDC/e9I_cZgTgIPd/meta.smil?format=smil&Tracking=true&mbr=true', | ||||||
|  |         u'info_dict': { | ||||||
|  |             u'id': u'e9I_cZgTgIPd', | ||||||
|  |             u'ext': u'flv', | ||||||
|  |             u'title': u'Blackberry\'s big, bold Z30', | ||||||
|  |             u'description': u'The Z30 is Blackberry\'s biggest, baddest mobile messaging device yet.', | ||||||
|  |             u'duration': 247, | ||||||
|  |         }, | ||||||
|  |         u'params': { | ||||||
|  |             # rtmp download | ||||||
|  |             u'skip_download': True, | ||||||
|  |         }, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     def _get_info(self, video_id): | ||||||
|  |         smil_url = ('http://link.theplatform.com/s/dJ5BDC/{0}/meta.smil?' | ||||||
|  |             'format=smil&mbr=true'.format(video_id)) | ||||||
|  |         meta = self._download_xml(smil_url, video_id) | ||||||
|  |         info_url = 'http://link.theplatform.com/s/dJ5BDC/{0}?format=preview'.format(video_id) | ||||||
|  |         info_json = self._download_webpage(info_url, video_id) | ||||||
|  |         info = json.loads(info_json) | ||||||
|  | 
 | ||||||
|  |         head = meta.find(_x('smil:head')) | ||||||
|  |         body = meta.find(_x('smil:body')) | ||||||
|  |         base_url = head.find(_x('smil:meta')).attrib['base'] | ||||||
|  |         switch = body.find(_x('smil:switch')) | ||||||
|  |         formats = [] | ||||||
|  |         for f in switch.findall(_x('smil:video')): | ||||||
|  |             attr = f.attrib | ||||||
|  |             formats.append({ | ||||||
|  |                 'url': base_url, | ||||||
|  |                 'play_path': 'mp4:' + attr['src'], | ||||||
|  |                 'ext': 'flv', | ||||||
|  |                 'width': int(attr['width']), | ||||||
|  |                 'height': int(attr['height']), | ||||||
|  |                 'vbr': int(attr['system-bitrate']), | ||||||
|  |             }) | ||||||
|  |         formats.sort(key=lambda f: (f['height'], f['width'], f['vbr'])) | ||||||
|  | 
 | ||||||
|  |         return { | ||||||
|  |             'id': video_id, | ||||||
|  |             'title': info['title'], | ||||||
|  |             'formats': formats, | ||||||
|  |             'description': info['description'], | ||||||
|  |             'thumbnail': info['defaultThumbnailUrl'], | ||||||
|  |             'duration': info['duration']//1000, | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         mobj = re.match(self._VALID_URL, url) | ||||||
|  |         video_id = mobj.group('id') | ||||||
|  |         return self._get_info(video_id) | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user