瀏覽代碼

ustreamIE

Jaime Marquínez Ferrándiz 12 年之前
父節點
當前提交
278986ea0f
共有 3 個文件被更改,包括 38 次插入0 次删除
  1. 8 0
      test/tests.json
  2. 29 0
      youtube_dl/InfoExtractors.py
  3. 1 0
      youtube_dl/__init__.py

+ 8 - 0
test/tests.json

@@ -115,5 +115,13 @@
     "info_dict": {
         "title": "Terraria 1.1 Trailer"
     }
+  },
+  {
+    "name": "Ustream",
+    "url": "http://www.ustream.tv/recorded/20274954",
+    "files": [["20274954.flv", "088f151799e8f572f84eb62f17d73e5c" ]],
+    "info_dict": {
+        "title": "Young Americans for Liberty February 7, 2012 2:28 AM"
+    }
   }
 ]

+ 29 - 0
youtube_dl/InfoExtractors.py

@@ -3805,3 +3805,32 @@ class SteamIE(InfoExtractor):
                   }
             videos.append(info)
         return videos
+        
+class UstreamIE(InfoExtractor):
+    _VALID_URL = r'http://www.ustream.tv/recorded/(?P<videoID>\d+)'
+    IE_NAME = u'ustream'
+    
+    def _real_extract(self, url):
+        m = re.match(self._VALID_URL, url)
+        video_id = m.group('videoID')
+        video_url = u'http://tcdn.ustream.tv/video/%s' % video_id
+        try:
+            urlh = compat_urllib_request.urlopen(url)
+            webpage_bytes = urlh.read()
+            webpage = webpage_bytes.decode('utf-8', 'ignore')
+        except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
+            self._downloader.trouble(u'ERROR: unable to download webpage: %s' % compat_str(err))
+            return
+        m = re.search(r'data-title="(?P<title>.+)"',webpage)
+        title = m.group('title')
+        m = re.search(r'<a class="state" data-content-type="channel" data-content-id="(?P<uploader>\d+)"',webpage)
+        uploader = m.group('uploader')
+        info = {
+                'id':video_id,
+                'url':video_url,
+                'ext': 'flv',
+                'title': title,
+                'uploader': uploader
+                  }
+        return [info]
+    pass

+ 1 - 0
youtube_dl/__init__.py

@@ -314,6 +314,7 @@ def gen_extractors():
         FunnyOrDieIE(),
         TweetReelIE(),
         SteamIE(),
+        UstreamIE(),
         GenericIE()
     ]