From 363fa9889156453fe38e58c8a8b297d3178cfa46 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Thu, 6 Nov 2025 11:03:35 +0800 Subject: [PATCH] refactor: enhance YouTube Premium check logic and streamline response handling --- src-tauri/Cargo.toml | 6 ++- src-tauri/src/cmd/clash.rs | 3 +- .../src/cmd/media_unlock_checker/youtube.rs | 52 +++++++------------ 3 files changed, 24 insertions(+), 37 deletions(-) diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 157f3d2a..207db6e6 100755 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -241,4 +241,8 @@ needless_collect = "deny" missing_const_for_fn = "deny" iter_with_drain = "deny" iter_on_single_items = "deny" -iter_on_empty_collections = "deny" \ No newline at end of file +iter_on_empty_collections = "deny" +# fallible_impl_from = "deny" // 过于激进,暂时不开启 +equatable_if_let = "deny" +collection_is_never_read = "deny" +branches_sharing_code = "deny" \ No newline at end of file diff --git a/src-tauri/src/cmd/clash.rs b/src-tauri/src/cmd/clash.rs index b51afce5..84855bd5 100644 --- a/src-tauri/src/cmd/clash.rs +++ b/src-tauri/src/cmd/clash.rs @@ -189,7 +189,6 @@ pub async fn apply_dns_config(apply: bool) -> CmdResult { })?; logging!(info, Type::Config, "DNS config successfully applied"); - handle::Handle::refresh_clash(); } else { // 当关闭DNS设置时,重新生成配置(不加载DNS配置文件) logging!( @@ -212,9 +211,9 @@ pub async fn apply_dns_config(apply: bool) -> CmdResult { })?; logging!(info, Type::Config, "Config regenerated successfully"); - handle::Handle::refresh_clash(); } + handle::Handle::refresh_clash(); Ok(()) } diff --git a/src-tauri/src/cmd/media_unlock_checker/youtube.rs b/src-tauri/src/cmd/media_unlock_checker/youtube.rs index 26b437f0..d7caf6f4 100644 --- a/src-tauri/src/cmd/media_unlock_checker/youtube.rs +++ b/src-tauri/src/cmd/media_unlock_checker/youtube.rs @@ -13,19 +13,23 @@ pub(super) async fn check_youtube_premium(client: &Client) -> UnlockItem { Ok(response) => { if let Ok(body) = response.text().await { let body_lower = body.to_lowercase(); + let mut status = "Failed"; + let mut region = None; if body_lower.contains("youtube premium is not available in your country") { - return UnlockItem { - name: "Youtube Premium".to_string(), - status: "No".to_string(), - region: None, - check_time: Some(get_local_date_string()), - }; - } - - if body_lower.contains("ad-free") { - let re = match Regex::new(r#"id="country-code"[^>]*>([^<]+)<"#) { - Ok(re) => re, + status = "No"; + } else if body_lower.contains("ad-free") { + match Regex::new(r#"id="country-code"[^>]*>([^<]+)<"#) { + Ok(re) => { + if let Some(caps) = re.captures(&body) + && let Some(m) = caps.get(1) + { + let country_code = m.as_str().trim(); + let emoji = country_code_to_emoji(country_code); + region = Some(format!("{emoji}{country_code}")); + status = "Yes"; + } + } Err(e) => { logging!( error, @@ -33,34 +37,14 @@ pub(super) async fn check_youtube_premium(client: &Client) -> UnlockItem { "Failed to compile YouTube Premium regex: {}", e ); - return UnlockItem { - name: "Youtube Premium".to_string(), - status: "Failed".to_string(), - region: None, - check_time: Some(get_local_date_string()), - }; } - }; - let region = re.captures(&body).and_then(|caps| { - caps.get(1).map(|m| { - let country_code = m.as_str().trim(); - let emoji = country_code_to_emoji(country_code); - format!("{emoji}{country_code}") - }) - }); - - return UnlockItem { - name: "Youtube Premium".to_string(), - status: "Yes".to_string(), - region, - check_time: Some(get_local_date_string()), - }; + } } UnlockItem { name: "Youtube Premium".to_string(), - status: "Failed".to_string(), - region: None, + status: status.to_string(), + region, check_time: Some(get_local_date_string()), } } else {