From 703723dfaa55e9ac148ef6253e029e59ecd21d5b Mon Sep 17 00:00:00 2001 From: lanyeeee Date: Tue, 19 Aug 2025 07:21:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9C=AA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=97=B6UP=E6=8A=95=E7=A8=BF=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/Cargo.lock | 2 ++ src-tauri/Cargo.toml | 2 ++ src-tauri/src/bili_client.rs | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 6fbbecf..1db3dec 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -286,6 +286,7 @@ name = "bilibili-video-downloader" version = "0.1.0" dependencies = [ "anyhow", + "base64 0.22.1", "byteorder", "bytes", "chrono", @@ -297,6 +298,7 @@ dependencies = [ "num_enum", "parking_lot 0.12.4", "prost", + "rand 0.9.1", "reqwest", "reqwest-middleware", "reqwest-retry", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 9ebe500..7e7aaaa 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -53,6 +53,8 @@ yaserde = { version = "0.12.0", features = ["yaserde_derive"] } float-ord = { version = "0.3.2" } memchr = { version = "2.7.5" } md-5 = { version = "0.10.6" } +rand = { version = "0.9.1" } +base64 = { version = "0.22.1" } [profile.release] strip = true diff --git a/src-tauri/src/bili_client.rs b/src-tauri/src/bili_client.rs index fd06455..4303ea6 100644 --- a/src-tauri/src/bili_client.rs +++ b/src-tauri/src/bili_client.rs @@ -1,6 +1,7 @@ use std::time::Duration; use anyhow::{anyhow, Context}; +use base64::{engine::general_purpose, Engine}; use bytes::Bytes; use parking_lot::RwLock; use prost::Message; @@ -296,10 +297,28 @@ impl BiliClient { &self, params: GetUserVideoInfoParams, ) -> anyhow::Result { + const DM_IMG_INTER: &str = r#"{"ds":[],"wh":[0,0,0],"of":[0,0,0]}"#; + + fn random_base64() -> String { + let random_bytes: Vec = (0..48).map(|_| rand::random_range(32..=127)).collect(); + + general_purpose::STANDARD.encode(&random_bytes) + } + + let mut dm_img_str = random_base64(); + dm_img_str.truncate(dm_img_str.len() - 2); + + let mut dm_cover_img_str = random_base64(); + dm_cover_img_str.truncate(dm_cover_img_str.len() - 2); + let mut params: Vec<(&str, String)> = vec![ ("pn", params.pn.to_string()), ("ps", "42".to_string()), ("mid", params.mid.to_string()), + ("dm_img_list", "[]".to_string()), + ("dm_img_str", dm_img_str), + ("dm_cover_img_str", dm_cover_img_str), + ("dm_img_inter", DM_IMG_INTER.to_string()), ]; self.wbi(&mut params).await?;