Exemple #1
0
    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 + '&regionlimit=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()
Exemple #2
0
 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()
Exemple #3
0
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()