#!/usr/bin/env python3 """ Quick check script to verify method rotation system status. Run this to ensure everything is working before starting main.py """ import sys import os from pathlib import Path # Add project root to path project_root = Path(__file__).parent sys.path.insert(0, str(project_root)) def check_imports(): """Check if all rotation system imports work""" print("šŸ” Checking imports...") try: from domain.entities.method_rotation import MethodStrategy, RotationSession print("āœ… Domain entities: OK") except Exception as e: print(f"āŒ Domain entities: {e}") return False try: from application.use_cases.method_rotation_use_case import MethodRotationUseCase print("āœ… Use cases: OK") except Exception as e: print(f"āŒ Use cases: {e}") return False try: from controllers.platform_controllers.method_rotation_mixin import MethodRotationMixin print("āœ… Controller mixin: OK") except Exception as e: print(f"āŒ Controller mixin: {e}") return False return True def check_database(): """Check database and tables""" print("\nšŸ—„ļø Checking database...") db_path = project_root / "database" / "accounts.db" if not db_path.exists(): print(f"āŒ Database not found: {db_path}") return False print(f"āœ… Database found: {db_path}") try: import sqlite3 conn = sqlite3.connect(str(db_path)) cursor = conn.cursor() # Check for rotation tables cursor.execute(""" SELECT name FROM sqlite_master WHERE type='table' AND ( name = 'method_strategies' OR name = 'rotation_sessions' OR name = 'platform_method_states' ) """) tables = [row[0] for row in cursor.fetchall()] conn.close() if len(tables) >= 3: print(f"āœ… Rotation tables found: {tables}") return True else: print(f"āš ļø Missing rotation tables. Found: {tables}") return False except Exception as e: print(f"āŒ Database check failed: {e}") return False def check_config(): """Check configuration files""" print("\nāš™ļø Checking configuration...") config_path = project_root / "config" / "method_rotation_config.json" if config_path.exists(): print("āœ… Rotation config found") return True else: print("āš ļø Rotation config not found (will use defaults)") return True # Not critical def check_controllers(): """Check if controllers can be imported""" print("\nšŸŽ® Checking controllers...") try: from controllers.platform_controllers.base_controller import BasePlatformController print("āœ… Base controller: OK") from controllers.platform_controllers.instagram_controller import InstagramController print("āœ… Instagram controller: OK") return True except Exception as e: print(f"āŒ Controller check failed: {e}") return False def main(): """Main check function""" print("šŸ”§ Method Rotation System - Status Check") print("=" * 50) checks = [ ("Imports", check_imports), ("Database", check_database), ("Config", check_config), ("Controllers", check_controllers) ] all_good = True for name, check_func in checks: try: result = check_func() if not result: all_good = False except Exception as e: print(f"āŒ {name} check crashed: {e}") all_good = False print("\n" + "=" * 50) if all_good: print("āœ… Method rotation system is ready!") print("šŸš€ You can safely start main.py") print("\nšŸ’” Expected behavior:") print(" - Account creation works as before") print(" - Additional rotation logs will appear") print(" - Automatic method switching on failures") print(" - Graceful fallback if any issues occur") else: print("āš ļø Some issues detected, but main.py should still work") print("šŸ”„ Rotation system will fall back to original behavior") print("\nšŸ› ļø To fix issues:") print(" 1. Run: python3 run_migration.py") print(" 2. Check file permissions") print(" 3. Restart main.py") print("\nšŸ“ To test rotation manually:") print(" - Create an account on any platform") print(" - Check logs for rotation messages") print(" - Simulate failures to see rotation in action") if __name__ == "__main__": main()