#!/bin/bash # AI Studio Proxy API 一键安装脚本 (macOS/Linux) # 使用 Poetry 进行依赖管理 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 日志函数 log_info() { echo -e "${BLUE}[INFO]${NC} $1" } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # 检查命令是否存在 command_exists() { command -v "$1" >/dev/null 2>&1 } # 检查 Python 版本 check_python() { log_info "检查 Python 版本..." if command_exists python3; then PYTHON_CMD="python3" elif command_exists python; then PYTHON_CMD="python" else log_error "未找到 Python。请先安装 Python 3.9+" exit 1 fi PYTHON_VERSION=$($PYTHON_CMD --version 2>&1 | cut -d' ' -f2) 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 9 ]); then log_error "Python 版本过低: $PYTHON_VERSION。需要 Python 3.9+" exit 1 fi log_success "Python 版本: $PYTHON_VERSION ✓" } # 安装 Poetry install_poetry() { if command_exists poetry; then log_success "Poetry 已安装 ✓" return fi log_info "安装 Poetry..." curl -sSL https://install.python-poetry.org | $PYTHON_CMD - # 添加 Poetry 到 PATH export PATH="$HOME/.local/bin:$PATH" if command_exists poetry; then log_success "Poetry 安装成功 ✓" else log_error "Poetry 安装失败。请手动安装 Poetry" exit 1 fi } # 克隆项目 clone_project() { log_info "克隆项目..." if [ -d "AIstudioProxyAPI" ]; then log_warning "项目目录已存在,跳过克隆" cd AIstudioProxyAPI else git clone https://github.com/CJackHwang/AIstudioProxyAPI.git cd AIstudioProxyAPI log_success "项目克隆成功 ✓" fi } # 安装依赖 install_dependencies() { log_info "安装项目依赖..." poetry install log_success "依赖安装成功 ✓" } # 下载 Camoufox download_camoufox() { log_info "下载 Camoufox 浏览器..." poetry run camoufox fetch log_success "Camoufox 下载成功 ✓" } # 安装 Playwright 依赖 install_playwright_deps() { log_info "安装 Playwright 依赖..." poetry run playwright install-deps firefox || { log_warning "Playwright 依赖安装失败,但不影响主要功能" } } # 创建配置文件 create_config() { log_info "创建配置文件..." if [ ! -f ".env" ] && [ -f ".env.example" ]; then cp .env.example .env log_success "配置文件创建成功 ✓" log_info "请编辑 .env 文件进行个性化配置" else log_warning "配置文件已存在或模板不存在" fi } # 验证安装 verify_installation() { log_info "验证安装..." # 检查 Poetry 环境 poetry env info >/dev/null 2>&1 || { log_error "Poetry 环境验证失败" exit 1 } # 检查关键依赖 poetry run python -c "import fastapi, playwright, camoufox" || { log_error "关键依赖验证失败" exit 1 } log_success "安装验证成功 ✓" } # 显示后续步骤 show_next_steps() { echo log_success "🎉 安装完成!" echo echo "后续步骤:" echo "1. 进入项目目录: cd AIstudioProxyAPI" echo "2. 激活虚拟环境: poetry env activate" echo "3. 配置环境变量: nano .env" echo "4. 首次认证设置: python launch_camoufox.py --debug" echo "5. 日常运行: python launch_camoufox.py --headless" echo echo "详细文档:" echo "- 环境配置: docs/environment-configuration.md" echo "- 认证设置: docs/authentication-setup.md" echo "- 日常使用: docs/daily-usage.md" echo } # 主函数 main() { echo "🚀 AI Studio Proxy API 一键安装脚本" echo "使用 Poetry 进行现代化依赖管理" echo check_python install_poetry clone_project install_dependencies download_camoufox install_playwright_deps create_config verify_installation show_next_steps } # 运行主函数 main "$@"