Example #1
0
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
Example #2
0
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"
Example #3
0
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
Example #4
0
# -*- 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"
Example #6
0
# -*- 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项
    输出结果为“日期、角色名、使用时间、物品名称、数量”
"""