Files
douyin-sparkflow/deploy/install-local.sh

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