Files
2026-07-12 09:18:28 +08:00

220 lines
8.1 KiB
Bash

#!/usr/bin/env bash
# Polymarket Whale Watcher - One-Click Setup
# Usage: chmod +x setup.sh && ./setup.sh
set -e
CYAN='\033[0;36m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
DIM='\033[2m'
BOLD='\033[1m'
NC='\033[0m'
echo -e "${CYAN}"
echo "╭──────────────────────────────────────────────────────────╮"
echo "│ 🐋 Polymarket Whale Watcher Setup │"
echo "╰──────────────────────────────────────────────────────────╯"
echo -e "${NC}"
# ============================================================
# Step 1: Check Python
# ============================================================
echo -e "${CYAN}[1/4]${NC} Checking Python version..."
if ! command -v python3 &> /dev/null; then
echo -e "${RED}Error: Python 3 is required but not installed.${NC}"
echo " Install from https://www.python.org/downloads/"
exit 1
fi
PYTHON_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
PYTHON_MAJOR=$(echo "$PYTHON_VERSION" | cut -d. -f1)
PYTHON_MINOR=$(echo "$PYTHON_VERSION" | cut -d. -f2)
if [ "$PYTHON_MAJOR" -lt 3 ] || ([ "$PYTHON_MAJOR" -eq 3 ] && [ "$PYTHON_MINOR" -lt 10 ]); then
echo -e "${RED}Error: Python 3.10+ required, found $PYTHON_VERSION${NC}"
exit 1
fi
echo -e " ${GREEN}${NC} Python $PYTHON_VERSION"
# ============================================================
# Step 2: Virtual environment
# ============================================================
echo -e "${CYAN}[2/4]${NC} Setting up virtual environment..."
if [ ! -d "venv" ]; then
python3 -m venv venv
echo -e " ${GREEN}${NC} Virtual environment created"
else
echo -e " ${GREEN}${NC} Virtual environment already exists"
fi
# ============================================================
# Step 3: Install dependencies
# ============================================================
echo -e "${CYAN}[3/4]${NC} Installing dependencies..."
source venv/bin/activate
pip install --upgrade pip -q
pip install -r requirements.txt -q
echo -e " ${GREEN}${NC} Dependencies installed"
# Create data directories
mkdir -p data reports daily_briefings
# ============================================================
# Step 4: API Key Configuration
# ============================================================
echo -e "${CYAN}[4/4]${NC} Configuring API keys..."
echo ""
if [ -f ".env" ]; then
echo -e " ${YELLOW}Found existing .env file.${NC}"
read -p " Overwrite and reconfigure? [y/N] " overwrite
if [[ ! "$overwrite" =~ ^[Yy]$ ]]; then
echo -e " ${GREEN}${NC} Keeping existing .env"
echo ""
echo -e "${GREEN}Setup complete! Run:${NC}"
echo " source venv/bin/activate"
echo " python -m src.main run"
exit 0
fi
fi
cp .env.example .env
# Helper function: prompt for a key and write to .env
set_key() {
local var_name="$1"
local prompt_text="$2"
local url="$3"
local required="$4"
echo ""
if [ "$required" = "required" ]; then
echo -e " ${BOLD}${var_name}${NC} ${RED}(required)${NC}"
else
echo -e " ${BOLD}${var_name}${NC} ${DIM}(optional, press Enter to skip)${NC}"
fi
echo -e " ${DIM}$prompt_text${NC}"
echo -e " ${DIM}$url${NC}"
while true; do
read -p " Key: " key_value
if [ -z "$key_value" ]; then
if [ "$required" = "required" ]; then
echo -e " ${RED}This key is required. Please enter a value.${NC}"
continue
else
echo -e " ${DIM}Skipped${NC}"
return
fi
fi
break
done
# Replace the placeholder in .env
if grep -q "^${var_name}=" .env; then
sed -i.bak "s|^${var_name}=.*|${var_name}=${key_value}|" .env
elif grep -q "^# ${var_name}=" .env; then
sed -i.bak "s|^# ${var_name}=.*|${var_name}=${key_value}|" .env
else
echo "${var_name}=${key_value}" >> .env
fi
rm -f .env.bak
echo -e " ${GREEN}✓ Saved${NC}"
}
echo -e "${CYAN}╭──────────────────────────────────────────────────────────╮${NC}"
echo -e "${CYAN}│ API Key Configuration │${NC}"
echo -e "${CYAN}│ │${NC}"
echo -e "${CYAN}│ The more keys you add, the better the analysis. │${NC}"
echo -e "${CYAN}│ Only LLM_API_KEY is required. Others are optional but │${NC}"
echo -e "${CYAN}│ strongly recommended for full coverage. │${NC}"
echo -e "${CYAN}╰──────────────────────────────────────────────────────────╯${NC}"
# --- Required ---
echo ""
echo -e "${YELLOW}━━━ Required (LLM Engine) ━━━${NC}"
set_key "LLM_API_KEY" \
"Powers the LLM analysis (OpenAI-compatible)" \
"https://platform.openai.com/api-keys" \
"required"
# --- Core Search ---
echo ""
echo -e "${YELLOW}━━━ Web Search (strongly recommended) ━━━${NC}"
echo -e "${DIM} Without these, LLM falls back to DuckDuckGo (lower quality)${NC}"
set_key "TAVILY_API_KEY" \
"Best web search quality, 1000 free searches/month" \
"https://app.tavily.com/home"
set_key "SERPER_API_KEY" \
"Google search fallback, 2500 free searches" \
"https://serper.dev"
# --- Social Sentiment ---
echo ""
echo -e "${YELLOW}━━━ Social Sentiment ━━━${NC}"
set_key "TWITTER_API_KEY" \
"Twitter/X sentiment & breaking news search" \
"https://developer.x.com/en/portal/dashboard"
# --- Financial Data ---
echo ""
echo -e "${YELLOW}━━━ Financial & On-Chain Data ━━━${NC}"
set_key "POLYGON_API_KEY" \
"Stock, ETF, forex, commodities data (free tier)" \
"https://polygon.io/dashboard/signup"
set_key "FRED_API_KEY" \
"US economic indicators (free, instant approval)" \
"https://fred.stlouisfed.org/docs/api/api_key.html"
set_key "ETHERSCAN_API_KEY" \
"On-chain wallet & contract analysis (free tier)" \
"https://etherscan.io/myapikey"
set_key "CONGRESS_API_KEY" \
"US legislation & bills tracking (free)" \
"https://api.congress.gov/sign-up/"
# --- Summary ---
echo ""
echo ""
# Count configured keys
configured=0
total=8
for var in LLM_API_KEY TAVILY_API_KEY SERPER_API_KEY TWITTER_API_KEY POLYGON_API_KEY FRED_API_KEY ETHERSCAN_API_KEY CONGRESS_API_KEY; do
val=$(grep "^${var}=" .env 2>/dev/null | cut -d= -f2-)
if [ -n "$val" ] && [ "$val" != "your_api_key_here" ]; then
configured=$((configured + 1))
fi
done
echo -e "${GREEN}╭──────────────────────────────────────────────────────────╮${NC}"
echo -e "${GREEN}│ ✅ Setup Complete! │${NC}"
echo -e "${GREEN}│ │${NC}"
echo -e "${GREEN}│ API Keys configured: ${configured}/${total}${NC}"
echo -e "${GREEN}╰──────────────────────────────────────────────────────────╯${NC}"
if [ "$configured" -lt 4 ]; then
echo ""
echo -e " ${YELLOW}Tip: More API keys = better analysis coverage.${NC}"
echo -e " ${YELLOW}You can edit .env anytime to add more keys later.${NC}"
fi
echo ""
echo " Start monitoring:"
echo -e " ${BOLD}source venv/bin/activate${NC}"
echo -e " ${BOLD}python -m src.main run${NC}"
echo ""
echo " Other commands:"
echo " python -m src.main check-markets # View trending markets"
echo " python -m src.main dashboard # Web dashboard"
echo " python -m src.main briefing --today # Daily briefing"
echo ""