import re from fpl_client import FPLClient import logging # Initialize the FPL client fpl_client = FPLClient() # Get the list of teams teams = fpl_client.get_teams() def extract_player_name(query): # Updated regex to include accented characters and names with periods match = re.search(r"(\b[A-Z][a-zA-Z]*[a-zA-Z.]*\b(?:\s[A-Z][a-zA-Z]*[a-zA-Z.]*\b)?)", query, re.UNICODE) logging.info(f"Extracted player name: {match}") return match.group(1) if match else None def extract_from_quotes(query): match = re.search(r'"([^"]*)"', query) logging.info(f"Extracted text from quotes: {match}") return match.group(1) if match else None def extract_team_name(query): logging.info(f"Extracting team name from query: {query}") logging.debug(f"Teams: {teams}") # Add your logic to extract team names, could use a list of teams for team in teams: if team.lower() in query.lower(): return team return None def process_query(query, fpl_client): if "stats" in query.lower(): player_name = extract_player_name(query) if player_name: stats = fpl_client.get_player_stats(player_name) if stats == "Player not found": logging.info("Player name not found in the query. \nTrying to extract from quotes.") player_name = extract_from_quotes(query) if player_name == None: return 'Player name not found in the query. \nTry "Player-Name" in double-quotes' stats = fpl_client.get_player_stats(player_name) return stats return 'Player name not found in the query. \nTry "Player-Name" in double-quotes' if "team" in query.lower() or "players" in query.lower(): # Extract the team name from the query team_name = extract_team_name(query) # Check if a valid team name was found if team_name: # Get the list of players for the specified team players = fpl_client.get_team_players(team_name) # Return the formatted list of players from the specified team return f"Players from {team_name} are:\n" + "\n".join(players) # If no valid team name was found, enumerate the teams and format them as a numbered list enumerated_teams = [f"{index + 1}. {team}" for index, team in enumerate(teams)] return "It sound like you need the latest EPL team list: " + "\n" + "\n".join(enumerated_teams) if "injuries" in query.lower(): injuries = fpl_client.list_injuries() formatted_injuries = "\n\n".join([f"Player: {name} Injury: {news}" for name, news in injuries]) injury_count = len(injuries) return f"There are {injury_count} players with injuries:\n\n{formatted_injuries}" if "dream" in query.lower(): dt = fpl_client.dream_team() if dt == []: return "Dream Team not available" return "Dream Team is:\n" + "\n".join(dt) return "I'm not sure how to help with that."