#!/usr/bin/env python3 """ Script to fix existing X accounts in the database. Updates platform names from various formats to canonical 'x'. """ import sqlite3 import os import sys from pathlib import Path # Add parent directory to path sys.path.insert(0, str(Path(__file__).parent.parent)) from domain.value_objects.platform_name import PlatformName def fix_x_accounts(db_path: str): """ Fix X accounts in the database by standardizing platform names. Args: db_path: Path to the database file """ if not os.path.exists(db_path): print(f"āŒ Database not found: {db_path}") return conn = sqlite3.connect(db_path) cursor = conn.cursor() # Find all potential X accounts with different naming possible_x_names = ['X', 'x', 'twitter', 'Twitter', 'X (Twitter)'] total_fixed = 0 for name in possible_x_names: cursor.execute("SELECT COUNT(*) FROM accounts WHERE platform = ?", (name,)) count = cursor.fetchone()[0] if count > 0: print(f"Found {count} accounts with platform='{name}'") # Update to canonical name cursor.execute("UPDATE accounts SET platform = ? WHERE platform = ?", ('x', name)) total_fixed += count print(f"āœ… Updated {count} accounts from '{name}' to 'x'") # Check for accounts that might have been missed cursor.execute("SELECT DISTINCT platform FROM accounts") all_platforms = cursor.fetchall() print("\nšŸ“Š Current platforms in database:") for platform in all_platforms: cursor.execute("SELECT COUNT(*) FROM accounts WHERE platform = ?", (platform[0],)) count = cursor.fetchone()[0] print(f" - {platform[0]}: {count} accounts") # Commit changes if total_fixed > 0: conn.commit() print(f"\nāœ… Successfully fixed {total_fixed} accounts") else: print("\n✨ No accounts needed fixing") conn.close() def main(): """Main function.""" # Database path db_path = Path(__file__).parent.parent / "database" / "accounts.db" print("šŸ”§ X Platform Name Fix Script") print("=" * 40) print(f"Database: {db_path}") print() fix_x_accounts(str(db_path)) print("\nšŸŽ‰ Done!") if __name__ == "__main__": main()