| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import json | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-21 11:57:03 +02:00
										 |  |  | from .common import InfoExtractor | 
					
						
							|  |  |  | from ..utils import ( | 
					
						
							|  |  |  |     ExtractorError, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class EllenTVIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2015-01-03 21:44:47 +06:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?(?:ellentv|ellentube)\.com/videos/(?P<id>[a-z0-9_-]+)' | 
					
						
							| 
									
										
										
										
											2015-04-24 22:07:15 +06:00
										 |  |  |     _TEST = { | 
					
						
							| 
									
										
										
										
											2015-04-05 00:01:55 +06:00
										 |  |  |         'url': 'http://www.ellentv.com/videos/0-ipq1gsai/', | 
					
						
							|  |  |  |         'md5': '8e3c576bf2e9bfff4d76565f56f94c9c', | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  |         'info_dict': { | 
					
						
							| 
									
										
										
										
											2015-04-24 22:07:15 +06:00
										 |  |  |             'id': '0_ipq1gsai', | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  |             'ext': 'mp4', | 
					
						
							| 
									
										
										
										
											2015-04-05 00:01:55 +06:00
										 |  |  |             'title': 'Fast Fingers of Fate', | 
					
						
							| 
									
										
										
										
											2015-04-24 22:07:15 +06:00
										 |  |  |             'description': 'md5:587e79fbbd0d73b148bc596d99ce48e6', | 
					
						
							|  |  |  |             'timestamp': 1428035648, | 
					
						
							| 
									
										
										
										
											2015-04-05 00:01:55 +06:00
										 |  |  |             'upload_date': '20150403', | 
					
						
							| 
									
										
										
										
											2015-04-24 22:07:15 +06:00
										 |  |  |             'uploader_id': 'batchUser', | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-04-24 22:07:15 +06:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							| 
									
										
										
										
											2015-01-03 21:44:47 +06:00
										 |  |  |         video_id = self._match_id(url) | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-24 22:03:14 +06:00
										 |  |  |         webpage = self._download_webpage( | 
					
						
							|  |  |  |             'http://widgets.ellentube.com/videos/%s' % video_id, | 
					
						
							|  |  |  |             video_id) | 
					
						
							| 
									
										
										
										
											2015-04-05 00:00:04 +06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-24 22:03:14 +06:00
										 |  |  |         partner_id = self._search_regex( | 
					
						
							|  |  |  |             r"var\s+partnerId\s*=\s*'([^']+)", webpage, 'partner id') | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-24 22:03:14 +06:00
										 |  |  |         kaltura_id = self._search_regex( | 
					
						
							|  |  |  |             [r'id="kaltura_player_([^"]+)"', | 
					
						
							|  |  |  |              r"_wb_entry_id\s*:\s*'([^']+)", | 
					
						
							|  |  |  |              r'data-kaltura-entry-id="([^"]+)'], | 
					
						
							|  |  |  |             webpage, 'kaltura id') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return self.url_result('kaltura:%s:%s' % (partner_id, kaltura_id), 'Kaltura') | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-21 11:57:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | class EllenTVClipsIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2014-08-21 11:57:03 +02:00
										 |  |  |     IE_NAME = 'EllenTV:clips' | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?ellentv\.com/episodes/(?P<id>[a-z0-9_-]+)' | 
					
						
							|  |  |  |     _TEST = { | 
					
						
							|  |  |  |         'url': 'http://www.ellentv.com/episodes/meryl-streep-vanessa-hudgens/', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							| 
									
										
										
										
											2014-08-21 11:57:03 +02:00
										 |  |  |             'id': 'meryl-streep-vanessa-hudgens', | 
					
						
							|  |  |  |             'title': 'Meryl Streep, Vanessa Hudgens', | 
					
						
							|  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2015-04-24 22:10:27 +06:00
										 |  |  |         'playlist_mincount': 7, | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							| 
									
										
										
										
											2015-01-03 21:44:47 +06:00
										 |  |  |         playlist_id = self._match_id(url) | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         webpage = self._download_webpage(url, playlist_id) | 
					
						
							|  |  |  |         playlist = self._extract_playlist(webpage) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             '_type': 'playlist', | 
					
						
							|  |  |  |             'id': playlist_id, | 
					
						
							|  |  |  |             'title': self._og_search_title(webpage), | 
					
						
							|  |  |  |             'entries': self._extract_entries(playlist) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _extract_playlist(self, webpage): | 
					
						
							|  |  |  |         json_string = self._search_regex(r'playerView.addClips\(\[\{(.*?)\}\]\);', webpage, 'json') | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             return json.loads("[{" + json_string + "}]") | 
					
						
							|  |  |  |         except ValueError as ve: | 
					
						
							|  |  |  |             raise ExtractorError('Failed to download JSON', cause=ve) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _extract_entries(self, playlist): | 
					
						
							| 
									
										
										
										
											2015-04-24 22:09:54 +06:00
										 |  |  |         return [ | 
					
						
							|  |  |  |             self.url_result( | 
					
						
							|  |  |  |                 'kaltura:%s:%s' % (item['kaltura_partner_id'], item['kaltura_entry_id']), | 
					
						
							|  |  |  |                 'Kaltura') | 
					
						
							|  |  |  |             for item in playlist] |