mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-27 15:16:52 +01:00
[ie/bilibili] Fix chapters and subtitles extraction (#11099)
Closes #11089 Authored by: bashonly
This commit is contained in:
parent
5a8a05aebb
commit
a2000bc857
@ -46,6 +46,7 @@
|
|||||||
|
|
||||||
|
|
||||||
class BilibiliBaseIE(InfoExtractor):
|
class BilibiliBaseIE(InfoExtractor):
|
||||||
|
_HEADERS = {'Referer': 'https://www.bilibili.com/'}
|
||||||
_FORMAT_ID_RE = re.compile(r'-(\d+)\.m4s\?')
|
_FORMAT_ID_RE = re.compile(r'-(\d+)\.m4s\?')
|
||||||
_WBI_KEY_CACHE_TIMEOUT = 30 # exact expire timeout is unclear, use 30s for one session
|
_WBI_KEY_CACHE_TIMEOUT = 30 # exact expire timeout is unclear, use 30s for one session
|
||||||
_wbi_key_cache = {}
|
_wbi_key_cache = {}
|
||||||
@ -192,7 +193,7 @@ def _get_subtitles(self, video_id, cid, aid=None):
|
|||||||
video_info = self._download_json(
|
video_info = self._download_json(
|
||||||
'https://api.bilibili.com/x/player/v2', video_id,
|
'https://api.bilibili.com/x/player/v2', video_id,
|
||||||
query={'aid': aid, 'cid': cid} if aid else {'bvid': video_id, 'cid': cid},
|
query={'aid': aid, 'cid': cid} if aid else {'bvid': video_id, 'cid': cid},
|
||||||
note=f'Extracting subtitle info {cid}')
|
note=f'Extracting subtitle info {cid}', headers=self._HEADERS)
|
||||||
if traverse_obj(video_info, ('data', 'need_login_subtitle')):
|
if traverse_obj(video_info, ('data', 'need_login_subtitle')):
|
||||||
self.report_warning(
|
self.report_warning(
|
||||||
f'Subtitles are only available when logged in. {self._login_hint()}', only_once=True)
|
f'Subtitles are only available when logged in. {self._login_hint()}', only_once=True)
|
||||||
@ -207,7 +208,7 @@ def _get_subtitles(self, video_id, cid, aid=None):
|
|||||||
def _get_chapters(self, aid, cid):
|
def _get_chapters(self, aid, cid):
|
||||||
chapters = aid and cid and self._download_json(
|
chapters = aid and cid and self._download_json(
|
||||||
'https://api.bilibili.com/x/player/v2', aid, query={'aid': aid, 'cid': cid},
|
'https://api.bilibili.com/x/player/v2', aid, query={'aid': aid, 'cid': cid},
|
||||||
note='Extracting chapters', fatal=False)
|
note='Extracting chapters', fatal=False, headers=self._HEADERS)
|
||||||
return traverse_obj(chapters, ('data', 'view_points', ..., {
|
return traverse_obj(chapters, ('data', 'view_points', ..., {
|
||||||
'title': 'content',
|
'title': 'content',
|
||||||
'start_time': 'from',
|
'start_time': 'from',
|
||||||
@ -1021,8 +1022,6 @@ def _real_extract(self, url):
|
|||||||
|
|
||||||
|
|
||||||
class BilibiliCheeseBaseIE(BilibiliBaseIE):
|
class BilibiliCheeseBaseIE(BilibiliBaseIE):
|
||||||
_HEADERS = {'Referer': 'https://www.bilibili.com/'}
|
|
||||||
|
|
||||||
def _extract_episode(self, season_info, ep_id):
|
def _extract_episode(self, season_info, ep_id):
|
||||||
episode_info = traverse_obj(season_info, (
|
episode_info = traverse_obj(season_info, (
|
||||||
'episodes', lambda _, v: v['id'] == int(ep_id)), get_all=False)
|
'episodes', lambda _, v: v['id'] == int(ep_id)), get_all=False)
|
||||||
|
Loading…
Reference in New Issue
Block a user