From 9d300d7bd3a16b2ac220be469fe872340a512222 Mon Sep 17 00:00:00 2001
From: alive4ever <alive4ever@users.noreply.github.com>
Date: Tue, 24 Dec 2024 06:39:47 +0000
Subject: [PATCH] Revert "Apply patch from #36 (thanks @lifo9)"

This reverts commit ac0269f1586df5a853c4321256866bcbea89802b.
---
 src/consts.rs | 16 ++--------------
 src/player.rs | 28 +++++++---------------------
 2 files changed, 9 insertions(+), 35 deletions(-)

diff --git a/src/consts.rs b/src/consts.rs
index c92a8f0..33f2f4e 100644
--- a/src/consts.rs
+++ b/src/consts.rs
@@ -20,20 +20,8 @@ pub static NSIG_FUNCTION_ENDINGS: &[&str] = &[
 
 pub static REGEX_SIGNATURE_TIMESTAMP: &Lazy<Regex> = regex!("signatureTimestamp[=:](\\d+)");
 
-pub static REGEX_SIGNATURE_FUNCTION: Lazy<Regex> = Lazy::new(|| {
-    Regex::new(concat!(
-        r#"(?:"#,
-            // Pattern 1
-            r#"\b[a-zA-Z0-9$]+&&\([a-zA-Z0-9$]+=([a-zA-Z0-9$]{2,})\(decodeURIComponent\([a-zA-Z0-9$]+\)\)\)"#,
-            r#"|"#,
-            // Pattern 2
-            r#"([a-zA-Z0-9$]+)\s*=\s*function\(\s*[a-zA-Z0-9$]+\s*\)\s*\{\s*[^}]+?\.split\(\s*""\s*\)[^}]+?\.join\(\s*""\s*\)"#,
-            r#"|"#,
-            // Pattern 3
-            r#"(?:\b|[^a-zA-Z0-9$])([a-zA-Z0-9$]{2,})\s*=\s*function\(\s*a\s*\)\s*\{\s*a\s*=\s*a\.split\(\s*""\s*\)"#,
-        r#")"#
-    )).unwrap()
-});
+pub static REGEX_SIGNATURE_FUNCTION: &Lazy<Regex> =
+    regex!("\\bc&&\\(c=([a-zA-Z0-9$]{2,})\\(decodeURIComponent\\(c\\)\\)");
 pub static REGEX_HELPER_OBJ_NAME: &Lazy<Regex> = regex!(";([A-Za-z0-9_\\$]{2,})\\...\\(");
 
 pub static NSIG_FUNCTION_NAME: &str = "decrypt_nsig";
diff --git a/src/player.rs b/src/player.rs
index 40d8ad2..23333b3 100644
--- a/src/player.rs
+++ b/src/player.rs
@@ -18,12 +18,6 @@ pub enum FetchUpdateStatus {
     CannotFetchPlayerJS,
     NsigRegexCompileFailed,
     PlayerAlreadyUpdated,
-    CannotMatchSignature
-}
-
-fn fixup_n_function_code(code: &str) -> String {
-    let re = regex::Regex::new(r#";\s*if\s*\(\s*typeof\s+[a-zA-Z0-9_$]+\s*===?\s*["']undefined["']\s*\)\s*return\s+[a-zA-Z0-9_$]+;"#).unwrap();
-    re.replace_all(code, ";").to_string()
 }
 
 pub async fn fetch_update(state: Arc<GlobalState>) -> Result<(), FetchUpdateStatus> {
@@ -146,26 +140,18 @@ pub async fn fetch_update(state: Arc<GlobalState>) -> Result<(), FetchUpdateStat
                 i.get(1).unwrap().as_str()
             }
         };
-        nsig_function_code = fixup_n_function_code(&nsig_function_code);
         debug!("got nsig fn code: {}", nsig_function_code);
         break;
     }
 
     // Extract signature function name
-    let sig_function_name = match REGEX_SIGNATURE_FUNCTION.captures(&player_javascript) {
-        Some(captures) => {
-            // Try groups 1, 2, and 3 which contain the signature function name
-            [1, 2, 3].iter()
-                .find_map(|&i| captures.get(i))
-                .map(|m| m.as_str())
-                .ok_or(FetchUpdateStatus::CannotMatchSignature)?
-        }
-        None => {
-            error!("Could not match signature function pattern");
-            return Err(FetchUpdateStatus::CannotMatchSignature);
-        }
-    };
-    debug!("sig function name: {}", sig_function_name);
+    let sig_function_name = REGEX_SIGNATURE_FUNCTION
+        .captures(&player_javascript)
+        .unwrap()
+        .get(1)
+        .unwrap()
+        .as_str();
+
     let mut sig_function_body_regex_str: String = String::new();
     sig_function_body_regex_str += &sig_function_name.replace("$", "\\$");
     sig_function_body_regex_str += "=function\\([a-zA-Z0-9_]+\\)\\{.+?\\}";