[cwtv] Add new extractor
This commit is contained in:
		| @@ -130,6 +130,7 @@ from .crunchyroll import ( | ||||
| ) | ||||
| from .cspan import CSpanIE | ||||
| from .ctsnews import CtsNewsIE | ||||
| from .cwtv import CWTVIE | ||||
| from .dailymotion import ( | ||||
|     DailymotionIE, | ||||
|     DailymotionPlaylistIE, | ||||
|   | ||||
							
								
								
									
										88
									
								
								youtube_dl/extractor/cwtv.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								youtube_dl/extractor/cwtv.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | ||||
| # coding: utf-8 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..utils import ( | ||||
|     int_or_none, | ||||
|     parse_iso8601, | ||||
| ) | ||||
|  | ||||
|  | ||||
| class CWTVIE(InfoExtractor): | ||||
|     _VALID_URL = r'https?://(?:www\.)?cw(?:tv|seed)\.com/shows/(?:[^/]+/){2}\?play=(?P<id>[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})' | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://cwtv.com/shows/arrow/legends-of-yesterday/?play=6b15e985-9345-4f60-baf8-56e96be57c63', | ||||
|         'info_dict': { | ||||
|             'id': '6b15e985-9345-4f60-baf8-56e96be57c63', | ||||
|             'ext': 'mp4', | ||||
|             'title': 'Legends of Yesterday', | ||||
|             'description': 'Oliver and Barry Allen take Kendra Saunders and Carter Hall to a remote location to keep them hidden from Vandal Savage while they figure out how to defeat him.', | ||||
|             'duration': 2665, | ||||
|             'series': 'Arrow', | ||||
|             'season_number': 4, | ||||
|             'season': '4', | ||||
|             'episode_number': 8, | ||||
|             'upload_date': '20151203', | ||||
|             'timestamp': 1449122100, | ||||
|         }, | ||||
|         'params': { | ||||
|             # m3u8 download | ||||
|             'skip_download': True, | ||||
|         } | ||||
|     }, { | ||||
|         'url': 'http://www.cwseed.com/shows/whose-line-is-it-anyway/jeff-davis-4/?play=24282b12-ead2-42f2-95ad-26770c2c6088', | ||||
|         'info_dict': { | ||||
|             'id': '24282b12-ead2-42f2-95ad-26770c2c6088', | ||||
|             'ext': 'mp4', | ||||
|             'title': 'Jeff Davis 4', | ||||
|             'description': 'Jeff Davis is back to make you laugh.', | ||||
|             'duration': 1263, | ||||
|             'series': 'Whose Line Is It Anyway?', | ||||
|             'season_number': 11, | ||||
|             'season': '11', | ||||
|             'episode_number': 20, | ||||
|             'upload_date': '20151006', | ||||
|             'timestamp': 1444107300, | ||||
|         }, | ||||
|         'params': { | ||||
|             # m3u8 download | ||||
|             'skip_download': True, | ||||
|         } | ||||
|     }] | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         video_id = self._match_id(url) | ||||
|         video_data = self._download_json( | ||||
|             'http://metaframe.digitalsmiths.tv/v2/CWtv/assets/%s/partner/132?format=json' % video_id, video_id) | ||||
|  | ||||
|         formats = self._extract_m3u8_formats( | ||||
|             video_data['videos']['variantplaylist']['uri'], video_id, 'mp4') | ||||
|  | ||||
|         thumbnails = [{ | ||||
|             'url': image['uri'], | ||||
|             'width': image.get('width'), | ||||
|             'height': image.get('height'), | ||||
|         } for image_id, image in video_data['images'].items() if image.get('uri')] if video_data.get('images') else None | ||||
|  | ||||
|         video_metadata = video_data['assetFields'] | ||||
|  | ||||
|         subtitles = { | ||||
|             'en': [{ | ||||
|                 'url': video_metadata['UnicornCcUrl'], | ||||
|             }], | ||||
|         } if video_metadata.get('UnicornCcUrl') else None | ||||
|  | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': video_metadata['title'], | ||||
|             'description': video_metadata.get('description'), | ||||
|             'duration': int_or_none(video_metadata.get('duration')), | ||||
|             'series': video_metadata.get('seriesName'), | ||||
|             'season_number': int_or_none(video_metadata.get('seasonNumber')), | ||||
|             'season': video_metadata.get('seasonName'), | ||||
|             'episode_number': int_or_none(video_metadata.get('episodeNumber')), | ||||
|             'timestamp': parse_iso8601(video_data.get('startTime')), | ||||
|             'thumbnails': thumbnails, | ||||
|             'formats': formats, | ||||
|             'subtitles': subtitles, | ||||
|         } | ||||
		Reference in New Issue
	
	Block a user