#!/usr/bin/env python3 """ Setup script for Quixotic Python Backend """ import os import sys import subprocess def run_command(cmd, description): """Run a command and handle errors""" print(f"šŸ“¦ {description}...") try: subprocess.run(cmd, shell=True, check=True) print(f"āœ… {description} completed successfully") except subprocess.CalledProcessError as e: print(f"āŒ {description} failed: {e}") return False return True def main(): """Main setup function""" print("šŸš€ Setting up Quixotic Python Backend...") # Check Python version if sys.version_info < (3, 8): print("āŒ Python 3.8 or higher is required") return False print(f"āœ… Python {sys.version.split()[0]} detected") # Create virtual environment if it doesn't exist if not os.path.exists("venv"): if not run_command("python -m venv venv", "Creating virtual environment"): return False # Activate virtual environment and install dependencies if os.name == 'nt': # Windows activate_cmd = "venv\\Scripts\\activate && " else: # Unix/Linux/Mac activate_cmd = "source venv/bin/activate && " if not run_command(f"{activate_cmd}pip install -r requirements.txt", "Installing Python dependencies"): return False # Create necessary directories directories = ["downloads", "database"] for directory in directories: if not os.path.exists(directory): os.makedirs(directory) print(f"šŸ“ Created directory: {directory}") # Check for environment variables print("\nšŸ”§ Environment Setup:") required_vars = [ ("DATABASE_URL", "postgresql://user:password@localhost:5432/quixotic"), ("VK_LOGIN", "your_vk_login"), ("VK_PASSWORD", "your_vk_password"), ("TELEGRAM_BOT_TOKEN", "your_telegram_bot_token"), ("WEB_APP_URL", "http://localhost:8000") ] env_file_content = [] for var_name, example in required_vars: if not os.getenv(var_name): print(f"āš ļø {var_name} not set (example: {example})") env_file_content.append(f"{var_name}={example}") else: print(f"āœ… {var_name} is configured") # Create .env file if needed if env_file_content and not os.path.exists(".env"): with open(".env", "w") as f: f.write("# Quixotic Python Backend Environment Variables\n") f.write("# Copy this file and update with your actual values\n\n") f.write("\n".join(env_file_content)) print("šŸ“ Created .env file with example values") print("\nšŸŽ‰ Setup completed successfully!") print("\nšŸ“‹ Next steps:") print("1. Update .env file with your actual credentials") print("2. Set up PostgreSQL database") print("3. Run: python main.py") print("4. Access the API at: http://localhost:8000") return True if __name__ == "__main__": success = main() sys.exit(0 if success else 1)