""" Setup script for the YouTube Processing Workflow project. """ import os import sys import subprocess import platform def check_python_version(): """Check if Python version is compatible.""" version = sys.version_info if version.major < 3 or (version.major == 3 and version.minor < 8): print("โŒ Python 3.8+ is required. Current version:", sys.version) return False print(f"โœ… Python version OK: {sys.version}") return True def install_dependencies(): """Install required dependencies.""" print("๐Ÿ“ฆ Installing dependencies...") try: subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"]) print("โœ… Dependencies installed successfully!") return True except subprocess.CalledProcessError as e: print(f"โŒ Failed to install dependencies: {str(e)}") return False def setup_environment(): """Setup environment configuration.""" print("โš™๏ธ Setting up environment...") if os.path.exists(".env"): print("โœ… .env file already exists") return True if os.path.exists("env.example"): print("๐Ÿ“ Creating .env file from example...") try: with open("env.example", "r") as example_file: with open(".env", "w") as env_file: env_file.write(example_file.read()) print("โœ… .env file created!") print("๐Ÿ’ก Please edit .env to add your API keys") return True except Exception as e: print(f"โŒ Failed to create .env file: {str(e)}") return False else: print("โš ๏ธ env.example file not found") return False def check_ffmpeg(): """Check if FFmpeg is available.""" print("๐ŸŽต Checking FFmpeg installation...") try: result = subprocess.run(["ffmpeg", "-version"], capture_output=True, text=True) if result.returncode == 0: print("โœ… FFmpeg is installed and available") return True else: print("โŒ FFmpeg not found or not working properly") return False except FileNotFoundError: print("โŒ FFmpeg not found") print("๐Ÿ“– Please install FFmpeg:") system = platform.system().lower() if system == "windows": print(" - Download from https://ffmpeg.org/download.html") print(" - Or use chocolatey: choco install ffmpeg") elif system == "darwin": # macOS print(" - Homebrew: brew install ffmpeg") else: # Linux print(" - Ubuntu/Debian: sudo apt update && sudo apt install ffmpeg") print(" - CentOS/RHEL: sudo yum install ffmpeg") return False def run_quick_test(): """Run a quick test to verify installation.""" print("๐Ÿงช Running quick test...") try: # Test imports import crewai print("โœ… CrewAI import successful") import whisper print("โœ… Whisper import successful") import yt_dlp print("โœ… yt-dlp import successful") import flask print("โœ… Flask import successful") print("โœ… All core dependencies imported successfully!") return True except ImportError as e: print(f"โŒ Import test failed: {str(e)}") return False def print_next_steps(): """Print next steps for the user.""" print("\\n๐ŸŽ‰ Setup completed!") print("=" * 40) print("๐Ÿ“‹ Next Steps:") print("") print("1. ๐Ÿ“ Edit .env file with your API keys:") print(" - PERPLEXITY_API_KEY (or OPENAI_API_KEY)") print(" - NOTELETT_API_KEY") print(" - NOTELETT_API_URL") print("") print("2. ๐Ÿงช Test the installation:") print(" python test.py") print("") print("3. ๐Ÿš€ Run an example:") print(" python example.py") print("") print("4. ๐Ÿ“– Read the documentation:") print(" See README.md for detailed usage instructions") print("") print("๐Ÿ’ก Quick Examples:") print(" python demo.py # Interactive demo") print(" python workflow.py # Command line usage") print(" python api.py # Start API server") def main(): """Main setup function.""" print("๐Ÿš€ YouTube Processing Workflow Setup") print("=" * 40) # Check prerequisites success = True success &= check_python_version() success &= install_dependencies() success &= setup_environment() success &= check_ffmpeg() success &= run_quick_test() if success: print_next_steps() else: print("\\nโŒ Setup encountered issues. Please fix the problems above.") sys.exit(1) if __name__ == "__main__": main()