import time
-from datetime import datetime
+from datetime import datetime, timedelta
from decimal import Decimal as D, ROUND_DOWN
# Put your poloniex api key in market.py
from json import JSONDecodeError
URL = "https://cryptoportfolio.io/wp-content/uploads/portfolio/json/cryptoportfolio.json"
liquidities = {}
data = None
+ last_date = None
@classmethod
- def repartition(cls, liquidity="medium"):
- cls.parse_cryptoportfolio()
+ def wait_for_recent(cls, delta=4):
+ cls.repartition(refetch=True)
+ while cls.last_date is None or datetime.now() - cls.last_date > timedelta(delta):
+ time.sleep(30)
+ cls.repartition(refetch=True)
+
+ @classmethod
+ def repartition(cls, liquidity="medium", refetch=False):
+ cls.parse_cryptoportfolio(refetch=refetch)
liquidities = cls.liquidities[liquidity]
- cls.last_date = sorted(liquidities.keys())[-1]
return liquidities[cls.last_date]
@classmethod
cls.data = None
@classmethod
- def parse_cryptoportfolio(cls):
- if cls.data is None:
+ def parse_cryptoportfolio(cls, refetch=False):
+ if refetch or cls.data is None:
cls.get_cryptoportfolio()
def filter_weights(weight_hash):
weights_hash = portfolio_hash["weights"]
weights = {}
for i in range(len(weights_hash["_row"])):
- weights[weights_hash["_row"][i]] = dict(filter(
+ date = datetime.strptime(weights_hash["_row"][i], "%Y-%m-%d")
+ weights[date] = dict(filter(
filter_weights,
map(clean_weights(i), weights_hash.items())))
return weights
"medium": medium_liquidity,
"high": high_liquidity,
}
+ cls.last_date = max(max(medium_liquidity.keys()), max(high_liquidity.keys()))
class Computation:
computations = {