| 
									
										
										
										
											2016-08-15 16:33:35 +01:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-15 21:36:34 +01:00
										 |  |  | from .adobepass import AdobePassIE | 
					
						
							| 
									
										
										
										
											2016-08-15 16:33:35 +01:00
										 |  |  | from ..utils import ( | 
					
						
							|  |  |  |     extract_attributes, | 
					
						
							| 
									
										
										
										
											2017-10-28 16:20:18 -06:00
										 |  |  |     int_or_none, | 
					
						
							| 
									
										
										
										
											2016-08-15 16:33:35 +01:00
										 |  |  |     parse_age_limit, | 
					
						
							|  |  |  |     smuggle_url, | 
					
						
							| 
									
										
										
										
											2017-10-28 16:20:18 -06:00
										 |  |  |     update_url_query, | 
					
						
							| 
									
										
										
										
											2016-08-15 16:33:35 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-15 21:36:34 +01:00
										 |  |  | class FXNetworksIE(AdobePassIE): | 
					
						
							| 
									
										
										
										
											2016-08-16 16:21:04 +01:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?(?:fxnetworks|simpsonsworld)\.com/video/(?P<id>\d+)' | 
					
						
							|  |  |  |     _TESTS = [{ | 
					
						
							| 
									
										
										
										
											2017-10-28 16:20:18 -06:00
										 |  |  |         'url': 'http://www.fxnetworks.com/video/1032565827847', | 
					
						
							|  |  |  |         'md5': '8d99b97b4aa7a202f55b6ed47ea7e703', | 
					
						
							| 
									
										
										
										
											2016-08-15 17:10:45 +01:00
										 |  |  |         'info_dict': { | 
					
						
							| 
									
										
										
										
											2017-10-28 16:20:18 -06:00
										 |  |  |             'id': 'dRzwHC_MMqIv', | 
					
						
							| 
									
										
										
										
											2016-08-15 17:10:45 +01:00
										 |  |  |             'ext': 'mp4', | 
					
						
							| 
									
										
										
										
											2017-10-28 16:20:18 -06:00
										 |  |  |             'title': 'First Look: Better Things - Season 2', | 
					
						
							|  |  |  |             'description': 'Because real life is like a fart. Watch this FIRST LOOK to see what inspired the new season of Better Things.', | 
					
						
							| 
									
										
										
										
											2016-08-15 17:10:45 +01:00
										 |  |  |             'age_limit': 14, | 
					
						
							|  |  |  |             'uploader': 'NEWA-FNG-FX', | 
					
						
							| 
									
										
										
										
											2017-10-28 16:20:18 -06:00
										 |  |  |             'upload_date': '20170825', | 
					
						
							|  |  |  |             'timestamp': 1503686274, | 
					
						
							|  |  |  |             'episode_number': 0, | 
					
						
							|  |  |  |             'season_number': 2, | 
					
						
							|  |  |  |             'series': 'Better Things', | 
					
						
							| 
									
										
										
										
											2016-08-15 17:10:45 +01:00
										 |  |  |         }, | 
					
						
							|  |  |  |         'add_ie': ['ThePlatform'], | 
					
						
							| 
									
										
										
										
											2016-08-16 16:21:04 +01:00
										 |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'http://www.simpsonsworld.com/video/716094019682', | 
					
						
							|  |  |  |         'only_matching': True, | 
					
						
							|  |  |  |     }] | 
					
						
							| 
									
										
										
										
											2016-08-15 16:33:35 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         video_id = self._match_id(url) | 
					
						
							|  |  |  |         webpage = self._download_webpage(url, video_id) | 
					
						
							| 
									
										
										
										
											2016-08-15 17:10:45 +01:00
										 |  |  |         if 'The content you are trying to access is not available in your region.' in webpage: | 
					
						
							|  |  |  |             self.raise_geo_restricted() | 
					
						
							| 
									
										
										
										
											2016-08-15 16:33:35 +01:00
										 |  |  |         video_data = extract_attributes(self._search_regex( | 
					
						
							| 
									
										
										
										
											2018-04-11 09:11:24 -04:00
										 |  |  |             r'(<a.+?rel="https?://link\.theplatform\.com/s/.+?</a>)', webpage, 'video data')) | 
					
						
							| 
									
										
										
										
											2016-08-16 16:21:04 +01:00
										 |  |  |         player_type = self._search_regex(r'playerType\s*=\s*[\'"]([^\'"]+)', webpage, 'player type', default=None) | 
					
						
							| 
									
										
										
										
											2016-08-15 16:33:35 +01:00
										 |  |  |         release_url = video_data['rel'] | 
					
						
							|  |  |  |         title = video_data['data-title'] | 
					
						
							|  |  |  |         rating = video_data.get('data-rating') | 
					
						
							|  |  |  |         query = { | 
					
						
							|  |  |  |             'mbr': 'true', | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if player_type == 'movies': | 
					
						
							|  |  |  |             query.update({ | 
					
						
							|  |  |  |                 'manifest': 'm3u', | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             query.update({ | 
					
						
							|  |  |  |                 'switch': 'http', | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |         if video_data.get('data-req-auth') == '1': | 
					
						
							|  |  |  |             resource = self._get_mvpd_resource( | 
					
						
							|  |  |  |                 video_data['data-channel'], title, | 
					
						
							|  |  |  |                 video_data.get('data-guid'), rating) | 
					
						
							|  |  |  |             query['auth'] = self._extract_mvpd_auth(url, video_id, 'fx', resource) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             '_type': 'url_transparent', | 
					
						
							|  |  |  |             'id': video_id, | 
					
						
							| 
									
										
										
										
											2016-08-15 17:10:45 +01:00
										 |  |  |             'title': title, | 
					
						
							| 
									
										
										
										
											2016-08-15 16:33:35 +01:00
										 |  |  |             'url': smuggle_url(update_url_query(release_url, query), {'force_smil_url': True}), | 
					
						
							| 
									
										
										
										
											2017-10-28 16:20:18 -06:00
										 |  |  |             'series': video_data.get('data-show-title'), | 
					
						
							|  |  |  |             'episode_number': int_or_none(video_data.get('data-episode')), | 
					
						
							|  |  |  |             'season_number': int_or_none(video_data.get('data-season')), | 
					
						
							| 
									
										
										
										
											2016-08-15 16:33:35 +01:00
										 |  |  |             'thumbnail': video_data.get('data-large-thumb'), | 
					
						
							|  |  |  |             'age_limit': parse_age_limit(rating), | 
					
						
							|  |  |  |             'ie_key': 'ThePlatform', | 
					
						
							|  |  |  |         } |