updated role names, added additonal roles, updated score calc to take 2 attribute sets instead of just 3

This commit is contained in:
jake-fawcett 2023-10-29 09:37:24 +00:00
parent c30eab644c
commit 4eefd5f29f
2 changed files with 56 additions and 6 deletions

View File

@ -5,5 +5,5 @@ Inspired by squirrel_plays_FOF's video [FM24 player recruitment using python](ht
## Usage ## Usage
``` ```
python3 position_score_calculator.py --input-filepath "squad.html" --output-filepath "squad_output.html" --roles goalkeeper fullback python3 position_score_calculator.py --input-filepath "squad.html" --output-filepath "squad_output.html" --roles gk fb dm w iw
``` ```

View File

@ -3,8 +3,8 @@ import argparse
# Define Player attributes # Define Player attributes
# TODO: Add roles. # TODO: Add roles.
goalkeeper = { gk = {
"role_name": "goalkeeper", "role_name": "gk",
"primary_multiplier": 5, "primary_multiplier": 5,
"primary_attributes": ["Agi", "Ref"], "primary_attributes": ["Agi", "Ref"],
"secondary_multiplier": 3, "secondary_multiplier": 3,
@ -13,8 +13,8 @@ goalkeeper = {
"tertiary_attributes": ["Acc", "Aer", "Cmp", "Dec", "Fir", "Han", "Pas", "Thr", "Vis"] "tertiary_attributes": ["Acc", "Aer", "Cmp", "Dec", "Fir", "Han", "Pas", "Thr", "Vis"]
} }
fullback = { fb = {
"role_name": "fullback", "role_name": "fb",
"primary_multiplier": 5, "primary_multiplier": 5,
"primary_attributes": ["Wor", "Acc", "Pac", "Sta"], "primary_attributes": ["Wor", "Acc", "Pac", "Sta"],
"secondary_multiplier": 3, "secondary_multiplier": 3,
@ -23,6 +23,54 @@ fullback = {
"tertiary_attributes": ["Agi", "Ant", "Cnt", "Dec", "Fir", "Pas", "Pos", "Tec"] "tertiary_attributes": ["Agi", "Ant", "Cnt", "Dec", "Fir", "Pas", "Pos", "Tec"]
} }
cd = {
"role_name": "cd",
"primary_multiplier": 3,
"primary_attributes": ["Cmp", "Hea", "Jum", "Mar", "Pas", "Pos", "Str", "Tck", "Pac"],
"secondary_multiplier": 1,
"secondary_attributes": ["Agg", "Ant", "Bra", "Cnt", "Dec", "Fir", "Tec", "Vis"]
}
dm = {
"role_name": "dm",
"primary_multiplier": 5,
"primary_attributes": ["Wor", "Pac", "Sta", "Pas"],
"secondary_multiplier": 3,
"secondary_attributes": ["Tck", "Ant", "Cnt", "Pos", "Bal", "Agi"],
"tertiary_multiplier": 1,
"tertiary_attributes": ["Tea", "Fir", "Mar", "Agg", "Cmp", "Dec", "Str"]
}
b2b = {
"role_name": "b2b",
"primary_multiplier": 5,
"primary_attributes": ["Pas", "Wor", "Sta"],
"secondary_multiplier": 3,
"secondary_attributes": ["Tck", "OtB", "Tea", "Vis", "Str", "Dec", "Pos", "Pac"],
"tertiary_multiplier": 1,
"tertiary_attributes": ["Agg", "Ant", "Fin", "Lon", "Cmp", "Acc", "Bal", "Fir", "Dri", "Tec"]
}
w = {
"role_name": "w",
"primary_multiplier": 3,
"primary_attributes": ["Acc", "Cro", "Dri", "OtB", "Pac", "Tec"],
"secondary_multiplier": 1,
"secondary_attributes": ["Agi", "Fir", "Pas", "Sta", "Wor"],
}
iw = {
"role_name": "iw",
"primary_multiplier": 5,
"primary_attributes": ["Acc", "Pac", "Wor"],
"secondary_multiplier": 3,
"secondary_attributes": ["Dri", "Pas", "Tec", "OtB"],
"tertiary_multiplier": 1,
"tertiary_attributes": ["Cro", "Fir", "Cmp", "Dec", "Vis", "Agi", "Sta"]
}
def load_html_data_to_dataframe(filepath: str) -> pd.DataFrame: def load_html_data_to_dataframe(filepath: str) -> pd.DataFrame:
"""Read HTML file exported by FM into a Dataframe """Read HTML file exported by FM into a Dataframe
@ -103,7 +151,9 @@ def calc_role_scores(player_df: pd.DataFrame, role: dict) -> pd.DataFrame:
""" """
player_df = sum_attributes(player_df, role["role_name"], "primary", role["primary_attributes"]) player_df = sum_attributes(player_df, role["role_name"], "primary", role["primary_attributes"])
player_df = sum_attributes(player_df, role["role_name"], "secondary", role["secondary_attributes"]) player_df = sum_attributes(player_df, role["role_name"], "secondary", role["secondary_attributes"])
player_df = sum_attributes(player_df, role["role_name"], "tertiary", role["tertiary_attributes"]) if "tertiary_attributes" in role:
print("here")
player_df = sum_attributes(player_df, role["role_name"], "tertiary", role["tertiary_attributes"])
divisor = role["primary_multiplier"] + role["secondary_multiplier"] + role["tertiary_multiplier"] divisor = role["primary_multiplier"] + role["secondary_multiplier"] + role["tertiary_multiplier"]
player_df[f'{role["role_name"]}'] = round((((player_df[f'{role["role_name"]}_primary'] * 5) + (player_df[f'{role["role_name"]}_secondary'] * 3) + (player_df[f'{role["role_name"]}_tertiary'] * 1)) / divisor ), 2) player_df[f'{role["role_name"]}'] = round((((player_df[f'{role["role_name"]}_primary'] * 5) + (player_df[f'{role["role_name"]}_secondary'] * 3) + (player_df[f'{role["role_name"]}_tertiary'] * 1)) / divisor ), 2)
return player_df return player_df