save
This commit is contained in:
parent
375f0e50fa
commit
2a13e67a2d
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"apiBase": "http://dsv6.honor3.com:10101",
|
"apiBase": "http://dsv6.honor3.com:10101",
|
||||||
"username": "douyin",
|
"username": "douyin",
|
||||||
"password": "douyin2025"
|
"password": "douyin2025"
|
||||||
|
|||||||
@ -5,11 +5,12 @@
|
|||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"loopfav": "node src/cli.js loopfav",
|
||||||
"cookies": "node src/cli.js cookies",
|
"cookies": "node src/cli.js cookies",
|
||||||
|
"unfav": "node src/cli.js unfav",
|
||||||
"sync": "node src/cli.js sync",
|
"sync": "node src/cli.js sync",
|
||||||
"unfavorite": "node src/cli.js unfavorite",
|
"loopcol": "node src/cli.js loopcol",
|
||||||
"uncollect": "node src/cli.js uncollect",
|
"uncol": "node src/cli.js uncol"
|
||||||
"loop": "node src/cli.js loop"
|
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
|
|||||||
35
src/cli.js
35
src/cli.js
@ -1,23 +1,25 @@
|
|||||||
// 抖音小云 CLI 工具
|
// 抖音小云 CLI 工具
|
||||||
// 用法:
|
// 用法:
|
||||||
// node cli.js cookies 获取抖音 cookies 并同步到 douxiaoyun
|
// node cli.js cookies 获取抖音 cookies(仅保存本地)
|
||||||
// node cli.js sync 将本地 cookies 同步到 douxiaoyun
|
// node cli.js sync 将本地 cookies 同步到 douxiaoyun
|
||||||
// node cli.js unfavorite 取消点赞(单次执行)
|
// node cli.js unfav 取消点赞(单次执行)
|
||||||
// node cli.js uncollect 取消收藏(单次执行)
|
// node cli.js uncol 取消收藏(单次执行)
|
||||||
// node cli.js loop 循环模式:每10秒取消点赞
|
// node cli.js loopfav 循环取消点赞(每10秒)
|
||||||
|
// node cli.js loopcol 循环取消收藏(每10秒)
|
||||||
|
|
||||||
const cmd = process.argv[2];
|
const cmd = process.argv[2];
|
||||||
const validCommands = ["cookies", "sync", "unfavorite", "uncollect", "loop"];
|
const validCommands = ["cookies", "sync", "unfav", "uncol", "loopfav", "loopcol"];
|
||||||
|
|
||||||
if (!cmd || !validCommands.includes(cmd)) {
|
if (!cmd || !validCommands.includes(cmd)) {
|
||||||
console.log("抖音小云 CLI 工具\n");
|
console.log("抖音小云 CLI 工具\n");
|
||||||
console.log("用法: node src/cli.js <命令>\n");
|
console.log("用法: node src/cli.js <命令>\n");
|
||||||
console.log("可用命令:");
|
console.log("可用命令:");
|
||||||
console.log(" cookies 获取抖音 cookies 并同步到 douxiaoyun");
|
console.log(" cookies 获取抖音 cookies(仅保存本地)");
|
||||||
console.log(" sync 将本地 cookies 同步到 douxiaoyun");
|
console.log(" sync 将本地 cookies 同步到 douxiaoyun");
|
||||||
console.log(" unfavorite 取消点赞(单次执行)");
|
console.log(" unfav 取消点赞(单次执行)");
|
||||||
console.log(" uncollect 取消收藏(单次执行)");
|
console.log(" uncol 取消收藏(单次执行)");
|
||||||
console.log(" loop 循环模式:每10秒取消点赞");
|
console.log(" loopfav 循环取消点赞(每10秒)");
|
||||||
|
console.log(" loopcol 循环取消收藏(每10秒)");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,24 +42,31 @@ async function main() {
|
|||||||
await syncToDouxiaoyun(config.cookie, config.sec_user_id);
|
await syncToDouxiaoyun(config.cookie, config.sec_user_id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "unfavorite":
|
case "unfav":
|
||||||
console.log("💔 取消点赞...");
|
console.log("💔 取消点赞...");
|
||||||
const { getAndUnFavorite } = await import("./index.js");
|
const { getAndUnFavorite } = await import("./index.js");
|
||||||
await getAndUnFavorite();
|
await getAndUnFavorite();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "uncollect":
|
case "uncol":
|
||||||
console.log("📦 取消收藏...");
|
console.log("📦 取消收藏...");
|
||||||
const { getAndUnCollection } = await import("./index.js");
|
const { getAndUnCollection } = await import("./index.js");
|
||||||
await getAndUnCollection();
|
await getAndUnCollection();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "loop":
|
case "loopfav":
|
||||||
console.log("🔄 启动循环模式:每10秒取消点赞...");
|
console.log("🔄 启动循环:每10秒取消点赞...");
|
||||||
const mod = await import("./index.js");
|
const mod = await import("./index.js");
|
||||||
await mod.getAndUnFavorite();
|
await mod.getAndUnFavorite();
|
||||||
setInterval(() => { mod.getAndUnFavorite(); }, 10 * 1000);
|
setInterval(() => { mod.getAndUnFavorite(); }, 10 * 1000);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "loopcol":
|
||||||
|
console.log("🔄 启动循环:每10秒取消收藏...");
|
||||||
|
const mod2 = await import("./index.js");
|
||||||
|
await mod2.getAndUnCollection();
|
||||||
|
setInterval(() => { mod2.getAndUnCollection(); }, 10 * 1000);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { chromium } from "playwright";
|
|||||||
import { writeFileSync, readFileSync } from "fs";
|
import { writeFileSync, readFileSync } from "fs";
|
||||||
import { resolve, dirname } from "path";
|
import { resolve, dirname } from "path";
|
||||||
import { fileURLToPath } from "url";
|
import { fileURLToPath } from "url";
|
||||||
import { syncToDouxiaoyun } from "./sync-douxiaoyun.js";
|
|
||||||
|
|
||||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||||
const CONFIG_PATH = resolve(__dirname, "..", "config", "config.json");
|
const CONFIG_PATH = resolve(__dirname, "..", "config", "config.json");
|
||||||
@ -115,10 +115,9 @@ async function main() {
|
|||||||
|
|
||||||
saveConfig(cookieString, capturedSecUserId);
|
saveConfig(cookieString, capturedSecUserId);
|
||||||
|
|
||||||
if (capturedSecUserId) {
|
if (!capturedSecUserId) {
|
||||||
await syncToDouxiaoyun(cookieString, capturedSecUserId);
|
console.log("\n⚠️ 未获取到 sec_user_id");
|
||||||
} else {
|
console.log(" 请参考 README 手动获取");
|
||||||
console.log("\n⚠️ 未获取到 sec_user_id,跳过服务器上传");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
30
src/index.js
30
src/index.js
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user