diff --git a/test/tests.json b/test/tests.json index fd9d33332..929d454ff 100644 --- a/test/tests.json +++ b/test/tests.json @@ -308,5 +308,16 @@ "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" + } } ] diff --git a/youtube_dl/InfoExtractors.py b/youtube_dl/InfoExtractors.py index eb1f32480..45a23989a 100755 --- a/youtube_dl/InfoExtractors.py +++ b/youtube_dl/InfoExtractors.py @@ -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\d+)(?:.*)' + _VALID_URL = r'^(?:http?://)?(?:\w+\.)?liveleak\.com/view\?(?:.*?)i=(?P[\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'', 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() ]