[twitcasting] Fix extraction (#2788)

Authored by: Lesmiscore
This commit is contained in:
Lesmiscore (Naoya Ozaki) 2022-02-15 23:30:11 +09:00 committed by GitHub
parent 812283199a
commit df635a09a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -86,9 +86,14 @@ def _real_extract(self, url):
request_data = urlencode_postdata({ request_data = urlencode_postdata({
'password': video_password, 'password': video_password,
}, encoding='utf-8') }, encoding='utf-8')
webpage = self._download_webpage( webpage, urlh = self._download_webpage_handle(
url, video_id, data=request_data, url, video_id, data=request_data,
headers={'Origin': 'https://twitcasting.tv'}) headers={'Origin': 'https://twitcasting.tv'})
if urlh.geturl() != url and request_data:
webpage = self._download_webpage(
urlh.geturl(), video_id, data=request_data,
headers={'Origin': 'https://twitcasting.tv'},
note='Retrying authentication')
title = (clean_html(get_element_by_id('movietitle', webpage)) title = (clean_html(get_element_by_id('movietitle', webpage))
or self._html_search_meta(['og:title', 'twitter:title'], webpage, fatal=True)) or self._html_search_meta(['og:title', 'twitter:title'], webpage, fatal=True))
@ -149,11 +154,12 @@ def find_dmu(x):
m3u8_url, video_id, ext='mp4', m3u8_id='hls', m3u8_url, video_id, ext='mp4', m3u8_id='hls',
live=True, headers=self._M3U8_HEADERS) live=True, headers=self._M3U8_HEADERS)
formats.extend(self._extract_m3u8_formats( if traverse_obj(stream_server_data, ('hls', 'source')):
m3u8_url, video_id, ext='mp4', m3u8_id='source', formats.extend(self._extract_m3u8_formats(
live=True, query={'mode': 'source'}, m3u8_url, video_id, ext='mp4', m3u8_id='source',
note='Downloading source quality m3u8', live=True, query={'mode': 'source'},
headers=self._M3U8_HEADERS, fatal=False)) note='Downloading source quality m3u8',
headers=self._M3U8_HEADERS, fatal=False))
if has_websockets: if has_websockets:
qq = qualities(['base', 'mobilesource', 'main']) qq = qualities(['base', 'mobilesource', 'main'])
@ -164,11 +170,12 @@ def find_dmu(x):
'format_id': 'ws-%s' % mode, 'format_id': 'ws-%s' % mode,
'ext': 'mp4', 'ext': 'mp4',
'quality': qq(mode), 'quality': qq(mode),
'source_preference': -10,
# TwitCasting simply sends moof atom directly over WS # TwitCasting simply sends moof atom directly over WS
'protocol': 'websocket_frag', 'protocol': 'websocket_frag',
}) })
self._sort_formats(formats) self._sort_formats(formats, ('source',))
infodict = { infodict = {
'formats': formats 'formats': formats