mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2026-08-27 14:23:41 +03:00
[ie/showroom] Fix extractor (#17488)
Closes #17331 Authored by: wlerin, doe1080 Co-authored-by: doe1080 <98906116+doe1080@users.noreply.github.com>
This commit is contained in:
@@ -17,7 +17,11 @@ from ..utils.traversal import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ShowRoomLiveIE(InfoExtractor):
|
class ShowRoomBaseIE(InfoExtractor):
|
||||||
|
_API_BASE = 'https://www.showroom-live.com/api'
|
||||||
|
|
||||||
|
|
||||||
|
class ShowRoomLiveIE(ShowRoomBaseIE):
|
||||||
IE_NAME = 'showroom:live'
|
IE_NAME = 'showroom:live'
|
||||||
IE_DESC = 'SHOWROOM'
|
IE_DESC = 'SHOWROOM'
|
||||||
|
|
||||||
@@ -29,19 +33,11 @@ class ShowRoomLiveIE(InfoExtractor):
|
|||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
broadcaster_id = self._match_id(url)
|
broadcaster_id = self._match_id(url)
|
||||||
webpage = self._download_webpage(
|
room_status = self._download_json(
|
||||||
url, broadcaster_id, headers={'Accept-Language': 'ja'})
|
f'{self._API_BASE}/room/status', broadcaster_id,
|
||||||
nuxt_data = self._search_nuxt_json(webpage, broadcaster_id)['data']
|
query={'room_url_key': broadcaster_id})
|
||||||
|
start_timestamp = traverse_obj(room_status, ('started_at', {int_or_none}))
|
||||||
cookies = self._get_cookies(url)
|
is_live = traverse_obj(room_status, ('is_live', {bool}))
|
||||||
sr_id = traverse_obj(cookies, ('sr_id', 'value', {str}, filter))
|
|
||||||
if not sr_id:
|
|
||||||
self.raise_login_required()
|
|
||||||
|
|
||||||
room_profile = traverse_obj(nuxt_data, (
|
|
||||||
f'roomProfile-{broadcaster_id}-{sr_id}', {dict}))
|
|
||||||
start_timestamp = traverse_obj(room_profile, ('current_live_started_at', {int_or_none}))
|
|
||||||
is_live = traverse_obj(room_profile, ('is_onlive', {bool}))
|
|
||||||
|
|
||||||
if not is_live:
|
if not is_live:
|
||||||
if start_timestamp:
|
if start_timestamp:
|
||||||
@@ -59,12 +55,15 @@ class ShowRoomLiveIE(InfoExtractor):
|
|||||||
}
|
}
|
||||||
raise UserNotLive(video_id=broadcaster_id)
|
raise UserNotLive(video_id=broadcaster_id)
|
||||||
|
|
||||||
room_id = traverse_obj(room_profile, ('room_id', {str_or_none}))
|
room_id = traverse_obj(room_status, ('room_id', {str_or_none}))
|
||||||
|
room_profile = self._download_json(
|
||||||
|
f'{self._API_BASE}/room/profile',
|
||||||
|
broadcaster_id, query={'room_id': room_id})
|
||||||
room_name = traverse_obj(room_profile, (
|
room_name = traverse_obj(room_profile, (
|
||||||
('room_name', 'main_name'), {clean_html}, filter, any))
|
('room_name', 'main_name'), {clean_html}, filter, any))
|
||||||
|
|
||||||
streaming_url_list = self._download_json(
|
streaming_url_list = self._download_json(
|
||||||
'https://www.showroom-live.com/api/live/streaming_url',
|
f'{self._API_BASE}/live/streaming_url',
|
||||||
broadcaster_id, query={'room_id': room_id})
|
broadcaster_id, query={'room_id': room_id})
|
||||||
m3u8_url = traverse_obj(streaming_url_list, (
|
m3u8_url = traverse_obj(streaming_url_list, (
|
||||||
'streaming_url_list', lambda _, v: v['type'] == 'hls_all',
|
'streaming_url_list', lambda _, v: v['type'] == 'hls_all',
|
||||||
@@ -84,13 +83,13 @@ class ShowRoomLiveIE(InfoExtractor):
|
|||||||
'description': ('description', {clean_html}, filter),
|
'description': ('description', {clean_html}, filter),
|
||||||
'genres': ('genre_name', {clean_html}, filter, all, filter),
|
'genres': ('genre_name', {clean_html}, filter, all, filter),
|
||||||
'tags': ('live_tags', ..., 'name', {clean_html}, filter, all, filter),
|
'tags': ('live_tags', ..., 'name', {clean_html}, filter, all, filter),
|
||||||
'thumbnail': ('image_square', {url_or_none}),
|
'thumbnail': (('image_square', 'image'), {url_or_none}, any),
|
||||||
'view_count': ('view_num', {int_or_none}),
|
'view_count': ('view_num', {int_or_none}),
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class ShowRoomVodIE(InfoExtractor):
|
class ShowRoomVodIE(ShowRoomBaseIE):
|
||||||
IE_NAME = 'showroom:vod'
|
IE_NAME = 'showroom:vod'
|
||||||
|
|
||||||
_VALID_URL = r'https?://(?:www\.)?showroom-live\.com/episode/watch\?(?:[^#]+&)?id=(?P<id>\w+)'
|
_VALID_URL = r'https?://(?:www\.)?showroom-live\.com/episode/watch\?(?:[^#]+&)?id=(?P<id>\w+)'
|
||||||
@@ -111,7 +110,7 @@ class ShowRoomVodIE(InfoExtractor):
|
|||||||
{extract_attributes}, 'data-episode', {json.loads}, {dict}))
|
{extract_attributes}, 'data-episode', {json.loads}, {dict}))
|
||||||
|
|
||||||
streaming_url_list = self._download_json(
|
streaming_url_list = self._download_json(
|
||||||
'https://www.showroom-live.com/api/episode/streaming_url',
|
f'{self._API_BASE}/episode/streaming_url',
|
||||||
episode_id, query={'episode_id': episode_id})
|
episode_id, query={'episode_id': episode_id})
|
||||||
m3u8_url = traverse_obj(streaming_url_list, (
|
m3u8_url = traverse_obj(streaming_url_list, (
|
||||||
'streaming_url_list', 'hls_all',
|
'streaming_url_list', 'hls_all',
|
||||||
|
|||||||
Reference in New Issue
Block a user