mirror of
https://github.com/halfwaystudent/douyin-sparkflow.git
synced 2026-09-01 05:27:19 +08:00
67 lines
2.0 KiB
Bash
Executable File
67 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
cd "$REPO_ROOT"
|
|
|
|
if ! command -v docker >/dev/null 2>&1 || ! docker compose version >/dev/null 2>&1; then
|
|
echo "Docker with the Compose plugin is required." >&2
|
|
exit 1
|
|
fi
|
|
|
|
set_env_value() {
|
|
local file="$1"
|
|
local key="$2"
|
|
local value="$3"
|
|
if grep -q "^${key}=" "$file"; then
|
|
local tmp_file
|
|
tmp_file="$(mktemp)"
|
|
awk -v key="$key" -v value="$value" '
|
|
BEGIN { replaced = 0 }
|
|
$0 ~ "^" key "=" { print key "=" value; replaced = 1; next }
|
|
{ print }
|
|
END { if (!replaced) print key "=" value }
|
|
' "$file" > "$tmp_file"
|
|
mv "$tmp_file" "$file"
|
|
else
|
|
printf '%s=%s\n' "$key" "$value" >> "$file"
|
|
fi
|
|
}
|
|
|
|
if [ ! -f ".env" ]; then
|
|
cp ".env.example" ".env"
|
|
fi
|
|
|
|
proxy_sub_url="${PROXY_SUB_URL:-${1:-}}"
|
|
if [ -n "$proxy_sub_url" ]; then
|
|
set_env_value ".env" "PROXY_SUB_URL" "$proxy_sub_url"
|
|
fi
|
|
|
|
mkdir -p proxy state/cron state/login-profile state/browser-profiles DouYinSparkFlow/logs
|
|
if [ ! -f "proxy/config.yaml" ]; then
|
|
cp "proxy/config.example.yaml" "proxy/config.yaml"
|
|
fi
|
|
if [ ! -s "state/cron/root" ]; then
|
|
cat > "state/cron/root" <<'CRON'
|
|
*/20 10-17 * * * cd /app && python main.py --doTask >> /app/logs/app.log 2>&1
|
|
0 18 * * * cd /app && python main.py --doTask >> /app/logs/app.log 2>&1
|
|
20 18 * * * cd /app && env SPARKFLOW_MANUAL_RUN=1 SPARKFLOW_MANUAL_UNSENT_ONLY=1 PYTHONUNBUFFERED=1 python main.py --doTask >> /app/logs/app.log 2>&1
|
|
CRON
|
|
fi
|
|
|
|
bash ./refresh_proxy.sh
|
|
docker compose up -d --build
|
|
|
|
web_port="$(grep '^WEB_PORT=' .env | sed 's/^WEB_PORT=//')"
|
|
web_port="${web_port:-8787}"
|
|
url="http://localhost:${web_port}"
|
|
echo "Douyin SparkFlow is running: $url"
|
|
echo "Next: create the admin password, open the login desktop, scan the QR code, select target friends, and set the send window."
|
|
|
|
if command -v xdg-open >/dev/null 2>&1; then
|
|
xdg-open "$url" >/dev/null 2>&1 || true
|
|
elif command -v open >/dev/null 2>&1; then
|
|
open "$url" >/dev/null 2>&1 || true
|
|
fi
|