Files
storyforge/scripts/start_douyin_workbench.sh

39 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
set -eu
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
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
import time
import urllib.request
port = os.environ.get("PORT", "3618")
url = f"http://127.0.0.1:{port}/workbench"
deadline = time.time() + 15
last_error = ""
while time.time() < deadline:
try:
with urllib.request.urlopen(url, timeout=3) as resp:
print(f"douyin workbench ready: {resp.status} {url}")
raise SystemExit(0)
except Exception as exc:
last_error = str(exc)
time.sleep(0.5)
print(f"douyin workbench start timeout: {last_error}")
raise SystemExit(1)
PY