[mojvideo] Switch to API, handle errors, remove faked width and height
This commit is contained in:
		| @@ -1,41 +1,58 @@ | |||||||
| # coding: utf-8 | # coding: utf-8 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
|  |  | ||||||
| import re | import re | ||||||
|  |  | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
|  | from ..utils import ( | ||||||
|  |     ExtractorError, | ||||||
|  |     parse_duration, | ||||||
|  | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| class MojvideoIE(InfoExtractor): | class MojvideoIE(InfoExtractor): | ||||||
|     _VALID_URL = r'https?://(?:www\.)?mojvideo\.com/video-.*/(?P<id>[a-f0-9]+)' |     _VALID_URL = r'https?://(?:www\.)?mojvideo\.com/video-(?P<display_id>[^/]+)/(?P<id>[a-f0-9]+)' | ||||||
|     _TEST = { |     _TEST = { | ||||||
|         'url': 'http://www.mojvideo.com/video-v-avtu-pred-mano-rdecelaska-alfi-nipic/3d1ed4497707730b2906', |         'url': 'http://www.mojvideo.com/video-v-avtu-pred-mano-rdecelaska-alfi-nipic/3d1ed4497707730b2906', | ||||||
|         'md5': 'f7fd662cc8ce2be107b0d4f2c0483ae7', |         'md5': 'f7fd662cc8ce2be107b0d4f2c0483ae7', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': '3d1ed4497707730b2906', |             'id': '3d1ed4497707730b2906', | ||||||
|  |             'display_id': 'v-avtu-pred-mano-rdecelaska-alfi-nipic', | ||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
|             'title': 'V avtu pred mano rdečelaska - Alfi Nipič', |             'title': 'V avtu pred mano rdečelaska - Alfi Nipič', | ||||||
|             'description':'Video: V avtu pred mano rdečelaska - Alfi Nipič', |             'thumbnail': 're:^http://.*\.jpg$', | ||||||
|             'height':378, |             'duration': 242, | ||||||
|             'width':480 |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         mobj = re.match(self._VALID_URL, url) |         mobj = re.match(self._VALID_URL, url) | ||||||
|         video_id = mobj.group('id') |         video_id = mobj.group('id') | ||||||
|  |         display_id = mobj.group('display_id') | ||||||
|  |  | ||||||
|         webpage = self._download_webpage(url, video_id) |         # XML is malformed | ||||||
|         title = self._html_search_regex(r'<title>(.*?)</title>', webpage, 'title') |         playerapi = self._download_webpage( | ||||||
|         description = self._search_regex(r'<meta name="description" content="(.*)" />', webpage, 'video description') |             'http://www.mojvideo.com/playerapi.php?v=%s&t=1' % video_id, display_id) | ||||||
|         final_url = self._html_search_regex(r'mp4: \'(.*)\'', webpage, 'video url') |  | ||||||
|         height=int(self._search_regex(r'<meta name="video_height" content="([0-9]*)" />',webpage,"video height")) |         if '<error>true</error>' in playerapi: | ||||||
|         width=int(self._search_regex(r'<meta name="video_width" content="([0-9]*)" />',webpage,"video width")) |             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)) | ||||||
|  |  | ||||||
|         return { |         return { | ||||||
|             'id': video_id, |             'id': video_id, | ||||||
|  |             'display_id': display_id, | ||||||
|  |             'url': video_url, | ||||||
|             'title': title, |             'title': title, | ||||||
|             'description': description, |             'thumbnail': thumbnail, | ||||||
|             'ext': 'mp4', |             'duration': duration, | ||||||
|             'url': final_url, |  | ||||||
|             'height':height, |  | ||||||
|             'width':width |  | ||||||
|         } |         } | ||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․