| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  | import itertools | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  | from ..utils import ( | 
					
						
							|  |  |  |     get_element_by_id, | 
					
						
							|  |  |  |     remove_end, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FoxgayIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2016-03-21 21:36:32 +06:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?foxgay\.com/videos/(?:\S+-)?(?P<id>\d+)\.shtml' | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  |     _TEST = { | 
					
						
							|  |  |  |         'url': 'http://foxgay.com/videos/fuck-turkish-style-2582.shtml', | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  |         'md5': '344558ccfea74d33b7adbce22e577f54', | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': '2582', | 
					
						
							|  |  |  |             'ext': 'mp4', | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  |             'title': 'Fuck Turkish-style', | 
					
						
							|  |  |  |             'description': 'md5:6ae2d9486921891efe89231ace13ffdf', | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  |             'age_limit': 18, | 
					
						
							| 
									
										
										
										
											2014-12-04 08:22:20 +01:00
										 |  |  |             'thumbnail': 're:https?://.*\.jpg$', | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  |         }, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         video_id = self._match_id(url) | 
					
						
							|  |  |  |         webpage = self._download_webpage(url, video_id) | 
					
						
							| 
									
										
										
										
											2014-12-04 08:22:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  |         title = remove_end(self._html_search_regex( | 
					
						
							|  |  |  |             r'<title>([^<]+)</title>', webpage, 'title'), ' - Foxgay.com') | 
					
						
							|  |  |  |         description = get_element_by_id('inf_tit', webpage) | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  |         # The default user-agent with foxgay cookies leads to pages without videos | 
					
						
							|  |  |  |         self._downloader.cookiejar.clear('.foxgay.com') | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  |         # Find the URL for the iFrame which contains the actual video. | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  |         iframe_url = self._html_search_regex( | 
					
						
							|  |  |  |             r'<iframe[^>]+src=([\'"])(?P<url>[^\'"]+)\1', webpage, | 
					
						
							|  |  |  |             'video frame', group='url') | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  |         iframe = self._download_webpage( | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  |             iframe_url, video_id, headers={'User-Agent': 'curl/7.50.1'}, | 
					
						
							|  |  |  |             note='Downloading video frame') | 
					
						
							|  |  |  |         video_data = self._parse_json(self._search_regex( | 
					
						
							|  |  |  |             r'video_data\s*=\s*([^;]+);', iframe, 'video data'), video_id) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         formats = [{ | 
					
						
							|  |  |  |             'url': source, | 
					
						
							|  |  |  |             'height': resolution, | 
					
						
							|  |  |  |         } for source, resolution in zip( | 
					
						
							|  |  |  |             video_data['sources'], video_data.get('resolutions', itertools.repeat(None)))] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self._sort_formats(formats) | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             'id': video_id, | 
					
						
							|  |  |  |             'title': title, | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  |             'formats': formats, | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  |             'description': description, | 
					
						
							| 
									
										
										
										
											2016-09-08 01:59:31 +08:00
										 |  |  |             'thumbnail': video_data.get('act_vid', {}).get('thumb'), | 
					
						
							| 
									
										
										
										
											2014-12-03 20:22:48 -08:00
										 |  |  |             'age_limit': 18, | 
					
						
							|  |  |  |         } |