| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  | # coding: utf-8 | 
					
						
							|  |  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | import re | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2015-06-06 02:54:57 +03:00
										 |  |  |  | from ..compat import compat_urllib_parse_unquote | 
					
						
							| 
									
										
										
										
											2014-08-01 19:08:09 +07:00
										 |  |  |  | from ..utils import ( | 
					
						
							|  |  |  |  |     determine_ext, | 
					
						
							| 
									
										
										
										
											2014-09-10 18:24:57 +07:00
										 |  |  |  |     float_or_none, | 
					
						
							| 
									
										
										
										
											2014-11-05 01:00:33 +02:00
										 |  |  |  |     get_element_by_id, | 
					
						
							|  |  |  |  |     int_or_none, | 
					
						
							|  |  |  |  |     parse_iso8601, | 
					
						
							| 
									
										
										
										
											2014-08-01 19:08:09 +07:00
										 |  |  |  |     str_to_int, | 
					
						
							|  |  |  |  | ) | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class IzleseneIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |     _VALID_URL = r'''(?x)
 | 
					
						
							|  |  |  |  |         https?://(?:(?:www|m)\.)?izlesene\.com/ | 
					
						
							|  |  |  |  |         (?:video|embedplayer)/(?:[^/]+/)?(?P<id>[0-9]+) | 
					
						
							|  |  |  |  |         '''
 | 
					
						
							|  |  |  |  |     _TESTS = [ | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             'url': 'http://www.izlesene.com/video/sevincten-cildirtan-dogum-gunu-hediyesi/7599694', | 
					
						
							|  |  |  |  |             'md5': '4384f9f0ea65086734b881085ee05ac2', | 
					
						
							|  |  |  |  |             'info_dict': { | 
					
						
							|  |  |  |  |                 'id': '7599694', | 
					
						
							|  |  |  |  |                 'ext': 'mp4', | 
					
						
							|  |  |  |  |                 'title': 'Sevinçten Çıldırtan Doğum Günü Hediyesi', | 
					
						
							|  |  |  |  |                 'description': 'md5:253753e2655dde93f59f74b572454f6d', | 
					
						
							| 
									
										
										
										
											2016-04-12 18:29:28 +08:00
										 |  |  |  |                 'thumbnail': 're:^https?://.*\.jpg', | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |                 'uploader_id': 'pelikzzle', | 
					
						
							| 
									
										
										
										
											2015-06-06 02:57:12 +03:00
										 |  |  |  |                 'timestamp': int, | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |                 'upload_date': '20140702', | 
					
						
							|  |  |  |  |                 'duration': 95.395, | 
					
						
							|  |  |  |  |                 'age_limit': 0, | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             'url': 'http://www.izlesene.com/video/tarkan-dortmund-2006-konseri/17997', | 
					
						
							|  |  |  |  |             'md5': '97f09b6872bffa284cb7fa4f6910cb72', | 
					
						
							|  |  |  |  |             'info_dict': { | 
					
						
							|  |  |  |  |                 'id': '17997', | 
					
						
							|  |  |  |  |                 'ext': 'mp4', | 
					
						
							|  |  |  |  |                 'title': 'Tarkan Dortmund 2006 Konseri', | 
					
						
							| 
									
										
										
										
											2016-04-12 18:29:28 +08:00
										 |  |  |  |                 'thumbnail': 're:^https://.*\.jpg', | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |                 'uploader_id': 'parlayankiz', | 
					
						
							| 
									
										
										
										
											2015-06-06 02:57:12 +03:00
										 |  |  |  |                 'timestamp': int, | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |                 'upload_date': '20061112', | 
					
						
							|  |  |  |  |                 'duration': 253.666, | 
					
						
							|  |  |  |  |                 'age_limit': 0, | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         }, | 
					
						
							|  |  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     def _real_extract(self, url): | 
					
						
							| 
									
										
										
										
											2014-11-05 01:00:33 +02:00
										 |  |  |  |         video_id = self._match_id(url) | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-05 01:00:33 +02:00
										 |  |  |  |         url = 'http://www.izlesene.com/video/%s' % video_id | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  |         webpage = self._download_webpage(url, video_id) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         title = self._og_search_title(webpage) | 
					
						
							| 
									
										
										
										
											2016-04-12 18:29:28 +08:00
										 |  |  |  |         description = self._og_search_description(webpage, default=None) | 
					
						
							| 
									
										
										
										
											2014-10-01 21:11:38 +03:00
										 |  |  |  |         thumbnail = self._proto_relative_url( | 
					
						
							|  |  |  |  |             self._og_search_thumbnail(webpage), scheme='http:') | 
					
						
							| 
									
										
										
										
											2014-08-01 19:08:09 +07:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         uploader = self._html_search_regex( | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |             r"adduserUsername\s*=\s*'([^']+)';", | 
					
						
							| 
									
										
										
										
											2015-06-06 02:54:57 +03:00
										 |  |  |  |             webpage, 'uploader', fatal=False) | 
					
						
							| 
									
										
										
										
											2014-08-01 19:08:09 +07:00
										 |  |  |  |         timestamp = parse_iso8601(self._html_search_meta( | 
					
						
							| 
									
										
										
										
											2015-06-06 02:54:57 +03:00
										 |  |  |  |             'uploadDate', webpage, 'upload date')) | 
					
						
							| 
									
										
										
										
											2014-08-01 19:08:09 +07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-10 18:24:57 +07:00
										 |  |  |  |         duration = float_or_none(self._html_search_regex( | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |             r'"videoduration"\s*:\s*"([^"]+)"', | 
					
						
							| 
									
										
										
										
											2014-09-10 18:24:57 +07:00
										 |  |  |  |             webpage, 'duration', fatal=False), scale=1000) | 
					
						
							| 
									
										
										
										
											2014-08-01 19:08:09 +07:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         view_count = str_to_int(get_element_by_id('videoViewCount', webpage)) | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  |         comment_count = self._html_search_regex( | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |             r'comment_count\s*=\s*\'([^\']+)\';', | 
					
						
							|  |  |  |  |             webpage, 'comment_count', fatal=False) | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-01 19:08:09 +07:00
										 |  |  |  |         content_url = self._html_search_meta( | 
					
						
							|  |  |  |  |             'contentURL', webpage, 'content URL', fatal=False) | 
					
						
							|  |  |  |  |         ext = determine_ext(content_url, 'mp4') | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         # Might be empty for some videos. | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |         streams = self._html_search_regex( | 
					
						
							| 
									
										
										
										
											2015-06-06 02:54:57 +03:00
										 |  |  |  |             r'"qualitylevel"\s*:\s*"([^"]+)"', webpage, 'streams', default='') | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         formats = [] | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |         if streams: | 
					
						
							|  |  |  |  |             for stream in streams.split('|'): | 
					
						
							|  |  |  |  |                 quality, url = re.search(r'\[(\w+)\](.+)', stream).groups() | 
					
						
							|  |  |  |  |                 formats.append({ | 
					
						
							|  |  |  |  |                     'format_id': '%sp' % quality if quality else 'sd', | 
					
						
							| 
									
										
										
										
											2015-06-06 02:54:57 +03:00
										 |  |  |  |                     'url': compat_urllib_parse_unquote(url), | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |                     'ext': ext, | 
					
						
							|  |  |  |  |                 }) | 
					
						
							|  |  |  |  |         else: | 
					
						
							|  |  |  |  |             stream_url = self._search_regex( | 
					
						
							| 
									
										
										
										
											2015-06-06 02:54:57 +03:00
										 |  |  |  |                 r'"streamurl"\s*:\s*"([^"]+)"', webpage, 'stream URL') | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  |             formats.append({ | 
					
						
							| 
									
										
										
										
											2014-09-10 00:22:48 +03:00
										 |  |  |  |                 'format_id': 'sd', | 
					
						
							| 
									
										
										
										
											2015-06-06 02:54:57 +03:00
										 |  |  |  |                 'url': compat_urllib_parse_unquote(stream_url), | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  |                 'ext': ext, | 
					
						
							|  |  |  |  |             }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return { | 
					
						
							|  |  |  |  |             'id': video_id, | 
					
						
							|  |  |  |  |             'title': title, | 
					
						
							|  |  |  |  |             'description': description, | 
					
						
							|  |  |  |  |             'thumbnail': thumbnail, | 
					
						
							| 
									
										
										
										
											2014-08-01 19:08:09 +07:00
										 |  |  |  |             'uploader_id': uploader, | 
					
						
							|  |  |  |  |             'timestamp': timestamp, | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  |             'duration': duration, | 
					
						
							|  |  |  |  |             'view_count': int_or_none(view_count), | 
					
						
							|  |  |  |  |             'comment_count': int_or_none(comment_count), | 
					
						
							| 
									
										
										
										
											2015-02-08 17:45:38 +02:00
										 |  |  |  |             'age_limit': self._family_friendly_search(webpage), | 
					
						
							| 
									
										
										
										
											2014-08-01 19:08:09 +07:00
										 |  |  |  |             'formats': formats, | 
					
						
							| 
									
										
										
										
											2014-07-26 14:35:23 +03:00
										 |  |  |  |         } |