From c722199763cf52f27f23a578cee34f68e09a1a6c Mon Sep 17 00:00:00 2001 From: cadenforrest Date: Wed, 25 Nov 2020 02:49:32 -0600 Subject: [PATCH 1/3] fixing things --- find_hero_test.py | 19 ------------------- opendota.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 19 deletions(-) delete mode 100644 find_hero_test.py diff --git a/find_hero_test.py b/find_hero_test.py deleted file mode 100644 index b1357bb..0000000 --- a/find_hero_test.py +++ /dev/null @@ -1,19 +0,0 @@ -import opendota - -herolist = opendota.get_hero_list() - -i = 1 - - -def find_hero(heroname): - i = 1 - for hero in herolist: - i += 1 - if herolist[i]["localized_name"] == heroname: - return herolist[i] - - print("Didn't find the hero") - return - - -print(find_hero("Juggernaut")) diff --git a/opendota.py b/opendota.py index 0d4b97f..ab0b023 100644 --- a/opendota.py +++ b/opendota.py @@ -11,6 +11,31 @@ # def find_matches_by_hero(): +def make_query(hero1, hero2): + query = + f"""SELECT player_matches.{get_hero_id(hero1)} AS hero1, + player_matches1.{get_hero_id(hero2)} AS hero2, + player_matches.player_slot AS ps1, + player_matches1.player_slot AS ps2, + matches.match_id, + leagues.name leaguename + FROM player_matches + JOIN player_matches AS player_matches1 + ON player_matches.match_id = player_matches1.match_id + JOIN matches + ON player_matches.match_id = matches.match_id + JOIN leagues using(leagueid) + WHERE player_matches.hero_id = 4 + AND player_matches1.hero_id = 3 + AND matches.start_time >= extract(epoch + FROM timestamp '2020-10-23T06:53:44.537Z') + AND abs(player_matches.player_slot - player_matches1.player_slot) > 123 + ORDER BY matches.match_id NULLS LAST LIMIT 200""" + + + + + def find_hero(heroname): for hero in load_hero_list(): @@ -46,3 +71,6 @@ def load_hero_list(): if __name__ == "__main__": main() + + + From 608f8f7e2ea9ec17d6223c9d77be6e51812b2719 Mon Sep 17 00:00:00 2001 From: cadenforrest Date: Fri, 27 Nov 2020 04:00:11 -0600 Subject: [PATCH 2/3] added a 1v1 query generator. get_matches returns list of pro matches between two heroes --- opendota.py | 23 +++++++++++++++++------ tests/test_find_hero.py | 7 +++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/opendota.py b/opendota.py index ab0b023..eba687d 100644 --- a/opendota.py +++ b/opendota.py @@ -12,9 +12,8 @@ # def find_matches_by_hero(): def make_query(hero1, hero2): - query = - f"""SELECT player_matches.{get_hero_id(hero1)} AS hero1, - player_matches1.{get_hero_id(hero2)} AS hero2, + query = f"""SELECT player_matches.hero_id AS hero1, + player_matches1.hero_id AS hero2, player_matches.player_slot AS ps1, player_matches1.player_slot AS ps2, matches.match_id, @@ -25,16 +24,28 @@ def make_query(hero1, hero2): JOIN matches ON player_matches.match_id = matches.match_id JOIN leagues using(leagueid) - WHERE player_matches.hero_id = 4 - AND player_matches1.hero_id = 3 + WHERE player_matches.hero_id = {get_hero_id(hero1)} + AND player_matches1.hero_id = {get_hero_id(hero2)} AND matches.start_time >= extract(epoch FROM timestamp '2020-10-23T06:53:44.537Z') AND abs(player_matches.player_slot - player_matches1.player_slot) > 123 ORDER BY matches.match_id NULLS LAST LIMIT 200""" - + response = requests.get( + f"{API_ROOT}/explorer", params=dict(api_key=secret.OPENDOTA_API_KEY, sql = query) + ) + return response.json() +##returns list of pro match ids played between two opposing heroes +def get_matches(hero1, hero2): + query_response = make_query(hero1, hero2) + match_list = query_response['rows'] ##list of dictionaries for some reason + result = [] + + for match in match_list: + result.append(match['match_id']) + return result def find_hero(heroname): diff --git a/tests/test_find_hero.py b/tests/test_find_hero.py index 5f335ec..8f49869 100644 --- a/tests/test_find_hero.py +++ b/tests/test_find_hero.py @@ -10,3 +10,10 @@ def test_find_juggernaut(): def test_hero_id(): juggernaut_id = opendota.get_hero_id("Juggernaut") assert juggernaut_id == 8 + +def test_query(): + print(opendota.make_query("Bloodseeker", "Crystal Maiden")) + + +def test_get_matches(): + print(opendota.get_matches("Bloodseeker", "Crystal Maiden")) \ No newline at end of file From 769766b12201d8fdfe38e5168932416f9a93641a Mon Sep 17 00:00:00 2001 From: cadenforrest Date: Fri, 27 Nov 2020 04:00:41 -0600 Subject: [PATCH 3/3] gitignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9216640..8da8369 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ secret.py *__pycache__/* -.idea/* \ No newline at end of file +.idea/* +Pipfile +Pipfile.lock +.vscode/settings.json