From ad57ab34e7ebbe2afbc887c765e0e5f856b6f54a Mon Sep 17 00:00:00 2001 From: Frankwotfurters <59547088+Frankwotfurters@users.noreply.github.com> Date: Wed, 4 May 2022 12:38:21 +0800 Subject: [PATCH] get_results added functionality added count to retrieve multiple pages of data at once, data now contains timestamp, maps (inferno, bo3, bo5, etc.), and url --- hltv_data/client.py | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/hltv_data/client.py b/hltv_data/client.py index 21ea2f0..19ddb7f 100644 --- a/hltv_data/client.py +++ b/hltv_data/client.py @@ -36,26 +36,35 @@ def get_matches(self): return matches - def get_results(self): + def get_results(self, count=100): results = [] - soup = self._soup_from_url(RESULTS_URL) - matches = soup.find("div", {"class": "allres"}).find_all("div", {"class": "result"}) - for match in matches: - event = match.find("span", {"class": "event-name"}).text.strip() - teams = [item.text.strip() for item in match.find_all("div", {"class": "team"})] - result = [int(item.text.strip()) for item in match.find("td", {"class": "result-score"}).find_all("span")] - match_data = { - "event": event, - "team_1": { - "name": teams[0], - "result": result[0] - }, - "team_2": { - "name": teams[1], - "result": result[1] + for i in range(count//100 + (count % 100 > 0)): + soup = self._soup_from_url(RESULTS_URL + f"?offset={i*100}") + matches = soup.find("div", {"class": "allres"}).find_all("div", {"class": "result-con"}) + for match in matches: + event = match.find("span", {"class": "event-name"}).text.strip() + epoch = match.get("data-zonedgrouping-entry-unix") + teams = [item.text.strip() for item in match.find_all("div", {"class": "team"})] + result = [int(item.text.strip()) for item in match.find("td", {"class": "result-score"}).find_all("span")] + maps = match.find("div", {"class": "map-text"}).text.strip() + url = match.find("a", {"class": "a-reset"}).get("href") + match_data = { + "event": event, + "timestamp": epoch, + "team_1": { + "name": teams[0], + "result": result[0] + }, + "team_2": { + "name": teams[1], + "result": result[1] + }, + "maps": maps, + "url": url } - } - results.append(match_data) + results.append(match_data) + if len(results) == count: + break return results def get_ranking(self):