def start(split_date): """ 获取并拆分一天的日志 """ LOCAL_LOG_PATH_NAME_LST,OUT_PUT_PATH_LST=get_parse_path(split_date) for log_path in LOCAL_LOG_PATH_NAME_LST.keys(): try: item_name_config_dict,laji=get_item_config_with_id_name() url_path = LOCAL_LOG_PATH_NAME_LST[log_path].format(cur_date=split_date) url = open(url_path,'r') output_path=OUT_PUT_PATH_LST[log_path].format(cur_date=split_date,use_path='user_get_log') if not os.path.exists(output_path): os.makedirs(output_path) for i in os.listdir(output_path): os.remove(output_path+i) if url: log_lines = url.readlines() datetime.datetime.now() print 'readlines done',len(log_lines) for _log_line in log_lines: _log_line = _log_line.strip() log_dict = log_parse(_log_line) result=_user_get_log(log_dict) # print len(result) if result: temp='' item_str='' sum_str='' for result_key in result: if result_key in get_item_save_dict.keys(): if result_key=='add_item_list': z=0 while z < len(result['add_item_list']): if result['add_item_list'][z+1] != 0 : item_str+=item_name_config_dict[int(result['add_item_list'][z])] +',' sum_str+=str(result['add_item_list'][z+1])+',' z+=2 else: if int(result[result_key]) !=0 : item_str += get_item_save_dict[result_key] +',' sum_str+=str(result[result_key])+',' sum_str=sum_str.rstrip(',') item_str=item_str.rstrip(',') if item_str != '': temp+=str([str(result['log_time']),result['uid'],item_str,sum_str,EVENT_LOG_ACTION_DICT[result['action']]])+'\n' output_file_path=open(output_path+str(result['uid']),'a+') output_file_path.write(temp) output_file_path.flush() #pickle.dump(temp,output_file_path) output_file_path.close() except Exception,e: print datetime.datetime.now(), str('all_action_split'), " Error:", e, "\n" print 'work done',datetime.datetime.now(),log_path
def start(split_date): # dat_lst = [] # item_name_lst,laji = get_item_config_with_id_name() # union_reward_dict = {} # # # split_date = datetime.datetime.strptime("2015-06-05", "%Y-%m-%d").date() # # if args: # # split_date = args # # else: # # split_date = datetime.date.today() - datetime.timedelta(days = 1) # for i in get_union_reward_config(): # if i['itemId']<>0: # union_reward_dict[i['itemId']] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} # elif i['equipmentId']<> 0: # union_reward_dict[i['equipmentId']] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} # else: # union_reward_dict['gold'] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} # union_reward_dict['stone'] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} # union_reward_dict['free_drop'] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} LOCAL_LOG_PATH_NAME_LST, OUT_PUT_PATH_LST = get_parse_path(split_date) for log_path in OUT_PUT_PATH_LST.values(): try: if os.path.exists( log_path.format(cur_date=split_date, use_path='all_action')): os.chmod( log_path.format(cur_date=split_date, use_path='all_action'), stat.S_IRWXG + stat.S_IRWXO + stat.S_IRWXU) dat_lst = [] item_name_lst, laji = get_item_config_with_id_name() union_reward_dict = {} # split_date = datetime.datetime.strptime("2015-06-05", "%Y-%m-%d").date() # if args: # split_date = args # else: # split_date = datetime.date.today() - datetime.timedelta(days = 1) for i in get_union_reward_config(): if i['itemId'] <> 0: union_reward_dict[i['itemId']] = { 'price': 0, 'reward': 0, 'buy_rate': 0, 'times': 0, 'name': '' } elif i['equipmentId'] <> 0: union_reward_dict[i['equipmentId']] = { 'price': 0, 'reward': 0, 'buy_rate': 0, 'times': 0, 'name': '' } else: union_reward_dict['gold'] = { 'price': 0, 'reward': 0, 'buy_rate': 0, 'times': 0, 'name': '' } union_reward_dict['stone'] = { 'price': 0, 'reward': 0, 'buy_rate': 0, 'times': 0, 'name': '' } union_reward_dict['free_drop'] = { 'price': 0, 'reward': 0, 'buy_rate': 0, 'times': 0, 'name': '' } buy_times_count = 0 # union_buy_reward_filepath = log_path+"%s/all_action/%s"%(split_date,'EVENT_ACTION_UNION_BUY_REWARD') union_buy_reward_filepath = log_path.format( cur_date=split_date, use_path='all_action') + 'EVENT_ACTION_UNION_BUY_REWARD' f = open(union_buy_reward_filepath, 'r') pick_load = pickle.load(f) for i in pick_load: # print i if len(i['add_item_list']) <> 0: union_reward_dict[i['add_item_list'][0]]['price'] += i[ 'cost_union_point'] union_reward_dict[i['add_item_list'][0]][ 'reward'] += i['add_item_list'][1] union_reward_dict[i['add_item_list'][0]]['times'] += 1 elif len(i['add_equip_list']) <> 0: union_reward_dict[i['add_equip_list'][0]][ 'price'] += i['cost_union_point'] union_reward_dict[i['add_equip_list'][0]][ 'reward'] += i['add_equip_list'][1] union_reward_dict[i['add_equip_list'][0]]['times'] += 1 else: if i['add_gold'] <> 0: union_reward_dict['gold']['price'] += i[ 'cost_union_point'] union_reward_dict['gold']['reward'] += i[ 'add_gold'] union_reward_dict['gold']['times'] += 1 if i['add_stone'] <> 0: union_reward_dict['stone']['price'] += i[ 'cost_union_point'] union_reward_dict['stone']['reward'] += i[ 'add_stone'] union_reward_dict['stone']['times'] += 1 if i['add_free_draw'] <> 0: union_reward_dict['free_drop']['price'] += i[ 'cost_union_point'] union_reward_dict['free_drop']['reward'] += i[ 'add_free_draw'] union_reward_dict['free_drop']['times'] += 1 buy_times_count += 1 for i in union_reward_dict.keys(): if type(i) == int: union_reward_dict[i]['name'] = item_name_lst[i] if 'gold' == i: union_reward_dict[i]['name'] = u'金币' if 'stone' == i: union_reward_dict[i]['name'] = u'钻石' if 'free_drop' == i: union_reward_dict[i]['name'] = u'精灵球' try: #print union_reward_dict[i]['times'],buy_times_count union_reward_dict[i]['buy_rate'] = str( round( float(union_reward_dict[i]['times']) / float(buy_times_count) * 10000) / 100) + '%' except: union_reward_dict[i]['buy_rate'] = '0%' #print union_reward_dict for i in union_reward_dict.values(): dat_lst.append([ i['name'], i['times'], i['buy_rate'], i['price'], i['reward'] ]) # OUT_PUT_FILE_PATH=log_path+"%s/tables/UNION_BUY_REWARD"%(split_date) OUT_PUT_FILE_PATH = log_path.format( cur_date=split_date, use_path='tables') + 'UNION_BUY_REWARD' f = open(OUT_PUT_FILE_PATH, 'w') pickle.dump(dat_lst, f) except Exception, e: print datetime.datetime.now(), str('aaa'), " Error:", e, "\n"
def start(split_date): """ 获取并拆分一天的日志 """ LOCAL_LOG_PATH_NAME_LST, OUT_PUT_PATH_LST = get_parse_path(split_date) for log_path in LOCAL_LOG_PATH_NAME_LST.keys(): try: item_name_config_dict, laji = get_item_config_with_id_name() url_path = LOCAL_LOG_PATH_NAME_LST[log_path].format( cur_date=split_date) url = open(url_path, 'r') output_path = OUT_PUT_PATH_LST[log_path].format( cur_date=split_date, use_path='user_get_log') if not os.path.exists(output_path): os.makedirs(output_path) for i in os.listdir(output_path): os.remove(output_path + i) if url: log_lines = url.readlines() datetime.datetime.now() print 'readlines done', len(log_lines) for _log_line in log_lines: _log_line = _log_line.strip() log_dict = log_parse(_log_line) result = _user_get_log(log_dict) # print len(result) if result: temp = '' item_str = '' sum_str = '' for result_key in result: if result_key in get_item_save_dict.keys(): if result_key == 'add_item_list': z = 0 while z < len(result['add_item_list']): if result['add_item_list'][z + 1] != 0: item_str += item_name_config_dict[ int(result['add_item_list'] [z])] + ',' sum_str += str( result['add_item_list'][ z + 1]) + ',' z += 2 else: if int(result[result_key]) != 0: item_str += get_item_save_dict[ result_key] + ',' sum_str += str( result[result_key]) + ',' sum_str = sum_str.rstrip(',') item_str = item_str.rstrip(',') if item_str != '': temp += str([ str(result['log_time']), result['uid'], item_str, sum_str, EVENT_LOG_ACTION_DICT[result['action']] ]) + '\n' output_file_path = open( output_path + str(result['uid']), 'a+') output_file_path.write(temp) output_file_path.flush() #pickle.dump(temp,output_file_path) output_file_path.close() except Exception, e: print datetime.datetime.now(), str( 'all_action_split'), " Error:", e, "\n" print 'work done', datetime.datetime.now(), log_path
# -*- coding:utf-8 -*- import pickle import datetime import sys import os import stat from action.parse_action import log_parse from util.game_define import EVENT_LOG_ACTION_DICT from config.game_config import get_item_config_with_id_name from util.logs_out_path_of_parse import get_parse_path item_name_dict, laji = get_item_config_with_id_name() cost_item_save_dict = { 'cost_gold': '金币', 'cost_stone': '钻石', 'cost_free_draw': '精灵球', 'cost_gym_point': '道馆币', 'cost_consumption_point': '消费积分', 'cost_arena_emblem': '纹章', 'cost_world_boss_point': '战魂', 'cost_universal_fragment': '万能碎片', 'cost_union_point': '联盟币', } """对可消费的物品消费纪录进行统计 统计项包括“钻石、金币、精灵球、道馆币、消费积分、纹章、战魂、万能碎片”,共8项 输出结果为“日期、角色名、使用时间、物品名称、数量” """ # OUT_PUT_PATH = "/zgame/FeiLiuLogParse/data/" # LOG_SERVER_PATH = "/zgame/FeiLiuLogs/PIKA_pc_event_%s/PIKA_pc_event_%s_00000" # #LOG_SERVER_PATH = "/zgame/HaiMaLogs/PIKA_pc_event_%s/PIKA_pc_event_%s_00000"
def start(split_date): # dat_lst = [] # item_name_lst,laji = get_item_config_with_id_name() # union_reward_dict = {} # # # split_date = datetime.datetime.strptime("2015-06-05", "%Y-%m-%d").date() # # if args: # # split_date = args # # else: # # split_date = datetime.date.today() - datetime.timedelta(days = 1) # for i in get_union_reward_config(): # if i['itemId']<>0: # union_reward_dict[i['itemId']] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} # elif i['equipmentId']<> 0: # union_reward_dict[i['equipmentId']] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} # else: # union_reward_dict['gold'] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} # union_reward_dict['stone'] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} # union_reward_dict['free_drop'] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} LOCAL_LOG_PATH_NAME_LST,OUT_PUT_PATH_LST=get_parse_path(split_date) for log_path in OUT_PUT_PATH_LST.values(): try: if os.path.exists(log_path.format(cur_date=split_date,use_path = 'all_action')): os.chmod(log_path.format(cur_date=split_date,use_path = 'all_action'), stat.S_IRWXG + stat.S_IRWXO + stat.S_IRWXU) dat_lst = [] item_name_lst,laji = get_item_config_with_id_name() union_reward_dict = {} # split_date = datetime.datetime.strptime("2015-06-05", "%Y-%m-%d").date() # if args: # split_date = args # else: # split_date = datetime.date.today() - datetime.timedelta(days = 1) for i in get_union_reward_config(): if i['itemId']<>0: union_reward_dict[i['itemId']] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} elif i['equipmentId']<> 0: union_reward_dict[i['equipmentId']] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} else: union_reward_dict['gold'] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} union_reward_dict['stone'] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} union_reward_dict['free_drop'] = {'price':0,'reward':0,'buy_rate':0,'times':0,'name':''} buy_times_count = 0 # union_buy_reward_filepath = log_path+"%s/all_action/%s"%(split_date,'EVENT_ACTION_UNION_BUY_REWARD') union_buy_reward_filepath = log_path.format(cur_date=split_date,use_path='all_action')+'EVENT_ACTION_UNION_BUY_REWARD' f = open(union_buy_reward_filepath,'r') pick_load = pickle.load(f) for i in pick_load: # print i if len(i['add_item_list'])<>0: union_reward_dict[i['add_item_list'][0]]['price']+=i['cost_union_point'] union_reward_dict[i['add_item_list'][0]]['reward']+=i['add_item_list'][1] union_reward_dict[i['add_item_list'][0]]['times']+=1 elif len(i['add_equip_list'])<> 0: union_reward_dict[i['add_equip_list'][0]]['price']+=i['cost_union_point'] union_reward_dict[i['add_equip_list'][0]]['reward']+=i['add_equip_list'][1] union_reward_dict[i['add_equip_list'][0]]['times']+=1 else: if i['add_gold']<>0: union_reward_dict['gold']['price']+=i['cost_union_point'] union_reward_dict['gold']['reward']+=i['add_gold'] union_reward_dict['gold']['times']+=1 if i['add_stone']<>0: union_reward_dict['stone']['price']+=i['cost_union_point'] union_reward_dict['stone']['reward']+=i['add_stone'] union_reward_dict['stone']['times']+=1 if i['add_free_draw']<>0: union_reward_dict['free_drop']['price']+=i['cost_union_point'] union_reward_dict['free_drop']['reward']+=i['add_free_draw'] union_reward_dict['free_drop']['times']+=1 buy_times_count+=1 for i in union_reward_dict.keys(): if type(i)==int: union_reward_dict[i]['name']=item_name_lst[i] if 'gold'== i : union_reward_dict[i]['name']=u'金币' if 'stone'==i: union_reward_dict[i]['name']=u'钻石' if 'free_drop'==i: union_reward_dict[i]['name']=u'精灵球' try: #print union_reward_dict[i]['times'],buy_times_count union_reward_dict[i]['buy_rate']=str(round(float(union_reward_dict[i]['times'])/float(buy_times_count)*10000)/100)+'%' except: union_reward_dict[i]['buy_rate'] ='0%' #print union_reward_dict for i in union_reward_dict.values(): dat_lst.append([i['name'],i['times'],i['buy_rate'],i['price'],i['reward']]) # OUT_PUT_FILE_PATH=log_path+"%s/tables/UNION_BUY_REWARD"%(split_date) OUT_PUT_FILE_PATH=log_path.format(cur_date=split_date,use_path='tables')+'UNION_BUY_REWARD' f=open(OUT_PUT_FILE_PATH,'w') pickle.dump(dat_lst,f) except Exception,e: print datetime.datetime.now(), str('aaa'), " Error:", e, "\n"
# -*- coding:utf-8 -*- import pickle import datetime import sys import os import stat from action.parse_action import log_parse from util.game_define import EVENT_LOG_ACTION_DICT from config.game_config import get_item_config_with_id_name from util.logs_out_path_of_parse import get_parse_path item_name_dict,laji=get_item_config_with_id_name() cost_item_save_dict={ 'cost_gold':'金币', 'cost_stone':'钻石', 'cost_free_draw':'精灵球', 'cost_gym_point':'道馆币', 'cost_consumption_point':'消费积分', 'cost_arena_emblem':'纹章', 'cost_world_boss_point':'战魂', 'cost_universal_fragment':'万能碎片', 'cost_union_point':'联盟币', } """对可消费的物品消费纪录进行统计 统计项包括“钻石、金币、精灵球、道馆币、消费积分、纹章、战魂、万能碎片”,共8项 输出结果为“日期、角色名、使用时间、物品名称、数量” """