diff --git a/README.md b/README.md index cf62481..dddd87c 100644 --- a/README.md +++ b/README.md @@ -185,6 +185,116 @@ Provides an API for HLTV b'K/D Ratio': b'1.05'}} ``` +## `get_match_info` +```python +>>> get_match_info("77841") +{'team1': {'name': 'Astralis', + 'players': ['device', 'Magisk', 'Xyp9x', 'dupreeh', 'gla1ve'], + 'device': {'kills': '67', + 'headshots': '23', + 'assists': '17', + 'flash_assists': '7', + 'deaths': '61', + 'kast': '71.9%', + 'kd_diff': '+6', + 'adr': '84.8', + 'fk_diff': '+7', + 'rating': '1.17'}, + 'Magisk': {'kills': '59', + 'headshots': '25', + 'assists': '12', + 'flash_assists': '3', + 'deaths': '64', + 'kast': '68.5%', + 'kd_diff': '-5', + 'adr': '77.3', + 'fk_diff': '+4', + 'rating': '1.03'}, + 'Xyp9x': {'kills': '58', + 'headshots': '24', + 'assists': '22', + 'flash_assists': '8', + 'deaths': '58', + 'kast': '69.7%', + 'kd_diff': '0', + 'adr': '72.6', + 'fk_diff': '+1', + 'rating': '1.02'}, + 'dupreeh': {'kills': '56', + 'headshots': '33', + 'assists': '15', + 'flash_assists': '2', + 'deaths': '61', + 'kast': '66.3%', + 'kd_diff': '-5', + 'adr': '59.7', + 'fk_diff': '+1', + 'rating': '0.94'}, + 'gla1ve': {'kills': '45', + 'headshots': '19', + 'assists': '22', + 'flash_assists': '9', + 'deaths': '65', + 'kast': '60.7%', + 'kd_diff': '-20', + 'adr': '62.5', + 'fk_diff': '-8', + 'rating': '0.79'}}, + 'team2': {'name': 'G2', + 'players': ['NiKo', 'huNter-', 'AmaNEk', 'nexa', 'kennyS'], + 'NiKo': {'kills': '67', + 'headshots': '23', + 'assists': '17', + 'flash_assists': '7', + 'deaths': '61', + 'kast': '71.9%', + 'kd_diff': '+6', + 'adr': '84.8', + 'fk_diff': '+7', + 'rating': '1.17'}, + 'huNter-': {'kills': '59', + 'headshots': '25', + 'assists': '12', + 'flash_assists': '3', + 'deaths': '64', + 'kast': '68.5%', + 'kd_diff': '-5', + 'adr': '77.3', + 'fk_diff': '+4', + 'rating': '1.03'}, + 'AmaNEk': {'kills': '58', + 'headshots': '24', + 'assists': '22', + 'flash_assists': '8', + 'deaths': '58', + 'kast': '69.7%', + 'kd_diff': '0', + 'adr': '72.6', + 'fk_diff': '+1', + 'rating': '1.02'}, + 'nexa': {'kills': '56', + 'headshots': '33', + 'assists': '15', + 'flash_assists': '2', + 'deaths': '61', + 'kast': '66.3%', + 'kd_diff': '-5', + 'adr': '59.7', + 'fk_diff': '+1', + 'rating': '0.94'}, + 'kennyS': {'kills': '45', + 'headshots': '19', + 'assists': '22', + 'flash_assists': '9', + 'deaths': '65', + 'kast': '60.7%', + 'kd_diff': '-20', + 'adr': '62.5', + 'fk_diff': '-8', + 'rating': '0.79'}}} +``` + + ## `get_matches` ```python diff --git a/main.py b/main.py index 86b6f23..41a1384 100644 --- a/main.py +++ b/main.py @@ -145,6 +145,46 @@ def get_team_info(teamid): return team_info +def get_match_info(match_id): + """ + Will get match data, NOT map data + :param match_id: integer (or string consisting of integers) + :return dictionary of match + + example match id: 65090 (fnatic-vs-nip) + """ + page = get_parsed_page(f"https://www.hltv.org/stats/matches/{match_id}/a") + + match_info = { + "team1": { + "name": page.find_all("table", {"class": "stats-table"})[0].find("th", {"class": "st-teamname"}).text + }, + "team2": { + "name": page.find_all("table", {"class": "stats-table"})[1].find("th", {"class": "st-teamname"}).text + } + } + + match_info["team1"]["players"] = [player.text for player in page.find_all("table", {"class": "stats-table"})[0].find_all("td", {"class": "st-player"})] + match_info["team2"]["players"] = [player.text for player in page.find_all("table", {"class": "stats-table"})[1].find_all("td", {"class": "st-player"})] + + for team in ["team1", "team2"]: + for count, player in enumerate(match_info[team]["players"]): + stats_table = page.find_all("table", {"class": "stats-table"})[0] + match_info[team][player] = { + "kills": stats_table.find_all("td", {"class": "st-kills"})[count].text.split()[0], + "headshots": stats_table.find_all("td", {"class": "st-kills"})[count].text.split("(")[-1][:-1], + "assists": stats_table.find_all("td", {"class": "st-assists"})[count].text.split()[0], + "flash_assists": stats_table.find_all("td", {"class": "st-assists"})[count].text.split("(")[-1][:-1], + "deaths": stats_table.find_all("td", {"class": "st-deaths"})[count].text, + "kast": stats_table.find_all("td", {"class": "st-kdratio"})[count].text, + "kd_diff": stats_table.find_all("td", {"class": "st-kddiff"})[count].text, + "adr": stats_table.find_all("td", {"class": "st-adr"})[count].text, + "fk_diff": stats_table.find_all("td", {"class": "st-fkdiff"})[count].text, + "rating": stats_table.find_all("td", {"class": "st-rating"})[count].text, + } + + return match_info + def _get_current_lineup(player_anchors): """ helper function for function above