def evemarketer(self, type_ids=[]): db_types = self.outdated(type_ids, 'evemarketer') if len(db_types) > 0: ids = ','.join([str(x.id) for x in db_types]) all_prices = requests.get( url='https://api.evemarketer.com/ec/marketstat/json?typeid=' + ids + '®ionlimit=10000002') all_prices_hash = {} for r in all_prices.json(): type_id = r['sell']['forQuery']['types'][0] all_prices_hash[type_id] = r ts = datetime.now().isoformat() for db_type in db_types: db_price = Price.query.filter( Price.source == 'evemarketer', Price.type_id == db_type.id).order_by( Price.id.desc()).first() if not db_price: db_price = Price(source='evemarketer', type_id=db_type.id) db_price.buy = all_prices_hash[ db_type.id]['buy']['fivePercent'] db_price.sell = all_prices_hash[ db_type.id]['sell']['fivePercent'] db_price.updated_at = ts db.session.begin_nested() try: db.session.add(db_price) db.session.commit() except IntegrityError: db.session.rollback() db.session.commit()
def esi(self, type_ids=[]): db_types = self.outdated(type_ids, 'esi') if len(db_types) > 0: all_prices = esiclient.markets.prices() all_prices_hash = {} for r in all_prices: all_prices_hash[r['type_id']] = r['adjusted_price'] ts = datetime.now().isoformat() for db_type in db_types: db_price = Price.query.filter( Price.source == 'esi', Price.type_id == db_type.id).first() if not db_price: db_price = Price(source='esi', type_id=db_type.id) db_price.buy = all_prices_hash[db_price.type_id] db_price.sell = all_prices_hash[db_price.type_id] db_price.updated_at = ts db.session.add(db_price) db.session.commit()
def update_market(game): """Get market prices""" supremacy = Supremacy(game.game_id, game.game_host) result = supremacy.market() orders = result["asks"][1] + result["bids"][1] market = Market() market.game_id = game.id market.datetime = datetime.now() db.session.add(market) prices = {} for resource in orders: if resource[1]: lowest_order = resource[1][0] price = Price() price.value = lowest_order["limit"] price.buy = lowest_order["buy"] price.resource_id = lowest_order["resourceType"] market.prices.append(price) prices[price.resource_id] = price for order_json in resource[1]: player = game.players.filter( Player.player_id == order_json["playerID"]).first() order = Order() order.order_id = order_json["orderID"] order.amount = order_json["amount"] order.buy = order_json["buy"] order.limit = order_json["limit"] order.resource_id = order_json["resourceType"] market.orders.append(order) if player is not None: player.orders.append(order) db.session.add(order) db.session.commit() prev_market = market.previous if prev_market: prev_prices = prev_market.price_list if prev_prices: for resource, price in prices.items(): if prev_prices[resource]: price.previous_id = prev_prices[resource].id for resource, price in prices.items(): prev_price = price.previous if prev_price: prev_prev_price = prev_price.previous if prev_prev_price: if prev_prev_price.value == prev_price.value and \ prev_price.value == price.value: price.previous_id = prev_prev_price.id db.session.commit() db.session.delete(prev_price) db.session.commit()