""" Fix player names by removing asterisks (*) and hash symbols (#) from cardset 27 """ import asyncio import aiohttp from db_calls import db_get, db_patch, DB_URL, AUTH_TOKEN CARDSET_ID = 27 async def fix_player_names(): print(f"Fetching all players from cardset {CARDSET_ID}...") # Get all players from cardset response = await db_get('players', params=[('cardset_id', CARDSET_ID), ('page_size', 500)]) # Handle different response structures if 'players' in response: all_players = response['players'] elif 'results' in response: all_players = response['results'] else: print(f"Error: Unexpected response structure. Response keys: {response.keys()}") return print(f"Found {len(all_players)} players") # Track what we're fixing fixed_count = 0 skipped_count = 0 for player in all_players: player_id = player['player_id'] original_name = player['p_name'] # Check if name has asterisk or hash if '*' in original_name or '#' in original_name: # Remove the symbols clean_name = original_name.replace('*', '').replace('#', '').strip() print(f"Fixing player {player_id}: '{original_name}' -> '{clean_name}'") # PATCH the player (API expects 'name' parameter, not 'p_name') result = await db_patch('players', object_id=player_id, params=[('name', clean_name)]) if 'player_id' in result or 'id' in result: fixed_count += 1 else: print(f" ERROR patching player {player_id}: {result}") else: skipped_count += 1 print(f"\n{'='*60}") print(f"SUMMARY") print(f"{'='*60}") print(f"Fixed: {fixed_count} players") print(f"Skipped (no symbols): {skipped_count} players") print(f"Total: {len(all_players)} players") if __name__ == '__main__': asyncio.run(fix_player_names())