[youtube] Fix extraction.
[youtube-dl] / youtube_dl / extractor / huajiao.py
index 352b481202720fc83dd1d2c0abc65f2528b971ce..4ca275dda18e45e18fd628a0c8a5104fd6cfb560 100644 (file)
@@ -1,8 +1,11 @@
 # coding: utf-8
 from __future__ import unicode_literals
 
-from ..utils import parse_duration, parse_iso8601
 from .common import InfoExtractor
+from ..utils import (
+    parse_duration,
+    parse_iso8601,
+)
 
 
 class HuajiaoIE(InfoExtractor):
@@ -17,7 +20,7 @@ class HuajiaoIE(InfoExtractor):
             'title': '#新人求关注#',
             'description': 're:.*',
             'duration': 2424.0,
-            'thumbnail': 're:^https?://.*\.jpg$',
+            'thumbnail': r're:^https?://.*\.jpg$',
             'timestamp': 1475866459,
             'upload_date': '20161007',
             'uploader': 'Penny_余姿昀',
@@ -30,21 +33,24 @@ class HuajiaoIE(InfoExtractor):
         webpage = self._download_webpage(url, video_id)
 
         feed_json = self._search_regex(
-            r'var\s*feed\s*=\s*({.*})', webpage, 'feed json str')
+            r'var\s+feed\s*=\s*({.+})', webpage, 'feed json')
         feed = self._parse_json(feed_json, video_id)
 
         description = self._html_search_meta(
             'description', webpage, 'description', fatal=False)
 
+        def get(section, field):
+            return feed.get(section, {}).get(field)
+
         return {
             'id': video_id,
             'title': feed['feed']['formated_title'],
             'description': description,
-            'duration': parse_duration(feed['feed']['duration']),
-            'thumbnail': feed['feed']['image'],
-            'timestamp': parse_iso8601(feed['creatime'], ' '),
-            'uploader': feed['author']['nickname'],
-            'uploader_id': feed['author']['uid'],
+            'duration': parse_duration(get('feed', 'duration')),
+            'thumbnail': get('feed', 'image'),
+            'timestamp': parse_iso8601(feed.get('creatime'), ' '),
+            'uploader': get('author', 'nickname'),
+            'uploader_id': get('author', 'uid'),
             'formats': self._extract_m3u8_formats(
                 feed['feed']['m3u8'], video_id, 'mp4', 'm3u8_native'),
         }