mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[twitch] Add support for vods (Closes #4512)
This commit is contained in:
		| @@ -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( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․