X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fninegag.py;h=7f842b5c2560211cc88280e2b97cf107af588bfe;hb=16e7711e22648027739096560914a976b8eea786;hp=3352b833018315821d5964c8e3c907ceb362e21c;hpb=4be9f8c814c328213c8f60ecbb1e4d4e205b950e;p=youtube-dl diff --git a/youtube_dl/extractor/ninegag.py b/youtube_dl/extractor/ninegag.py index 3352b8330..7f842b5c2 100644 --- a/youtube_dl/extractor/ninegag.py +++ b/youtube_dl/extractor/ninegag.py @@ -1,8 +1,10 @@ from __future__ import unicode_literals import re +import json from .common import InfoExtractor +from ..utils import str_to_int class NineGagIE(InfoExtractor): @@ -21,12 +23,14 @@ class NineGagIE(InfoExtractor): "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", + 'uploader_id': 'UCdEH6EjDKwtTe-sO2f0_1XA', + 'uploader': 'CompilationChannel', + 'upload_date': '20131110', "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', @@ -34,6 +38,9 @@ class NineGagIE(InfoExtractor): '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", + 'uploader': 'Krishna Shenoi', + 'upload_date': '20140401', + 'uploader_id': 'krishnashenoi93', }, }] @@ -44,23 +51,14 @@ class NineGagIE(InfoExtractor): webpage = self._download_webpage(url, display_id) - youtube_id = self._html_search_regex( - r'(?s)id="jsid-video-post-container".*?data-external-id="([^"]+)"', - webpage, 'video ID') - title = self._html_search_regex( - r'(?s)id="jsid-video-post-container".*?data-title="([^"]+)"', - webpage, 'title', default=None) - if not title: - title = self._og_search_title(webpage) - description = self._html_search_regex( - r'(?s)
.*?

(.*?)

', webpage, - 'description', fatal=False) - view_count_str = self._html_search_regex( - r'

([0-9][0-9,]*) views

', webpage, 'view count', - fatal=False) - view_count = ( - None if view_count_str is None - else int(view_count_str.replace(',', ''))) + post_view = json.loads(self._html_search_regex( + r'var postView = new app\.PostView\({\s*post:\s*({.+?}),\s*posts:\s*prefetchedCurrentPost', webpage, 'post view')) + + youtube_id = post_view['videoExternalId'] + title = post_view['title'] + description = post_view['description'] + view_count = str_to_int(post_view['externalView']) + thumbnail = post_view.get('thumbnail_700w') or post_view.get('ogImageUrl') or post_view.get('thumbnail_300w') return { '_type': 'url_transparent', @@ -71,5 +69,5 @@ class NineGagIE(InfoExtractor): 'title': title, 'description': description, 'view_count': view_count, - 'thumbnail': self._og_search_thumbnail(webpage), + 'thumbnail': thumbnail, }