| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import re | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2014-08-31 23:51:36 +02:00
										 |  |  | from ..utils import ( | 
					
						
							|  |  |  |     parse_duration, | 
					
						
							|  |  |  |     str_to_int, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class EpornerIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2014-09-02 21:39:22 +07:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?eporner\.com/hd-porn/(?P<id>\d+)/(?P<display_id>[\w-]+)' | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  |     _TEST = { | 
					
						
							|  |  |  |         'url': 'http://www.eporner.com/hd-porn/95008/Infamous-Tiffany-Teen-Strip-Tease-Video/', | 
					
						
							| 
									
										
										
										
											2014-09-29 06:19:18 +02:00
										 |  |  |         'md5': '39d486f046212d8e1b911c52ab4691f8', | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': '95008', | 
					
						
							| 
									
										
										
										
											2014-09-02 21:39:22 +07:00
										 |  |  |             'display_id': 'Infamous-Tiffany-Teen-Strip-Tease-Video', | 
					
						
							| 
									
										
										
										
											2014-09-29 06:19:18 +02:00
										 |  |  |             'ext': 'mp4', | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  |             'title': 'Infamous Tiffany Teen Strip Tease Video', | 
					
						
							| 
									
										
										
										
											2014-11-16 14:55:22 +01:00
										 |  |  |             'duration': 1838, | 
					
						
							| 
									
										
										
										
											2014-08-31 23:51:36 +02:00
										 |  |  |             'view_count': int, | 
					
						
							| 
									
										
										
										
											2014-09-01 23:07:48 +02:00
										 |  |  |             'age_limit': 18, | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         mobj = re.match(self._VALID_URL, url) | 
					
						
							|  |  |  |         video_id = mobj.group('id') | 
					
						
							| 
									
										
										
										
											2014-09-02 21:39:22 +07:00
										 |  |  |         display_id = mobj.group('display_id') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         webpage = self._download_webpage(url, display_id) | 
					
						
							| 
									
										
										
										
											2014-08-31 23:51:36 +02:00
										 |  |  |         title = self._html_search_regex( | 
					
						
							|  |  |  |             r'<title>(.*?) - EPORNER', webpage, 'title') | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-25 01:08:54 +06:00
										 |  |  |         redirect_url = 'http://www.eporner.com/config5/%s' % video_id | 
					
						
							| 
									
										
										
										
											2014-09-01 23:07:48 +02:00
										 |  |  |         player_code = self._download_webpage( | 
					
						
							| 
									
										
										
										
											2014-09-02 21:39:22 +07:00
										 |  |  |             redirect_url, display_id, note='Downloading player config') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         sources = self._search_regex( | 
					
						
							|  |  |  |             r'(?s)sources\s*:\s*\[\s*({.+?})\s*\]', player_code, 'sources') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         formats = [] | 
					
						
							|  |  |  |         for video_url, format_id in re.findall(r'file\s*:\s*"([^"]+)",\s*label\s*:\s*"([^"]+)"', sources): | 
					
						
							|  |  |  |             fmt = { | 
					
						
							|  |  |  |                 'url': video_url, | 
					
						
							|  |  |  |                 'format_id': format_id, | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             m = re.search(r'^(\d+)', format_id) | 
					
						
							|  |  |  |             if m: | 
					
						
							|  |  |  |                 fmt['height'] = int(m.group(1)) | 
					
						
							|  |  |  |             formats.append(fmt) | 
					
						
							|  |  |  |         self._sort_formats(formats) | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-16 14:55:22 +01:00
										 |  |  |         duration = parse_duration(self._html_search_meta('duration', webpage)) | 
					
						
							| 
									
										
										
										
											2014-08-31 23:51:36 +02:00
										 |  |  |         view_count = str_to_int(self._search_regex( | 
					
						
							|  |  |  |             r'id="cinemaviews">\s*([0-9,]+)\s*<small>views', | 
					
						
							|  |  |  |             webpage, 'view count', fatal=False)) | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             'id': video_id, | 
					
						
							| 
									
										
										
										
											2014-09-02 21:39:22 +07:00
										 |  |  |             'display_id': display_id, | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  |             'title': title, | 
					
						
							| 
									
										
										
										
											2014-08-31 23:51:36 +02:00
										 |  |  |             'duration': duration, | 
					
						
							|  |  |  |             'view_count': view_count, | 
					
						
							| 
									
										
										
										
											2014-09-02 21:39:22 +07:00
										 |  |  |             'formats': formats, | 
					
						
							| 
									
										
										
										
											2015-02-25 01:08:54 +06:00
										 |  |  |             'age_limit': 18, | 
					
						
							| 
									
										
										
										
											2014-08-30 22:28:53 +02:00
										 |  |  |         } |