]> git.bitcoin.ninja Git - youtube-dl/commitdiff
Added an IE for gamespot. Although gamespot allows downloading but it is only availab...
authorM.Yasoob Khalid <yasoob.khld@gmail.com>
Fri, 28 Jun 2013 05:34:01 +0000 (10:34 +0500)
committerPhilipp Hagemeister <phihag@phihag.de>
Fri, 28 Jun 2013 16:42:45 +0000 (18:42 +0200)
youtube_dl/extractor/__init__.py
youtube_dl/extractor/gamespot.py [new file with mode: 0644]

index 20dec216c4a75d8f85a8716abd7de83643a7c60b..9fc5a7315f6e99ddb327475e2adeb23101e32307 100644 (file)
@@ -15,6 +15,7 @@ from .escapist import EscapistIE
 from .facebook import FacebookIE
 from .flickr import FlickrIE
 from .funnyordie import FunnyOrDieIE
+from .gamespot import GameSpotIE
 from .gametrailers import GametrailersIE
 from .generic import GenericIE
 from .googleplus import GooglePlusIE
diff --git a/youtube_dl/extractor/gamespot.py b/youtube_dl/extractor/gamespot.py
new file mode 100644 (file)
index 0000000..cec3b7a
--- /dev/null
@@ -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,
+        }]