mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[tenplay] Add new extractor
This commit is contained in:
		
							
								
								
									
										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'] | ||||
|         } | ||||
		Reference in New Issue
	
	Block a user
	 Adam Malcontenti-Wilson
					Adam Malcontenti-Wilson