X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fhitbox.py;h=d7cd8bb7e6928c74786f20f3957eff0f94eb7a5c;hb=bc94bd510bfb8a98f7456912f930c69c21bd6e15;hp=84bd7c0804eb2966c7062288a1a190c8509f62fc;hpb=5f0d813d9395848e92a1c6d83335360652d654c1;p=youtube-dl.git diff --git a/youtube_dl/extractor/hitbox.py b/youtube_dl/extractor/hitbox.py index 84bd7c080..d7cd8bb7e 100644 --- a/youtube_dl/extractor/hitbox.py +++ b/youtube_dl/extractor/hitbox.py @@ -10,6 +10,7 @@ from ..utils import ( float_or_none, int_or_none, compat_str, + determine_ext, ) @@ -95,13 +96,33 @@ class HitboxIE(InfoExtractor): 'https://www.hitbox.tv/api/player/config/video/%s' % video_id, video_id) - clip = player_config.get('clip') - video_url = clip.get('url') - res = clip.get('bitrates', [])[0].get('label') + formats = [] + for video in player_config['clip']['bitrates']: + label = video.get('label') + if label == 'Auto': + continue + video_url = video.get('url') + if not video_url: + continue + bitrate = int_or_none(video.get('bitrate')) + if determine_ext(video_url) == 'm3u8': + if not video_url.startswith('http'): + continue + formats.append({ + 'url': video_url, + 'ext': 'mp4', + 'tbr': bitrate, + 'format_note': label, + 'protocol': 'm3u8_native', + }) + else: + formats.append({ + 'url': video_url, + 'tbr': bitrate, + 'format_note': label, + }) - metadata['resolution'] = res - metadata['url'] = video_url - metadata['protocol'] = 'm3u8' + metadata['formats'] = formats return metadata @@ -147,12 +168,27 @@ class HitboxLiveIE(HitboxIE): servers.append(base_url) for stream in cdn.get('bitrates'): label = stream.get('label') - if label != 'Auto': + if label == 'Auto': + continue + stream_url = stream.get('url') + if not stream_url: + continue + bitrate = int_or_none(stream.get('bitrate')) + if stream.get('provider') == 'hls' or determine_ext(stream_url) == 'm3u8': + if not stream_url.startswith('http'): + continue + formats.append({ + 'url': stream_url, + 'ext': 'mp4', + 'tbr': bitrate, + 'format_note': label, + 'rtmp_live': True, + }) + else: formats.append({ - 'url': '%s/%s' % (base_url, stream.get('url')), + 'url': '%s/%s' % (base_url, stream_url), 'ext': 'mp4', - 'vbr': stream.get('bitrate'), - 'resolution': label, + 'tbr': bitrate, 'rtmp_live': True, 'format_note': host, 'page_url': url,