diff options
Diffstat (limited to 'youtube_dl/extractor/ninegag.py')
| -rw-r--r-- | youtube_dl/extractor/ninegag.py | 41 | 
1 files changed, 41 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/ninegag.py b/youtube_dl/extractor/ninegag.py new file mode 100644 index 000000000..cc00ffbcc --- /dev/null +++ b/youtube_dl/extractor/ninegag.py @@ -0,0 +1,41 @@ +import json +import re + +from .common import InfoExtractor + + +class NineGagIE(InfoExtractor): +    IE_NAME = '9gag' +    _VALID_URL = r'^https?://(?:www\.)?9gag\.tv/v/(?P<id>[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" +        }, +        u'add_ie': [u'Youtube'] +    } + +    def _real_extract(self, url): +        mobj = re.match(self._VALID_URL, url) +        video_id = mobj.group('id') + +        webpage = self._download_webpage(url, video_id) +        data_json = self._html_search_regex(r'''(?x) +            <div\s*id="tv-video"\s*data-video-source="youtube"\s* +                data-video-meta="([^"]+)"''', webpage, u'video metadata') + +        data = json.loads(data_json) + +        return { +            '_type': 'url_transparent', +            'url': data['youtubeVideoId'], +            'ie_key': 'Youtube', +            'id': video_id, +            'title': data['title'], +            'description': data['description'], +            'view_count': int(data['view_count']), +            'thumbnail': data['thumbnail_url'], +        } | 
