Skip to content

Commit 86ed4be

Browse files
committed
feat(VDURLDDetecter): add missing fields in dash (#995)
1 parent 58cc1e3 commit 86ed4be

File tree

1 file changed

+69
-15
lines changed

1 file changed

+69
-15
lines changed

bilibili_api/video.py

Lines changed: 69 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2209,7 +2209,7 @@ class AudioQuality(Enum):
22092209

22102210
_64K = 30216
22112211
_132K = 30232
2212-
DOLBY = 30255
2212+
DOLBY = 30250
22132213
HI_RES = 30251
22142214
_192K = 30280
22152215

@@ -2222,14 +2222,32 @@ class VideoStreamDownloadURL:
22222222
视频流 URL 类
22232223
22242224
Attributes:
2225-
url (str) : 视频流 url
2225+
url (str): 视频流 url
22262226
video_quality (VideoQuality): 视频流清晰度
2227-
video_codecs (VideoCodecs) : 视频流编码
2227+
video_codecs (VideoCodecs) : 视频流编码
2228+
backup_url (list[str]): 备用链接
2229+
bandwidth (int): 码率
2230+
codecs (str): 视频流详细编码
2231+
frame_rate (float): 帧率
2232+
scale (tuple[int, int]): 画面尺寸
2233+
sar (tuple[int, int]): 采样纵横比
2234+
mime_type (str): MIME 类型
2235+
segment_base_initialization (str): SegmentBase.Initialization
2236+
segment_base_index_range (str): SegmentBase.indexRange
22282237
"""
22292238

22302239
url: str
22312240
video_quality: VideoQuality
22322241
video_codecs: VideoCodecs
2242+
backup_url: list[str]
2243+
bandwidth: int
2244+
codecs: str
2245+
frame_rate: float
2246+
scale: tuple[int, int]
2247+
sar: tuple[int, int]
2248+
mime_type: str
2249+
segment_base_initialization: str
2250+
segment_base_index_range: str
22332251

22342252

22352253
@dataclass
@@ -2240,12 +2258,24 @@ class AudioStreamDownloadURL:
22402258
音频流 URL 类
22412259
22422260
Attributes:
2243-
url (str) : 音频流 url
2261+
url (str): 音频流 url
22442262
audio_quality (AudioQuality): 音频流清晰度
2263+
backup_url (list[str]): 备用链接
2264+
bandwidth (int): 码率
2265+
codecs (str): 视频流详细编码
2266+
mime_type (str): MIME 类型
2267+
segment_base_initialization (str): SegmentBase.Initialization
2268+
segment_base_index_range (str): SegmentBase.indexRange
22452269
"""
22462270

22472271
url: str
22482272
audio_quality: AudioQuality
2273+
backup_url: list[str]
2274+
bandwidth: int
2275+
codecs: str
2276+
mime_type: str
2277+
segment_base_initialization: str
2278+
segment_base_index_range: str
22492279

22502280

22512281
@dataclass
@@ -2405,10 +2435,7 @@ def detect(
24052435
flac_data = self.__data["dash"].get("flac")
24062436
dolby_data = self.__data["dash"].get("dolby")
24072437
for video_data in videos_data:
2408-
if video_data.get("baseUrl"):
2409-
video_stream_url = video_data["baseUrl"]
2410-
else:
2411-
video_stream_url = video_data["base_url"]
2438+
video_stream_url = video_data["base_url"]
24122439
video_stream_quality = VideoQuality(video_data["id"])
24132440
if video_stream_quality == VideoQuality.HDR and no_hdr:
24142441
continue
@@ -2444,14 +2471,20 @@ def detect(
24442471
url=video_stream_url,
24452472
video_quality=video_stream_quality,
24462473
video_codecs=video_stream_codecs, # type: ignore
2474+
backup_url=video_data["backup_url"],
2475+
bandwidth=video_data["bandwidth"],
2476+
codecs=video_data["codecs"],
2477+
frame_rate=float(video_data["frame_rate"]),
2478+
scale=(video_data["width"], video_data["height"]),
2479+
sar=tuple([int(x) for x in video_data["sar"].split(":")]),
2480+
mime_type=video_data["mime_type"],
2481+
segment_base_initialization=video_data["segment_base"]["initialization"],
2482+
segment_base_index_range=video_data["segment_base"]["index_range"]
24472483
)
24482484
streams.append(video_stream)
24492485
if audios_data:
24502486
for audio_data in audios_data:
2451-
if audio_data.get("baseUrl"):
2452-
audio_stream_url = audio_data["baseUrl"]
2453-
else:
2454-
audio_stream_url = audio_data["base_url"]
2487+
audio_stream_url = audio_data["base_url"]
24552488
audio_stream_quality = AudioQuality(audio_data["id"])
24562489
if audio_stream_quality.value > audio_max_quality.value:
24572490
continue
@@ -2460,15 +2493,29 @@ def detect(
24602493
if not audio_stream_quality in audio_accepted_qualities:
24612494
continue
24622495
audio_stream = AudioStreamDownloadURL(
2463-
url=audio_stream_url, audio_quality=audio_stream_quality
2496+
url=audio_stream_url,
2497+
audio_quality=audio_stream_quality,
2498+
backup_url=audio_data["backup_url"],
2499+
bandwidth=audio_data["bandwidth"],
2500+
codecs=audio_data["codecs"],
2501+
mime_type=audio_data["mime_type"],
2502+
segment_base_initialization=audio_data["segment_base"]["initialization"],
2503+
segment_base_index_range=audio_data["segment_base"]["index_range"]
24642504
)
24652505
streams.append(audio_stream)
24662506
if flac_data and (not no_hires):
24672507
if flac_data["audio"]:
24682508
flac_stream_url = flac_data["audio"]["base_url"]
24692509
flac_stream_quality = AudioQuality(flac_data["audio"]["id"])
24702510
flac_stream = AudioStreamDownloadURL(
2471-
url=flac_stream_url, audio_quality=flac_stream_quality
2511+
url=flac_stream_url,
2512+
audio_quality=flac_stream_quality,
2513+
backup_url=flac_data["audio"]["backup_url"],
2514+
bandwidth=flac_data["audio"]["bandwidth"],
2515+
codecs=flac_data["audio"]["codecs"],
2516+
mime_type=flac_data["audio"]["mime_type"],
2517+
segment_base_initialization=flac_data["audio"]["segment_base"]["initialization"],
2518+
segment_base_index_range=flac_data["audio"]["segment_base"]["index_range"]
24722519
)
24732520
streams.append(flac_stream)
24742521
if dolby_data and (not no_dolby_audio):
@@ -2477,7 +2524,14 @@ def detect(
24772524
dolby_stream_url = dolby_stream_data["base_url"]
24782525
dolby_stream_quality = AudioQuality(dolby_stream_data["id"])
24792526
dolby_stream = AudioStreamDownloadURL(
2480-
url=dolby_stream_url, audio_quality=dolby_stream_quality
2527+
url=dolby_stream_url,
2528+
audio_quality=dolby_stream_quality,
2529+
backup_url=dolby_stream_data["backup_url"],
2530+
bandwidth=dolby_stream_data["bandwidth"],
2531+
codecs=dolby_stream_data["codecs"],
2532+
mime_type=dolby_stream_data["mime_type"],
2533+
segment_base_initialization=dolby_stream_data["segment_base"]["initialization"],
2534+
segment_base_index_range=dolby_stream_data["segment_base"]["index_range"]
24812535
)
24822536
streams.append(dolby_stream)
24832537
return streams

0 commit comments

Comments
 (0)