瀏覽代碼

Added an IE for gamespot. Although gamespot allows downloading but it is only available to registered users. With this IE no registration is required.

M.Yasoob Khalid 12 年之前
父節點
當前提交
bf64ff72db
共有 2 個文件被更改,包括 46 次插入0 次删除
  1. 1 0
      youtube_dl/extractor/__init__.py
  2. 45 0
      youtube_dl/extractor/gamespot.py

+ 1 - 0
youtube_dl/extractor/__init__.py

@@ -15,6 +15,7 @@ from .escapist import EscapistIE
 from .facebook import FacebookIE
 from .facebook import FacebookIE
 from .flickr import FlickrIE
 from .flickr import FlickrIE
 from .funnyordie import FunnyOrDieIE
 from .funnyordie import FunnyOrDieIE
+from .gamespot import GameSpotIE
 from .gametrailers import GametrailersIE
 from .gametrailers import GametrailersIE
 from .generic import GenericIE
 from .generic import GenericIE
 from .googleplus import GooglePlusIE
 from .googleplus import GooglePlusIE

+ 45 - 0
youtube_dl/extractor/gamespot.py

@@ -0,0 +1,45 @@
+import re
+import xml.etree.ElementTree
+
+from .common import InfoExtractor
+from ..utils import (
+    unified_strdate,
+)
+
+class GameSpotIE(InfoExtractor):
+    _VALID_URL = r'(?:http://)?(?:www\.)?gamespot\.com/([^/]+)/videos/([^/]+)-([^/d]+)/'
+    _TEST = {
+        u"url": u"http://www.gamespot.com/arma-iii/videos/arma-iii-community-guide-sitrep-i-6410818/",
+        u"file": u"6410818.mp4",
+        u"md5": u"5569d64ca98db01f0177c934fe8c1e9b",
+        u"info_dict": {
+            u"title": u"Arma III - Community Guide: SITREP I",
+            u"upload_date": u"20130627", 
+        }
+    }
+
+
+    def _real_extract(self, url):
+        mobj = re.match(self._VALID_URL, url)
+        video_id = mobj.group(3).split("-")[-1]
+        info_url = "http://www.gamespot.com/pages/video_player/xml.php?id="+str(video_id)
+        info_xml = self._download_webpage(info_url, video_id)
+        doc = xml.etree.ElementTree.fromstring(info_xml)
+        clip_el = doc.find('./playList/clip')
+
+        video_url = clip_el.find('./URI').text
+        title = clip_el.find('./title').text
+        ext = video_url.rpartition('.')[2]
+        thumbnail_url = clip_el.find('./screenGrabURI').text
+        view_count = int(clip_el.find('./views').text)
+        upload_date = unified_strdate(clip_el.find('./postDate').text)
+
+        return [{
+            'id'          : video_id,
+            'url'         : video_url,
+            'ext'         : ext,
+            'title'       : title,
+            'thumbnail'   : thumbnail_url,
+            'upload_date' : upload_date,
+            'view_count'  : view_count,
+        }]