Skip to content

Instantly share code, notes, and snippets.

@FWidm
Last active April 26, 2019 15:41
Show Gist options
  • Save FWidm/a40f378df3d78648066cef3656075bca to your computer and use it in GitHub Desktop.
Save FWidm/a40f378df3d78648066cef3656075bca to your computer and use it in GitHub Desktop.
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