From 07a3b33040e214f0e97c9591b926519bca949b03 Mon Sep 17 00:00:00 2001 From: Xinrea Date: Wed, 24 Sep 2025 00:38:47 +0800 Subject: [PATCH] fix: douyin room info parse error --- _typos.toml | 2 + src-tauri/src/recorder/douyin/response.rs | 54 ++++++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 _typos.toml diff --git a/_typos.toml b/_typos.toml new file mode 100644 index 0000000..d682333 --- /dev/null +++ b/_typos.toml @@ -0,0 +1,2 @@ +[default.extend-identifiers] +pull_datas = "pull_datas" diff --git a/src-tauri/src/recorder/douyin/response.rs b/src-tauri/src/recorder/douyin/response.rs index b9f74e1..8f73b9a 100644 --- a/src-tauri/src/recorder/douyin/response.rs +++ b/src-tauri/src/recorder/douyin/response.rs @@ -1,11 +1,14 @@ use serde_derive::Deserialize; use serde_derive::Serialize; use serde_json::Value; +use std::collections::HashMap; #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DouyinRoomInfoResponse { pub data: Data, + #[serde(default)] + pub extra: Option, #[serde(rename = "status_code")] pub status_code: i64, } @@ -14,9 +17,29 @@ pub struct DouyinRoomInfoResponse { #[serde(rename_all = "camelCase")] pub struct Data { pub data: Vec, + #[serde(rename = "enter_room_id", default)] + pub enter_room_id: Option, + #[serde(default)] + pub extra: Option, pub user: User, + #[serde(rename = "qrcode_url", default)] + pub qrcode_url: Option, + #[serde(rename = "enter_mode", default)] + pub enter_mode: Option, #[serde(rename = "room_status")] pub room_status: i64, + #[serde(rename = "partition_road_map", default)] + pub partition_road_map: Option, + #[serde(rename = "similar_rooms", default)] + pub similar_rooms: Option>, + #[serde(rename = "shark_decision_conf", default)] + pub shark_decision_conf: Option, + #[serde(rename = "web_stream_url", default)] + pub web_stream_url: Option, + #[serde(rename = "login_lead", default)] + pub login_lead: Option, + #[serde(rename = "auth_cert_info", default)] + pub auth_cert_info: Option, } #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -28,9 +51,36 @@ pub struct Daum { #[serde(rename = "status_str")] pub status_str: String, pub title: String, + #[serde(rename = "user_count_str", default)] + pub user_count_str: Option, pub cover: Option, #[serde(rename = "stream_url")] pub stream_url: Option, + #[serde(default)] + pub owner: Option, + #[serde(rename = "room_auth", default)] + pub room_auth: Option, + #[serde(rename = "live_room_mode", default)] + pub live_room_mode: Option, + #[serde(default)] + pub stats: Option, + #[serde(rename = "has_commerce_goods", default)] + pub has_commerce_goods: Option, + #[serde(rename = "linker_map", default)] + pub linker_map: Option, + #[serde(rename = "linker_detail", default)] + pub linker_detail: Option, + #[serde(rename = "room_view_stats", default)] + pub room_view_stats: Option, + #[serde(rename = "scene_type_info", default)] + pub scene_type_info: Option, + #[serde(rename = "like_count", default)] + pub like_count: Option, + #[serde(rename = "owner_user_id_str", default)] + pub owner_user_id_str: Option, + // Many other fields that can be ignored for now + #[serde(flatten)] + pub other_fields: HashMap, } #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -56,8 +106,8 @@ pub struct StreamUrl { #[serde(rename = "live_core_sdk_data")] pub live_core_sdk_data: LiveCoreSdkData, pub extra: Extra, - #[serde(rename = "pull_data")] - pub pull_data: PullData, + #[serde(rename = "pull_datas", default)] + pub pull_datas: Option, } #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]