فهرست منبع

Add IGNIE

Only for www.ign.com, it doesn't support country specific versions (like es.ign.com)
Jaime Marquínez Ferrándiz 12 سال پیش
والد
کامیت
2ef648d3d3
2فایلهای تغییر یافته به همراه46 افزوده شده و 0 حذف شده
  1. 1 0
      youtube_dl/extractor/__init__.py
  2. 45 0
      youtube_dl/extractor/ign.py

+ 1 - 0
youtube_dl/extractor/__init__.py

@@ -27,6 +27,7 @@ from .googlesearch import GoogleSearchIE
 from .hotnewhiphop import HotNewHipHopIE
 from .hotnewhiphop import HotNewHipHopIE
 from .howcast import HowcastIE
 from .howcast import HowcastIE
 from .hypem import HypemIE
 from .hypem import HypemIE
+from .ign import IGNIE
 from .ina import InaIE
 from .ina import InaIE
 from .infoq import InfoQIE
 from .infoq import InfoQIE
 from .instagram import InstagramIE
 from .instagram import InstagramIE

+ 45 - 0
youtube_dl/extractor/ign.py

@@ -0,0 +1,45 @@
+import re
+import json
+
+from .common import InfoExtractor
+from ..utils import (
+    determine_ext,
+)
+
+class IGNIE(InfoExtractor):
+    _VALID_URL = r'http://www.ign.com/videos/.+/(?P<name>.+)'
+    IE_NAME = u'ign.com'
+
+    _TEST = {
+        u'url': u'http://www.ign.com/videos/2013/06/05/the-last-of-us-review',
+        u'file': u'8f862beef863986b2785559b9e1aa599.mp4',
+        u'md5': u'eac8bdc1890980122c3b66f14bdd02e9',
+        u'info_dict': {
+            u'title': u'The Last of Us Review',
+            u'description': u'md5:c8946d4260a4d43a00d5ae8ed998870c',
+        }
+    }
+
+    def _real_extract(self, url):
+        mobj = re.match(self._VALID_URL, url)
+        name = mobj.group('name')
+        config_url = url + '.config'
+        webpage = self._download_webpage(url, name)
+        config = json.loads(self._download_webpage(config_url, name, u'Downloading video info'))
+
+        self.report_extraction(name)
+        description = self._html_search_regex(r'<span class="page-object-description">(.+?)</span>',
+                                              webpage, 'video description', flags=re.DOTALL)
+        media = config['playlist']['media']
+        video_url = media['url']
+
+        return {'id': media['metadata']['videoId'],
+                'url': video_url,
+                'ext': determine_ext(video_url),
+                'title': media['metadata']['title'],
+                'description': description,
+                'thumbnail': media['poster'][0]['url'].replace('{size}', 'small'),
+                }
+        
+
+