@@ -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