youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit 0cd358676c06cc5915b3fb98388645833da4d7e0
parent 43113d92cc89cb6c9ff98a1b45512a92c71abb23
Author: Filippo Valsorda <filippo.valsorda@gmail.com>
Date:   Fri, 29 Mar 2013 15:13:24 +0100

Rebased, fixed and extended LiveLeak.com support

close #757 - close #761

Diffstat:
Mtest/tests.json | 11+++++++++++
Myoutube_dl/InfoExtractors.py | 27++++++++++++++++++---------
2 files changed, 29 insertions(+), 9 deletions(-)

diff --git 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 @@ -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() ]