Last active
April 26, 2019 15:41
-
-
Save FWidm/a40f378df3d78648066cef3656075bca to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from pprint import pprint | |
import requests | |
class RiverHistory(object): | |
def __init__(self, league, data, league_info: dict = None) -> None: | |
super().__init__() | |
self.league = league | |
self.mean = data['mean'] | |
self.median = data['median'] | |
self.min = data['min'] | |
self.max = data['max'] | |
self.total = data['total'] | |
self.daily = data['daily'] | |
if league_info: | |
self.league_id = data['league']['id'] | |
self.start = data['league']['start'] | |
self.end = data['league']['end'] | |
self.__data = data | |
def differences_between(self, other: 'RiverHistory'): | |
return RiverHistory(self.league + " <> " + other.league, | |
{ | |
'mean': other.mean - self.mean, | |
'median': other.median - self.median, | |
'min': other.min - self.min, | |
'max': other.min - self.min, | |
'total': other.total - self.total, | |
'daily': other.daily - self.daily | |
}) | |
def __repr__(self) -> str: | |
return f"{self.league}: <min={self.min}, max={self.max}, mean={self.mean}, median={self.median} | total={self.total}, daily={self.daily}>" | |
class ItemDetails: | |
def __init__(self, name: str, history: dict) -> None: | |
super().__init__() | |
self.name = name | |
self.league_data = {league: RiverHistory(league, history[league], history[league]['league']) for league in | |
history} | |
self.__history = history | |
def __repr__(self) -> str: | |
return f"{self.name}: <leagues:{self.league_data}>" | |
def analyse_league_diffs(self): | |
league_comparison = [] | |
for league, history in self.league_data.items(): | |
league_comparison.append( | |
[history.differences_between(other_history) for other_league, other_history in self.league_data.items() | |
if league != other_league]) | |
return league_comparison | |
base_url = "https://api.poe.watch/" | |
endpoint_item_data = "itemdata" | |
endpoint_item_detaily = "item" | |
opt_category = "category=" | |
opt_id = "id=" | |
# leagues: https://api.poe.watch/leagues | |
def get_category_data(category: str): | |
print("connecting") | |
return requests.get(base_url + endpoint_item_data + "?" + opt_category + category).json() | |
def fetch_detailed_item_stats(item_id: int): | |
print(f"fetching for {item_id}") | |
return requests.get(base_url + endpoint_item_detaily + "?" + opt_id + str(item_id)).json() | |
def analyse_item(item: dict): | |
name = item['name'] | |
history = {i['league']['name']: i for i in item['data']} | |
details = ItemDetails(name, history) | |
pprint(details) | |
pprint(details.analyse_league_diffs()) | |
if __name__ == '__main__': | |
weapons = get_category_data("weapon") | |
detailed_weapons = [analyse_item(fetch_detailed_item_stats(item['id'])) for item in weapons] | |
# pprint(detailed_weapons) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment