1. 点击“开始采集”,脚本会在本机打开 Chromium。
2. 在打开的浏览器里完成登录、滑块或验证码,并确认已进入目标主页。
3. 回到这里点击“已完成登录,继续采集”。
@@ -1180,6 +1187,7 @@ function renderPage(mode = "full") {
const similarSearchListEl = document.getElementById("similar-search-list");
const similarSearchDetailEl = document.getElementById("similar-search-detail");
const workbenchLoginButton = document.getElementById("workbench-login-button");
+ const workbenchLoginShortcutButton = document.getElementById("workbench-login-shortcut-button");
const workbenchRefreshButton = document.getElementById("workbench-refresh-button");
const workbenchLogoutButton = document.getElementById("workbench-logout-button");
const reloadSelectedAccountButton = document.getElementById("reload-selected-account-button");
@@ -2073,6 +2081,7 @@ function renderPage(mode = "full") {
});
workbenchLoginButton.addEventListener("click", loginWorkbench);
+ workbenchLoginShortcutButton.addEventListener("click", loginWorkbench);
workbenchRefreshButton.addEventListener("click", async () => {
if (!workbenchState.session) {
diff --git a/scripts/start_douyin_workbench.sh b/scripts/start_douyin_workbench.sh
index 10c03ba..3297aa4 100755
--- a/scripts/start_douyin_workbench.sh
+++ b/scripts/start_douyin_workbench.sh
@@ -5,13 +5,16 @@ ROOT="$(CDPATH= cd -- "$(dirname "$0")/.." && pwd)"
PORT="${DOUYIN_WORKBENCH_PORT:-3618}"
SCRIPT="$ROOT/scripts/douyin-browser-capture/control_panel.mjs"
LOG_FILE="${DOUYIN_WORKBENCH_LOG:-/tmp/storyforge-douyin-workbench.log}"
+SESSION_NAME="${DOUYIN_WORKBENCH_SESSION:-storyforge-douyin-workbench}"
if lsof -nP -iTCP:"$PORT" -sTCP:LISTEN >/dev/null 2>&1; then
echo "douyin workbench already running: http://127.0.0.1:$PORT/workbench"
exit 0
fi
-nohup env PORT="$PORT" node "$SCRIPT" >"$LOG_FILE" 2>&1 &
+screen -wipe >/dev/null 2>&1 || true
+screen -S "$SESSION_NAME" -X quit >/dev/null 2>&1 || true
+screen -dmS "$SESSION_NAME" /bin/sh -lc "exec env PORT='$PORT' node '$SCRIPT' >>'$LOG_FILE' 2>&1"
python3 - <<'PY'
import os
diff --git a/scripts/status_douyin_workbench.sh b/scripts/status_douyin_workbench.sh
index ed1b3a9..d8d6e37 100755
--- a/scripts/status_douyin_workbench.sh
+++ b/scripts/status_douyin_workbench.sh
@@ -2,12 +2,15 @@
set -eu
PORT="${DOUYIN_WORKBENCH_PORT:-3618}"
+SESSION_NAME="${DOUYIN_WORKBENCH_SESSION:-storyforge-douyin-workbench}"
if ! lsof -nP -iTCP:"$PORT" -sTCP:LISTEN >/dev/null 2>&1; then
echo "douyin workbench stopped"
exit 1
fi
+screen -ls | grep "$SESSION_NAME" || true
+echo "---"
python3 - <<'PY'
import os
import urllib.request
diff --git a/scripts/stop_douyin_workbench.sh b/scripts/stop_douyin_workbench.sh
index 74b1aad..a394abc 100755
--- a/scripts/stop_douyin_workbench.sh
+++ b/scripts/stop_douyin_workbench.sh
@@ -2,6 +2,8 @@
set -eu
PORT="${DOUYIN_WORKBENCH_PORT:-3618}"
+SESSION_NAME="${DOUYIN_WORKBENCH_SESSION:-storyforge-douyin-workbench}"
+screen -S "$SESSION_NAME" -X quit >/dev/null 2>&1 || true
lsof -tiTCP:"$PORT" -sTCP:LISTEN | xargs -r kill
echo "douyin workbench stopped: $PORT"