Rename ApprovalCartId.js to ApprovalCartId.js
This commit is contained in:
56
Discard/ApprovalCartId.js
Normal file
56
Discard/ApprovalCartId.js
Normal file
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* Surge 脚本:从 buynow 链接中提取 cartId 并存入 ApprovalCartId
|
||||
* 存储格式:id1&id2&id3...
|
||||
*/
|
||||
|
||||
const key = "ApprovalCartId";
|
||||
|
||||
// 1. 获取已有 ApprovalCartId 的值
|
||||
const existingRaw = $persistentStore.read(key);
|
||||
|
||||
// 2. 获取当前请求 URL
|
||||
const url = $request.url;
|
||||
|
||||
// 3. 正则表达式提取 cartId
|
||||
// 说明:[?&] 匹配开始的 ? 或中间的 &,cartId= 匹配参数名,([^&]+) 捕获直到下一个 & 或字符串结束的内容
|
||||
const matches = url.match(/[?&]cartId=([^&]+)/);
|
||||
|
||||
if (matches && matches[1]) {
|
||||
const newCartId = matches[1];
|
||||
|
||||
// 将已有的字符串分割为数组 (过滤掉空字符串,防止 split 产生 bug)
|
||||
let existingIdArray = existingRaw ? existingRaw.split("&").filter(Boolean) : [];
|
||||
|
||||
// 4. 判重逻辑
|
||||
if (!existingIdArray.includes(newCartId)) {
|
||||
|
||||
// 追加新 ID 到数组
|
||||
existingIdArray.push(newCartId);
|
||||
|
||||
// 重新组合成字符串
|
||||
const finalString = existingIdArray.join("&");
|
||||
|
||||
// 5. 写入 Persistent Store
|
||||
$persistentStore.write(finalString, key);
|
||||
|
||||
// 控制台日志
|
||||
console.log(`✅ [CartId提取] 已追加: ${newCartId}`);
|
||||
console.log(`📄 当前列表: ${finalString}`);
|
||||
|
||||
// 发送通知
|
||||
$notification.post(
|
||||
"✅ CartId 抓取成功",
|
||||
`已存入第 ${existingIdArray.length} 个 ID`,
|
||||
newCartId
|
||||
);
|
||||
} else {
|
||||
console.log(`⚠️ [CartId提取] 跳过,已存在: ${newCartId}`);
|
||||
// 如果需要重复时也弹窗,取消下面这行的注释
|
||||
// $notification.post("⚠️ 跳过重复 ID", "该 CartId 已在列表中", newCartId);
|
||||
}
|
||||
} else {
|
||||
console.log("⚠️ URL 中未找到 cartId 参数");
|
||||
}
|
||||
|
||||
// 结束脚本,继续请求
|
||||
$done({});
|
||||
Reference in New Issue
Block a user