rayhern / TheAnimalFarmAutoGardener

This is an auto gardener written for the gardening game on https://theanimal.farm. Python3.
MIT License
3 stars 2 forks source link

Log progress #2

Open AdoNunes opened 2 years ago

AdoNunes commented 2 years ago

Great repo!

I customized it to keep a log of the gardening stats as shown in the function below. Let me know and I can push a PR if you are interested.

def get_garden_data(garden, max_tries=1):
    for _ in range(max_tries):
        try:
            seed_count = garden.get_user_seeds(garden.address)
            plant_count = garden.get_my_plants()
            seeds_per_plant = garden.get_seeds_per_plant()
            if seed_count >= seeds_per_plant:
                new_plants = seed_count // seeds_per_plant
            else:
                new_plants = 0
            unclaimed_lp = decimal_round(garden.get_user_lp(seed_count), 4)
            drip_busd_lp = garden.get_drip_busd_lp_price()
            unclaimed_worth = drip_busd_lp["price"] * unclaimed_lp
            #####         
            drip_busd_price = float(drip_busd_lp['price'])
            balance = round(garden.get_contract_balance()/1000000000000000000)
            plant_lp = float(garden.calculate_seed_sell(seeds_per_plant))*.95            
            plant_price = drip_busd_price * plant_lp
            seeds_per_day = (plant_count * 24*60*60)
            plant_per_day = (seeds_per_day / seeds_per_plant)
            day_lp =   plant_lp * plant_per_day
            day_price = day_lp * drip_busd_price
            break
        except:
            logging.debug(traceback.format_exc())
            return {}
    return {
        'seeds': seed_count,
        'plants': plant_count,
        'seeds_per_plant': seeds_per_plant,
        'new_plants': new_plants,
        'unclaimed_lp': unclaimed_lp,
        'unclaimed_worth': unclaimed_worth,
        'drip_busd': drip_busd_lp,
        'drip_price': drip_busd_lp['drip_price'],
        'balance': balance,
        'date': datetime.datetime.now().strftime("%m/%d/%Y-%H:%M:%S"),
        'drip_busd_price': drip_busd_price,
        'plant_lp': plant_lp,
        'plant_price': plant_price,
        'plant_per_day': plant_per_day,
        'day_lp': day_lp,
        'day_price': day_price
    }

def save_log(get_garden_data_dict):
    fname = 'garden_log.csv'
    if not os.path.exists(fname):
        cols = ['date', "plants", "daily LP", "daily income","drip-usd price", 'price plant', 'LP plant', "seeds plant", 'drip price', 'contract balance']
        with open(fname, 'w') as fp:
            log_info = ','.join(cols )+ '\n'
            fp.write(log_info)

    keys = ['date', 'plants', 'day_lp', 'day_price', 'drip_busd_price', 'plant_price', 'plant_lp', 'seeds_per_plant', 'drip_price', 'balance']
    vals = [f'{get_garden_data_dict[k]}' for k in keys]
    with open(fname, 'a') as fp:
        fp.write(','.join(vals)+'\n')
rayhern commented 2 years ago

Thanks!