Rebased, fixed and extended LiveLeak.com support
authorFilippo Valsorda <filippo.valsorda@gmail.com>
Fri, 29 Mar 2013 14:13:24 +0000 (15:13 +0100)
committerFilippo Valsorda <filippo.valsorda@gmail.com>
Fri, 29 Mar 2013 14:13:24 +0000 (15:13 +0100)
close #757 - close #761

test/tests.json
youtube_dl/InfoExtractors.py

index fd9d333327b2de3fc8f0b5b3dabb0336e84e1b39..929d454ffa115582d85053a04034a27d03096246 100644 (file)
     "info_dict": {
         "title": "Vulkanausbruch in Ecuador: Der \"Feuerschlund\" ist wieder aktiv"
     }
+  },
+  {
+    "name": "LiveLeak",
+    "md5":  "0813c2430bea7a46bf13acf3406992f4",
+    "url":  "http://www.liveleak.com/view?i=757_1364311680",
+    "file":  "757_1364311680.mp4",
+    "info_dict": {
+        "title": "Most unlucky car accident",
+        "description": "extremely bad day for this guy..!",
+        "uploader": "ljfriel2"
+    }
   }
 ]
index eb1f32480f685b3c8c7b8646f41d340ff67d4c1d..45a23989a2fb49abf4c44b50a23e8942633dd535 100755 (executable)
@@ -4160,9 +4160,9 @@ class SpiegelIE(InfoExtractor):
         }
         return [info]
 
-class liveleakIE(InfoExtractor):
+class LiveLeakIE(InfoExtractor):
 
-    _VALID_URL = r'^(?:http?://)?(?:\w+\.)?liveleak\.com/view\?(?:.*?)i=(?P<video_id>\d+)(?:.*)'
+    _VALID_URL = r'^(?:http?://)?(?:\w+\.)?liveleak\.com/view\?(?:.*?)i=(?P<video_id>[\w_]+)(?:.*)'
     IE_NAME = u'liveleak'
 
     def _real_extract(self, url):
@@ -4171,17 +4171,20 @@ class liveleakIE(InfoExtractor):
             self._downloader.trouble(u'ERROR: invalid URL: %s' % url)
             return
 
-        video_id = mobj.group(1)
-        if video_id.endswith('/index.html'):
-            video_id = video_id[:-len('/index.html')]
+        video_id = mobj.group('video_id')
 
         webpage = self._download_webpage(url, video_id)
 
-        video_url = u'http://edge.liveleak.com/80281E/u/u/ll2_player_files/mp55/player.swf?config=http://www.liveleak.com/player?a=config%26item_token=' + video_id
+        m = re.search(r'file: "(.*?)",', webpage)
+        if not m:
+            self._downloader.report_error(u'unable to find video url')
+            return
+        video_url = m.group(1)
+
         m = re.search(r'<meta property="og:title" content="(?P<title>.*?)"', webpage)
         if not m:
             self._downloader.trouble(u'Cannot find video title')
-        title = unescapeHTML(m.group('title'))
+        title = unescapeHTML(m.group('title')).replace('LiveLeak.com -', '').strip()
 
         m = re.search(r'<meta property="og:description" content="(?P<desc>.*?)"', webpage)
         if m:
@@ -4189,13 +4192,19 @@ class liveleakIE(InfoExtractor):
         else:
             desc = None
 
+        m = re.search(r'By:.*?(\w+)</a>', webpage)
+        if m:
+            uploader = clean_html(m.group(1))
+        else:
+            uploader = None
 
         info = {
             'id':  video_id,
             'url': video_url,
             'ext': 'mp4',
             'title': title,
-            'description': desc
+            'description': desc,
+            'uploader': uploader
         }
 
         return [info]
@@ -4250,6 +4259,6 @@ def gen_extractors():
         TEDIE(),
         MySpassIE(),
         SpiegelIE(),
-        liveleakIE(),
+        LiveLeakIE(),
         GenericIE()
     ]