diff options
| -rw-r--r-- | youtube_dl/extractor/twitch.py | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/twitch.py b/youtube_dl/extractor/twitch.py index 715f9930c..b11a1d561 100644 --- 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( | 
