| 
									
										
										
										
											2014-08-06 14:44:29 +02:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							| 
									
										
										
										
											2014-08-06 20:37:59 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-03 10:50:25 +02:00
										 |  |  | import re | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2014-08-06 20:37:59 +07:00
										 |  |  | from ..utils import ( | 
					
						
							|  |  |  |     ExtractorError, | 
					
						
							|  |  |  |     parse_duration, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-03 10:50:25 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class MojvideoIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2014-08-06 20:37:59 +07:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?mojvideo\.com/video-(?P<display_id>[^/]+)/(?P<id>[a-f0-9]+)' | 
					
						
							| 
									
										
										
										
											2014-08-03 10:50:25 +02:00
										 |  |  |     _TEST = { | 
					
						
							|  |  |  |         'url': 'http://www.mojvideo.com/video-v-avtu-pred-mano-rdecelaska-alfi-nipic/3d1ed4497707730b2906', | 
					
						
							|  |  |  |         'md5': 'f7fd662cc8ce2be107b0d4f2c0483ae7', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': '3d1ed4497707730b2906', | 
					
						
							| 
									
										
										
										
											2014-08-06 20:37:59 +07:00
										 |  |  |             'display_id': 'v-avtu-pred-mano-rdecelaska-alfi-nipic', | 
					
						
							| 
									
										
										
										
											2014-08-03 10:50:25 +02:00
										 |  |  |             'ext': 'mp4', | 
					
						
							|  |  |  |             'title': 'V avtu pred mano rdečelaska - Alfi Nipič', | 
					
						
							| 
									
										
										
										
											2014-08-06 20:37:59 +07:00
										 |  |  |             'thumbnail': 're:^http://.*\.jpg$', | 
					
						
							|  |  |  |             'duration': 242, | 
					
						
							| 
									
										
										
										
											2014-08-03 10:50:25 +02:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         mobj = re.match(self._VALID_URL, url) | 
					
						
							|  |  |  |         video_id = mobj.group('id') | 
					
						
							| 
									
										
										
										
											2014-08-06 20:37:59 +07:00
										 |  |  |         display_id = mobj.group('display_id') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # XML is malformed | 
					
						
							|  |  |  |         playerapi = self._download_webpage( | 
					
						
							|  |  |  |             'http://www.mojvideo.com/playerapi.php?v=%s&t=1' % video_id, display_id) | 
					
						
							| 
									
										
										
										
											2014-08-03 10:50:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-06 20:37:59 +07:00
										 |  |  |         if '<error>true</error>' in playerapi: | 
					
						
							|  |  |  |             error_desc = self._html_search_regex( | 
					
						
							|  |  |  |                 r'<errordesc>([^<]*)</errordesc>', playerapi, 'error description', fatal=False) | 
					
						
							|  |  |  |             raise ExtractorError('%s said: %s' % (self.IE_NAME, error_desc), expected=True) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         title = self._html_search_regex( | 
					
						
							|  |  |  |             r'<title>([^<]+)</title>', playerapi, 'title') | 
					
						
							|  |  |  |         video_url = self._html_search_regex( | 
					
						
							|  |  |  |             r'<file>([^<]+)</file>', playerapi, 'video URL') | 
					
						
							|  |  |  |         thumbnail = self._html_search_regex( | 
					
						
							|  |  |  |             r'<preview>([^<]+)</preview>', playerapi, 'thumbnail', fatal=False) | 
					
						
							|  |  |  |         duration = parse_duration(self._html_search_regex( | 
					
						
							|  |  |  |             r'<duration>([^<]+)</duration>', playerapi, 'duration', fatal=False)) | 
					
						
							| 
									
										
										
										
											2014-08-03 10:50:25 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             'id': video_id, | 
					
						
							| 
									
										
										
										
											2014-08-06 20:37:59 +07:00
										 |  |  |             'display_id': display_id, | 
					
						
							|  |  |  |             'url': video_url, | 
					
						
							| 
									
										
										
										
											2014-08-03 10:50:25 +02:00
										 |  |  |             'title': title, | 
					
						
							| 
									
										
										
										
											2014-08-06 20:37:59 +07:00
										 |  |  |             'thumbnail': thumbnail, | 
					
						
							|  |  |  |             'duration': duration, | 
					
						
							| 
									
										
										
										
											2014-11-23 20:41:03 +01:00
										 |  |  |         } |