X-Git-Url: https://git.rapsys.eu/youtubedl/blobdiff_plain/63a6927374492ef47c8fd6de67d0760ace4dd0ed..22bdf6fb907cce994fbfe062879d2a991e597a3f:/youtube_dl/extractor/ninegag.py diff --git a/youtube_dl/extractor/ninegag.py b/youtube_dl/extractor/ninegag.py index ea986c0..33daa0d 100644 --- a/youtube_dl/extractor/ninegag.py +++ b/youtube_dl/extractor/ninegag.py @@ -1,43 +1,68 @@ -import json +from __future__ import unicode_literals + import re +import json from .common import InfoExtractor +from ..utils import str_to_int class NineGagIE(InfoExtractor): IE_NAME = '9gag' - _VALID_URL = r'^https?://(?:www\.)?9gag\.tv/v/(?P[0-9]+)' - - _TEST = { - u"url": u"http://9gag.tv/v/1912", - u"file": u"1912.mp4", - u"info_dict": { - u"description": u"This 3-minute video will make you smile and then make you feel untalented and insignificant. Anyway, you should share this awesomeness. (Thanks, Dino!)", - u"title": u"\"People Are Awesome 2013\" Is Absolutely Awesome" + _VALID_URL = r'''(?x)^https?://(?:www\.)?9gag\.tv/ + (?: + v/(?P[0-9]+)| + p/(?P[a-zA-Z0-9]+)/(?P[^?#/]+) + ) + ''' + + _TESTS = [{ + "url": "http://9gag.tv/v/1912", + "info_dict": { + "id": "1912", + "ext": "mp4", + "description": "This 3-minute video will make you smile and then make you feel untalented and insignificant. Anyway, you should share this awesomeness. (Thanks, Dino!)", + "title": "\"People Are Awesome 2013\" Is Absolutely Awesome", + "view_count": int, + "thumbnail": "re:^https?://", + }, + 'add_ie': ['Youtube'] + }, + { + 'url': 'http://9gag.tv/p/KklwM/alternate-banned-opening-scene-of-gravity?ref=fsidebar', + 'info_dict': { + 'id': 'KklwM', + 'ext': 'mp4', + 'display_id': 'alternate-banned-opening-scene-of-gravity', + "description": "While Gravity was a pretty awesome movie already, YouTuber Krishna Shenoi came up with a way to improve upon it, introducing a much better solution to Sandra Bullock's seemingly endless tumble in space. The ending is priceless.", + 'title': "Banned Opening Scene Of \"Gravity\" That Changes The Whole Movie", }, - u'add_ie': [u'Youtube'] - } + }] def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = mobj.group('numid') or mobj.group('id') + display_id = mobj.group('display_id') or video_id + + webpage = self._download_webpage(url, display_id) - webpage = self._download_webpage(url, video_id) - data_json = self._html_search_regex(r'''(?x) -