From 96c000b53668eaf12736cdfe83e5fe1b71441202 Mon Sep 17 00:00:00 2001 From: amtoaer Date: Sun, 31 Mar 2024 19:28:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8A=A0=E5=85=A5=E9=81=87=E5=88=B0?= =?UTF-8?q?=E9=A3=8E=E6=8E=A7=E8=AF=B7=E6=B1=82=E5=A4=B1=E8=B4=A5=E7=9A=84?= =?UTF-8?q?=E5=85=9C=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bilibili/analyzer.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/bilibili/analyzer.rs b/src/bilibili/analyzer.rs index b6051f2..2b74159 100644 --- a/src/bilibili/analyzer.rs +++ b/src/bilibili/analyzer.rs @@ -1,5 +1,6 @@ use std::sync::Arc; +use log::error; use serde::{Deserialize, Serialize}; use crate::Result; @@ -156,7 +157,15 @@ impl PageAnalyzer { let audios_data = self.info["dash"]["audio"].take(); let flac_data = self.info["dash"]["flac"].take(); let dolby_data = self.info["dash"]["dolby"].take(); - for video_data in videos_data.as_array().unwrap().iter() { + for video_data in videos_data + .as_array() + .ok_or_else(|| -> Result { + error!("video data is not an array: {:?}", self.info); + Err("invalid video data".into()) + }) + .unwrap_or(&Vec::new()) + .iter() + { let video_stream_url = video_data["baseUrl"].as_str().unwrap().to_string(); let video_stream_quality = VideoQuality::from_repr(video_data["id"].as_u64().unwrap() as usize) .ok_or("invalid video stream quality")?;