mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-29 03:23:02 +00:00
[extractor/Stripchat] Fix extractor (#5985)
Authored by bashonly, JChris246 Closes #5963, closes #5866
This commit is contained in:
parent
c62e64cf01
commit
7d5f919bad
1 changed files with 10 additions and 5 deletions
|
@ -1,5 +1,10 @@
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..utils import ExtractorError, lowercase_escape, traverse_obj
|
from ..utils import (
|
||||||
|
ExtractorError,
|
||||||
|
UserNotLive,
|
||||||
|
lowercase_escape,
|
||||||
|
traverse_obj
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class StripchatIE(InfoExtractor):
|
class StripchatIE(InfoExtractor):
|
||||||
|
@ -35,16 +40,16 @@ def _real_extract(self, url):
|
||||||
if traverse_obj(data, ('viewCam', 'show'), expected_type=dict):
|
if traverse_obj(data, ('viewCam', 'show'), expected_type=dict):
|
||||||
raise ExtractorError('Model is in private show', expected=True)
|
raise ExtractorError('Model is in private show', expected=True)
|
||||||
elif not traverse_obj(data, ('viewCam', 'model', 'isLive'), expected_type=bool):
|
elif not traverse_obj(data, ('viewCam', 'model', 'isLive'), expected_type=bool):
|
||||||
raise ExtractorError('Model is offline', expected=True)
|
raise UserNotLive(video_id=video_id)
|
||||||
|
|
||||||
server = traverse_obj(data, ('viewCam', 'viewServers', 'flashphoner-hls'), expected_type=str)
|
server = traverse_obj(data, ('viewCam', 'viewServers', 'flashphoner-hls'), expected_type=str)
|
||||||
model_id = traverse_obj(data, ('viewCam', 'model', 'id'), expected_type=int)
|
model_id = traverse_obj(data, ('viewCam', 'model', 'id'), expected_type=int)
|
||||||
|
|
||||||
formats = []
|
formats = []
|
||||||
for host in traverse_obj(data, (
|
for host in traverse_obj(data, ('config', 'data', (
|
||||||
'config', 'data', (('featuresV2', 'hlsFallback', 'fallbackDomains', ...), 'hlsStreamHost'))):
|
(('features', 'featuresV2'), 'hlsFallback', 'fallbackDomains', ...), 'hlsStreamHost'))):
|
||||||
formats = self._extract_m3u8_formats(
|
formats = self._extract_m3u8_formats(
|
||||||
f'https://b-{server}.{host}/hls/{model_id}/{model_id}.m3u8',
|
f'https://b-{server}.{host}/hls/{model_id}/master/{model_id}_auto.m3u8',
|
||||||
video_id, ext='mp4', m3u8_id='hls', fatal=False, live=True)
|
video_id, ext='mp4', m3u8_id='hls', fatal=False, live=True)
|
||||||
if formats:
|
if formats:
|
||||||
break
|
break
|
||||||
|
|
Loading…
Reference in a new issue