#!/usr/bin/python """ Copyright 2011, Dipesh Amin Copyright 2011, Stefan Beller tradey, a package, which implements an Automated Market Bot for "The Mana World" a 2D MMORPG. """ import logging import socket import sys import time import string import utils import locale class SaleStat: pass ItemDB = utils.ItemDB() def main(): in_file = sys.argv[1] out_file = sys.argv[2] locale.setlocale(locale.LC_ALL, '') out_obj = open(out_file, 'w') in_obj = open(in_file, 'r') out_obj.write(' \n \ \n \ ManaMarket Statistics \n \ \n \ \n \ \n \

ManaMarket Statistics

\n \ \n \ \n \ \n \ \n \ \n \ \n \ \n \ \n \ \n \ \n \ \n \ \n \ \n \ \n ') sales = in_obj.readlines() sale_dict = {} # Put sales date into a dict. sale_total = 0 for line in sales: line = line.split() item_id = int(line[0]) name = ItemDB.getItem(int(line[0])).name amount = int(line[1]) price = int(line[2]) t_time = float(line[3]) sale_total += int(line[2]) if item_id not in sale_dict: sale_dict[item_id] = [] sale_dict[item_id].append([amount, price, t_time]) str_list = [] # calculate the stats for item in sale_dict: average_week = 0 average_week_amount = 0 average_month = 0 average_month_amount = 0 average_all_time = 0 average_all_time_amount = 0 min_price = 0 max_price = 0 last_sold = 0 for n in range(len(sale_dict[item])): #out_obj.write('') if min_price > sale_dict[item][n][1]/sale_dict[item][n][0] or min_price == 0: min_price = sale_dict[item][n][1]/sale_dict[item][n][0] if max_price < sale_dict[item][n][1]/sale_dict[item][n][0] or max_price == 0: max_price = sale_dict[item][n][1]/sale_dict[item][n][0] if last_sold < sale_dict[item][n][2] or last_sold == 0: last_sold = sale_dict[item][n][2] if (time.time()-sale_dict[item][n][2]) < 7*24*60*60: average_week_amount += sale_dict[item][n][0] average_week += sale_dict[item][n][1] if (time.time()-sale_dict[item][n][2]) < 30*24*60*60: average_month_amount += sale_dict[item][n][0] average_month += sale_dict[item][n][1] average_all_time_amount += sale_dict[item][n][0] average_all_time += sale_dict[item][n][1] average_all_time /= average_all_time_amount if average_week_amount > 0: average_week /= average_week_amount if average_month_amount > 0: average_month /= average_month_amount str_list.append([average_all_time_amount,''+''+ \ ''+''+''+ ''+''+'']) while len(str_list) > 0: pos = 0 max_amount = 0 for m in range(len(str_list)): if max_amount < str_list[m][0] or max_amount == 0: max_amount = str_list[m][0] pos = m out_obj.write('') out_obj.write(str_list[pos][1]) str_list.pop(pos) out_obj.write(' \n') out_obj.write('
Item Name Total Amount SoldPriceLast Sold
MinMaxAverage (Week)Average (Month)Average (Overall)
'+ItemDB.getItem(item).name+''+locale.format("%d", average_all_time_amount, grouping=True)+''+ locale.format("%d", min_price, grouping=True) +''+ locale.format("%d", max_price, grouping=True) +''+ \ locale.format("%d", average_week, grouping=True) +''+ locale.format("%d", average_month, grouping=True) + \ ''+ locale.format("%d", average_all_time, grouping=True)+''+ time.asctime(time.gmtime(last_sold)) +'
\n') out_obj.write('
Total sales: '+str(sale_total)+' GP
') out_obj.write('Updated: '+time.asctime(time.gmtime())+'
') out_obj.write('For a detailed page showing all sales '+'click here') out_obj.write(' \n') in_obj.close() out_obj.close() if __name__ == '__main__': main()