Merge remote-tracking branch 'upstream/master'
This commit is contained in:
		| @@ -67,6 +67,7 @@ __authors__  = ( | |||||||
|     'Charles Chen', |     'Charles Chen', | ||||||
|     'Hassaan Ali', |     'Hassaan Ali', | ||||||
|     'Dobrosław Żybort', |     'Dobrosław Żybort', | ||||||
|  |     'David Fabijan', | ||||||
| ) | ) | ||||||
|  |  | ||||||
| __license__ = 'Public Domain' | __license__ = 'Public Domain' | ||||||
|   | |||||||
| @@ -181,6 +181,7 @@ from .mixcloud import MixcloudIE | |||||||
| from .mlb import MLBIE | from .mlb import MLBIE | ||||||
| from .mpora import MporaIE | from .mpora import MporaIE | ||||||
| from .mofosex import MofosexIE | from .mofosex import MofosexIE | ||||||
|  | from .mojvideo import MojvideoIE | ||||||
| from .mooshare import MooshareIE | from .mooshare import MooshareIE | ||||||
| from .morningstar import MorningstarIE | from .morningstar import MorningstarIE | ||||||
| from .motherless import MotherlessIE | from .motherless import MotherlessIE | ||||||
|   | |||||||
| @@ -42,7 +42,6 @@ class FiredriveIE(InfoExtractor): | |||||||
|         fields = dict(re.findall(r'''(?x)<input\s+ |         fields = dict(re.findall(r'''(?x)<input\s+ | ||||||
|             type="hidden"\s+ |             type="hidden"\s+ | ||||||
|             name="([^"]+)"\s+ |             name="([^"]+)"\s+ | ||||||
|             (?:id="[^"]+"\s+)? |  | ||||||
|             value="([^"]*)" |             value="([^"]*)" | ||||||
|             ''', webpage)) |             ''', webpage)) | ||||||
|  |  | ||||||
| @@ -66,7 +65,7 @@ class FiredriveIE(InfoExtractor): | |||||||
|         ext = self._search_regex(r'type:\s?\'([^\']+)\',', |         ext = self._search_regex(r'type:\s?\'([^\']+)\',', | ||||||
|                                  webpage, 'extension', fatal=False) |                                  webpage, 'extension', fatal=False) | ||||||
|         video_url = self._search_regex( |         video_url = self._search_regex( | ||||||
|             r'file:\s?\'(http[^\']+)\',', webpage, 'file url') |             r'file:\s?loadURL\(\'(http[^\']+)\'\),', webpage, 'file url') | ||||||
|  |  | ||||||
|         formats = [{ |         formats = [{ | ||||||
|             'format_id': 'sd', |             'format_id': 'sd', | ||||||
|   | |||||||
							
								
								
									
										58
									
								
								youtube_dl/extractor/mojvideo.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								youtube_dl/extractor/mojvideo.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | # coding: utf-8 | ||||||
|  | from __future__ import unicode_literals | ||||||
|  |  | ||||||
|  | import re | ||||||
|  |  | ||||||
|  | from .common import InfoExtractor | ||||||
|  | from ..utils import ( | ||||||
|  |     ExtractorError, | ||||||
|  |     parse_duration, | ||||||
|  | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class MojvideoIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://(?:www\.)?mojvideo\.com/video-(?P<display_id>[^/]+)/(?P<id>[a-f0-9]+)' | ||||||
|  |     _TEST = { | ||||||
|  |         'url': 'http://www.mojvideo.com/video-v-avtu-pred-mano-rdecelaska-alfi-nipic/3d1ed4497707730b2906', | ||||||
|  |         'md5': 'f7fd662cc8ce2be107b0d4f2c0483ae7', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': '3d1ed4497707730b2906', | ||||||
|  |             'display_id': 'v-avtu-pred-mano-rdecelaska-alfi-nipic', | ||||||
|  |             'ext': 'mp4', | ||||||
|  |             'title': 'V avtu pred mano rdečelaska - Alfi Nipič', | ||||||
|  |             'thumbnail': 're:^http://.*\.jpg$', | ||||||
|  |             'duration': 242, | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         mobj = re.match(self._VALID_URL, url) | ||||||
|  |         video_id = mobj.group('id') | ||||||
|  |         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) | ||||||
|  |  | ||||||
|  |         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)) | ||||||
|  |  | ||||||
|  |         return { | ||||||
|  |             'id': video_id, | ||||||
|  |             'display_id': display_id, | ||||||
|  |             'url': video_url, | ||||||
|  |             'title': title, | ||||||
|  |             'thumbnail': thumbnail, | ||||||
|  |             'duration': duration, | ||||||
|  |         } | ||||||
		Reference in New Issue
	
	Block a user
	 rupertbaxter2
					rupertbaxter2