| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-21 11:57:03 +02:00
										 |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2017-01-09 18:22:53 +01:00
										 |  |  | from .kaltura import KalturaIE | 
					
						
							|  |  |  | from ..utils import NO_DEFAULT | 
					
						
							| 
									
										
										
										
											2014-08-21 11:57:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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_-]+)' | 
					
						
							| 
									
										
										
										
											2016-07-13 22:41:46 +07:00
										 |  |  |     _TESTS = [{ | 
					
						
							| 
									
										
										
										
											2015-04-05 00:01:55 +06:00
										 |  |  |         'url': 'http://www.ellentv.com/videos/0-ipq1gsai/', | 
					
						
							| 
									
										
										
										
											2015-12-11 23:40:12 +01:00
										 |  |  |         'md5': '4294cf98bc165f218aaa0b89e0fd8042', | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  |         'info_dict': { | 
					
						
							| 
									
										
										
										
											2015-04-24 22:07:15 +06:00
										 |  |  |             'id': '0_ipq1gsai', | 
					
						
							| 
									
										
										
										
											2015-12-11 23:40:12 +01:00
										 |  |  |             'ext': 'mov', | 
					
						
							| 
									
										
										
										
											2015-04-05 00:01:55 +06:00
										 |  |  |             'title': 'Fast Fingers of Fate', | 
					
						
							| 
									
										
										
										
											2015-12-11 23:40:12 +01:00
										 |  |  |             'description': 'md5:3539013ddcbfa64b2a6d1b38d910868a', | 
					
						
							| 
									
										
										
										
											2015-04-24 22:07:15 +06:00
										 |  |  |             'timestamp': 1428035648, | 
					
						
							| 
									
										
										
										
											2015-04-05 00:01:55 +06:00
										 |  |  |             'upload_date': '20150403', | 
					
						
							| 
									
										
										
										
											2015-04-24 22:07:15 +06:00
										 |  |  |             'uploader_id': 'batchUser', | 
					
						
							| 
									
										
										
										
											2016-07-13 22:41:46 +07:00
										 |  |  |         }, | 
					
						
							|  |  |  |     }, { | 
					
						
							|  |  |  |         # not available via http://widgets.ellentube.com/ | 
					
						
							|  |  |  |         'url': 'http://www.ellentv.com/videos/1-szkgu2m2/', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': '1_szkgu2m2', | 
					
						
							|  |  |  |             'ext': 'flv', | 
					
						
							|  |  |  |             'title': "Ellen's Amazingly Talented Audience", | 
					
						
							|  |  |  |             'description': 'md5:86ff1e376ff0d717d7171590e273f0a5', | 
					
						
							|  |  |  |             'timestamp': 1255140900, | 
					
						
							|  |  |  |             'upload_date': '20091010', | 
					
						
							|  |  |  |             'uploader_id': 'ellenkaltura@gmail.com', | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         'params': { | 
					
						
							|  |  |  |             'skip_download': True, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     }] | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-13 22:41:46 +07:00
										 |  |  |         URLS = ('http://widgets.ellentube.com/videos/%s' % video_id, url) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for num, url_ in enumerate(URLS, 1): | 
					
						
							|  |  |  |             webpage = self._download_webpage( | 
					
						
							|  |  |  |                 url_, video_id, fatal=num == len(URLS)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             default = NO_DEFAULT if num == len(URLS) else None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             partner_id = self._search_regex( | 
					
						
							|  |  |  |                 r"var\s+partnerId\s*=\s*'([^']+)", webpage, 'partner id', | 
					
						
							|  |  |  |                 default=default) | 
					
						
							| 
									
										
										
										
											2015-04-05 00:00:04 +06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-13 22:41:46 +07:00
										 |  |  |             kaltura_id = self._search_regex( | 
					
						
							|  |  |  |                 [r'id="kaltura_player_([^"]+)"', | 
					
						
							|  |  |  |                  r"_wb_entry_id\s*:\s*'([^']+)", | 
					
						
							|  |  |  |                  r'data-kaltura-entry-id="([^"]+)'], | 
					
						
							|  |  |  |                 webpage, 'kaltura id', default=default) | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-13 22:41:46 +07:00
										 |  |  |             if partner_id and kaltura_id: | 
					
						
							|  |  |  |                 break | 
					
						
							| 
									
										
										
										
											2015-04-24 22:03:14 +06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-09 18:22:53 +01:00
										 |  |  |         return self.url_result('kaltura:%s:%s' % (partner_id, kaltura_id), KalturaIE.ie_key()) | 
					
						
							| 
									
										
										
										
											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', | 
					
						
							|  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2017-01-09 18:22:53 +01:00
										 |  |  |         'playlist_mincount': 5, | 
					
						
							| 
									
										
										
										
											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) | 
					
						
							| 
									
										
										
										
											2017-01-09 18:22:53 +01:00
										 |  |  |         playlist = self._extract_playlist(webpage, playlist_id) | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             '_type': 'playlist', | 
					
						
							|  |  |  |             'id': playlist_id, | 
					
						
							|  |  |  |             'title': self._og_search_title(webpage), | 
					
						
							|  |  |  |             'entries': self._extract_entries(playlist) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-09 18:22:53 +01:00
										 |  |  |     def _extract_playlist(self, webpage, playlist_id): | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  |         json_string = self._search_regex(r'playerView.addClips\(\[\{(.*?)\}\]\);', webpage, 'json') | 
					
						
							| 
									
										
										
										
											2017-01-09 18:22:53 +01:00
										 |  |  |         return self._parse_json('[{' + json_string + '}]', playlist_id) | 
					
						
							| 
									
										
										
										
											2014-08-13 12:14:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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']), | 
					
						
							| 
									
										
										
										
											2017-01-09 18:22:53 +01:00
										 |  |  |                 KalturaIE.ie_key(), video_id=item['kaltura_entry_id']) | 
					
						
							| 
									
										
										
										
											2015-04-24 22:09:54 +06:00
										 |  |  |             for item in playlist] |