[tenplay] Add new extractor
This commit is contained in:
		
							parent
							
								
									89bb8e97ee
								
							
						
					
					
						commit
						1d0668ed5a
					
				| @ -265,6 +265,7 @@ from .sztvhu import SztvHuIE | |||||||
| from .teamcoco import TeamcocoIE | from .teamcoco import TeamcocoIE | ||||||
| from .techtalks import TechTalksIE | from .techtalks import TechTalksIE | ||||||
| from .ted import TEDIE | from .ted import TEDIE | ||||||
|  | from .tenplay import TenPlayIE | ||||||
| from .testurl import TestURLIE | from .testurl import TestURLIE | ||||||
| from .tf1 import TF1IE | from .tf1 import TF1IE | ||||||
| from .theplatform import ThePlatformIE | from .theplatform import ThePlatformIE | ||||||
|  | |||||||
							
								
								
									
										72
									
								
								youtube_dl/extractor/tenplay.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								youtube_dl/extractor/tenplay.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,72 @@ | |||||||
|  | # coding: utf-8 | ||||||
|  | from __future__ import unicode_literals | ||||||
|  | 
 | ||||||
|  | import re | ||||||
|  | 
 | ||||||
|  | from .common import InfoExtractor | ||||||
|  | 
 | ||||||
|  | class TenPlayIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://(?:www\.)?ten(play)?\.com\.au/.+' | ||||||
|  |     _TEST = { | ||||||
|  |         'url': 'http://tenplay.com.au/ten-insider/extra/season-2013/tenplay-tv-your-way', | ||||||
|  |         'md5': 'c9dda6aac8f814352ad2aee8899b1612', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': '2695695426001', | ||||||
|  |             'ext': 'flv', | ||||||
|  |             'title': 'TENplay: TV your way', | ||||||
|  |             'description': 'Welcome to a new TV experience. Enjoy a taste of the TENplay benefits.', | ||||||
|  |             'timestamp': 1380150606.889, | ||||||
|  |             'upload_date': '20130925', | ||||||
|  |             'uploader': 'TENplay' | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     _video_fields = ["id","name","shortDescription","longDescription","creationDate","publishedDate","lastModifiedDate","customFields","videoStillURL","thumbnailURL","referenceId","length","playsTotal","playsTrailingWeek","renditions","captioning","startDate","endDate"] | ||||||
|  | 
 | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         webpage = self._download_webpage(url, url) | ||||||
|  |         video_id = self._html_search_regex(r'videoID: "(\d+?)"', webpage, 'video_id') | ||||||
|  |         api_token = self._html_search_regex(r'apiToken: "([a-zA-Z0-9-_\.]+?)"', webpage, 'api_token') | ||||||
|  |         title = self._html_search_regex(r'<meta property="og:title" content="\s*(.*?)\s*"\s*/?\s*>', webpage, 'title') | ||||||
|  | 
 | ||||||
|  |         json = self._download_json('https://api.brightcove.com/services/library?command=find_video_by_id&video_id=%s&token=%s&video_fields=%s' % (video_id, api_token, ','.join(self._video_fields)), title) | ||||||
|  | 
 | ||||||
|  |         formats = [] | ||||||
|  |         for rendition in json['renditions']: | ||||||
|  |             url = rendition['remoteUrl'] or rendition['url'] | ||||||
|  |             protocol = 'rtmp' if url.startswith('rtmp') else 'http' | ||||||
|  |             ext = 'flv' if protocol == 'rtmp' else rendition['videoContainer'].lower() | ||||||
|  | 
 | ||||||
|  |             if protocol == 'rtmp': | ||||||
|  |                 url = url.replace('&mp4:', '') | ||||||
|  | 
 | ||||||
|  |             formats.append({ | ||||||
|  |                 'format_id': '_'.join(['rtmp', rendition['videoContainer'].lower(), rendition['videoCodec'].lower()]), | ||||||
|  |                 'width': rendition['frameWidth'], | ||||||
|  |                 'height': rendition['frameHeight'], | ||||||
|  |                 'tbr': rendition['encodingRate'] / 1024, | ||||||
|  |                 'filesize': rendition['size'], | ||||||
|  |                 'protocol': protocol, | ||||||
|  |                 'ext': ext, | ||||||
|  |                 'vcodec': rendition['videoCodec'].lower(), | ||||||
|  |                 'container': rendition['videoContainer'].lower(), | ||||||
|  |                 'url': url | ||||||
|  |                 }) | ||||||
|  | 
 | ||||||
|  |         return { | ||||||
|  |             'id': video_id, | ||||||
|  |             'display_id': json['referenceId'], | ||||||
|  |             'title': json['name'], | ||||||
|  |             'description': json['shortDescription'] or json['longDescription'], | ||||||
|  |             'formats': formats, | ||||||
|  |             'thumbnails': [{ | ||||||
|  |                 'url': json['videoStillURL'] | ||||||
|  |             }, { | ||||||
|  |                 'url': json['thumbnailURL'] | ||||||
|  |             }], | ||||||
|  |             'thumbnail': json['videoStillURL'], | ||||||
|  |             'duration': json['length'] / 1000, | ||||||
|  |             'timestamp': float(json['creationDate']) / 1000, | ||||||
|  |             'uploader': json['customFields']['production_company_distributor'] if 'production_company_distributor' in json['customFields'] else 'TENplay', | ||||||
|  |             'view_count': json['playsTotal'] | ||||||
|  |         } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user