youtube-dl

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

commit a22524b00438fc7dcde1e041d7a576eb443b4743
parent 87c4c21e7583b8d6af04dda822768c226df4ca25
Author: Sergey M․ <dstftw@gmail.com>
Date:   Thu, 18 Dec 2014 21:25:42 +0600

[twitch] Add support for vods (Closes #4512)

Diffstat:
Myoutube_dl/extractor/twitch.py | 16++++++++++++++++
1 file changed, 16 insertions(+), 0 deletions(-)

diff --git a/youtube_dl/extractor/twitch.py b/youtube_dl/extractor/twitch.py @@ -22,6 +22,7 @@ class TwitchIE(InfoExtractor): _VALID_URL = r"""(?x)^(?:http://)?(?:www\.)?twitch\.tv/ (?: (?P<channelid>[^/]+)| + (?:(?:[^/]+)/v/(?P<vodid>[^/]+))| (?:(?:[^/]+)/b/(?P<videoid>[^/]+))| (?:(?:[^/]+)/c/(?P<chapterid>[^/]+)) ) @@ -70,11 +71,24 @@ class TwitchIE(InfoExtractor): def _extract_media(self, item, item_id): ITEMS = { 'a': 'video', + 'v': 'vod', 'c': 'chapter', } info = self._extract_info(self._download_json( '%s/kraken/videos/%s%s' % (self._API_BASE, item, item_id), item_id, 'Downloading %s info JSON' % ITEMS[item])) + + if item == 'v': + access_token = self._download_json( + '%s/api/vods/%s/access_token' % (self._API_BASE, item_id), item_id, + 'Downloading %s access token' % ITEMS[item]) + formats = self._extract_m3u8_formats( + 'http://usher.twitch.tv/vod/%s?nauth=%s&nauthsig=%s' + % (item_id, access_token['token'], access_token['sig']), + item_id, 'mp4') + info['formats'] = formats + return info + response = self._download_json( '%s/api/videos/%s%s' % (self._API_BASE, item, item_id), item_id, 'Downloading %s playlist JSON' % ITEMS[item]) @@ -209,6 +223,8 @@ class TwitchIE(InfoExtractor): """ elif mobj.group('videoid'): return self._extract_media('a', mobj.group('videoid')) + elif mobj.group('vodid'): + return self._extract_media('v', mobj.group('vodid')) elif mobj.group('channelid'): channel_id = mobj.group('channelid') info = self._download_json(