diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 392b1f92b..0453fc91c 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -676,6 +676,7 @@ from .motorsport import MotorsportIE from .movieclips import MovieClipsIE from .moviezine import MoviezineIE from .movingimage import MovingImageIE +from .mqube import MQubeIE from .msn import MSNIE from .mtv import ( MTVIE, diff --git a/youtube_dl/extractor/mqube.py b/youtube_dl/extractor/mqube.py new file mode 100644 index 000000000..e42625904 --- /dev/null +++ b/youtube_dl/extractor/mqube.py @@ -0,0 +1,49 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor + + +class MQubeIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?mqube\.net/play/(?P[0-9]+)' + _TEST = { + 'url': 'https://mqube.net/play/20181228624995', + 'md5': 'b5ec46773f7b7c5286d3ed3c85faab92', + 'info_dict': { + 'id': '20181228624995', + 'ext': 'wav', + 'title': 'deaky', + 'thumbnail': r're:^https?://.*\.gif(\?.+?)$', + 'description': 'mih', + 'uploader_id': 'muraokamayuko', + 'views': int, + # TODO more properties, either as: + # * A value + # * MD5 checksum; start the string with md5: + # * A regular expression; start the string with re: + # * Any Python type (for example int or float) + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + audio_url = self._search_regex(r'', webpage, 'audio_url', group='audio_url', fatal=False) + title = self._search_regex(r'
(?P.+?)</div>', webpage, 'title', group='title', fatal=False) + uploader_id = self._search_regex(r'<a class=(["\'])all-items\1 href=\1/user/(?P<uploader_id>.+?)\1>', webpage, 'uploader_id', group='uploader_id', fatal=False) + # uploader = self._search_regex(r'<a[^>]+class=(["\'])all-items\1[^>]*>(?P<uploader>[^<]+)', webpage, 'uploader', group='uploader', fatal=False) + views = int(self._search_regex(r'<span[^>]+class=(["\'])ajax-pv-counter num-font\1[^>]*>(?P<views>[^<]+)', webpage, 'view_count', group='views', fatal=False)) + description = self._og_search_description(webpage) + thumbnail = self._og_search_thumbnail(webpage) + + return { + 'id': video_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'uploader_id': uploader_id, + 'views': views, + 'url': audio_url, + # TODO more properties (see youtube_dl/extractor/common.py) + }