def deviceid_to_devicetype(self, date_str):
     # 863064037545227,HUAWEI_HUAWEI_MLA-AL10,1,0
     # {device_id : {device-type:device-type,web_response:web_response,game_connect:game_connect}}
     result_map = dict()
     today = DateList.DateList().get_today()
     if today == date_str:
         log_path = ConfParameters.ConfParameters(
         ).log_conf['stat_log_path'] + 'event.log'
     else:
         log_path = ConfParameters.ConfParameters(
         ).log_conf['stat_log_path'] + 'event.log.' + date_str
     cmd = 'grep \'context:0_\' ' + log_path + '|grep \'chanel:' + self.channel + '\'|awk -F \',\' \'{OFS=\":\";print $4,$5,$8}\'|awk -F \':\' \'{device[$4]=$6;enter[$4]=1;if($2==\"0_gameConnect_\"){pass[$4]=1};} END {OFS=\",\";for(i in device)print i,device[i],enter[i],pass[i]==\"\"?0:1}\''
     print cmd
     val = os.popen(cmd).readlines()
     for line in val:
         line = line.strip()
         array = line.split(',')
         deviceid = str(array[0])
         device_type = str(array[1])
         entered = int(array[2])
         passed = int(array[3])
         key = deviceid  # _ is not acceptable for there may be '_' in device type
         if key not in result_map.keys():
             result_map[key] = dict()
             result_map[key]['device_type'] = device_type
             result_map[key]['entered'] = entered
             result_map[key]['passed'] = passed
     return result_map
 def run_date_list(self):
     date_list = DateList.DateList().get_date_list(self.start_date,
                                                   self.end_date)
     sheet_name = self.start_date + '_' + self.end_date
     sheet = self.wbk.add_sheet(unicode(sheet_name), cell_overwrite_ok=True)
     xls_writer = EasyXls.EasyXls()
     head_line = [
         '设备类型', '新增设备数', '通过启动加载项设备数', '开启新手引导设备数', '通过新手引导设备数',
         '启动加载项通过率', '新手引导通过率'
     ]
     line_num = [0]
     xls_writer.insert_xls(head_line, sheet, line_num)
     total_result = dict()
     device_list = list()
     for date in date_list:
         tmp_map = self.join_maps(date)
         for device in tmp_map.keys():
             if device not in device_list:
                 device_list.append(device)
             if device not in total_result.keys():
                 total_result[device] = dict()
             total_result[device][
                 'web_resp'] = total_result[device].setdefault(
                     'web_resp', 0) + tmp_map[device]['web_resp']
             total_result[device][
                 'game_conn'] = total_result[device].setdefault(
                     'game_conn', 0) + tmp_map[device]['game_conn']
             total_result[
                 device]['guide'] = total_result[device].setdefault(
                     'guide', 0) + tmp_map[device]['guide']
             total_result[device][
                 'pass_guide'] = total_result[device].setdefault(
                     'pass_guide', 0) + tmp_map[device]['pass_guide']
     device_list = sorted(device_list,
                          key=lambda x: -1 * total_result[x]['web_resp'])
     for device in device_list:
         web_resp = total_result[device].setdefault('web_resp', 0)
         game_conn = total_result[device].setdefault('game_conn', 0)
         guide = total_result[device].setdefault('guide', 0)
         pass_guide = total_result[device].setdefault('pass_guide', 0)
         rate1 = 0
         rate2 = 0
         if web_resp > 0:
             rate1 = str(int(1000 * game_conn / web_resp) / 10.0) + '%'
         if guide > 0:
             rate2 = str(int(1000 * pass_guide / guide) / 10.0) + '%'
         data_list = [
             device, web_resp, game_conn, guide, pass_guide, rate1, rate2
         ]
         xls_writer.insert_xls(data_list, sheet, line_num)
Beispiel #3
0
 def load_top_map(self):
     # grep -h -s 'ASW_KO' /data/stat/Log_common/msworld*_*|awk -F ',' '{OFS=",";if($6<=32)print $6,$4}'
     # grep -h -s 'ASW_CHAMPION' /data/stat/Log_common/msworld*_*|awk -F ',' '{OFS=",";print 1,$4}'
     data_map = self.top_map
     # {uid:{rank:rank,world_type:world_type}}
     date_list = DateList.DateList().get_date_list(self.start_date,
                                                   self.end_date)
     file_str = ''
     for date in date_list:
         file_name = ' ' + self.world_path.replace('$dateString$', date)
         file_str += file_name
     # others
     # cmd = 'grep -h -s \'ASW_KO\'' + file_str + '|awk -F \',\' \'{OFS=\",\";if($6<=32)print $4,$2,$6}\''
     cmd = 'grep -h -s \'ASW_KO\'' + file_str + '|awk -F \',\' \'{OFS=\",\";print $4,$2,$6}\''
     print cmd
     val = os.popen(cmd).readlines()
     for line in val:
         line = line.strip()
         array = line.split(',')
         uid = array[0]
         world_type = array[1]
         rank = array[2]
         if uid not in data_map.keys():
             data_map[uid] = dict()
             data_map[uid]['world_type'] = world_type
             data_map[uid]['rank'] = rank
     # champion
     cmd = 'grep -h -s \'ASW_CHAMPION\'' + file_str + '|awk -F \',\' \'{OFS=\",\";print $4,$2,1}\''
     print cmd
     val = os.popen(cmd).readlines()
     for line in val:
         line = line.strip()
         array = line.split(',')
         uid = array[0]
         world_type = array[1]
         rank = array[2]
         if uid not in data_map.keys():
             data_map[uid] = dict()
             data_map[uid]['world_type'] = world_type
             data_map[uid]['rank'] = rank
     return data_map
Beispiel #4
0
 def __init__(self):
     # environment
     self.conf_path = ConfParameters.ConfParameters().conf_path
     # initialize
     # # mysql
     mysql_para = ConfParameters.ConfParameters().mysql_conf
     self.db = MySQLdb.connect(mysql_para['ip'], mysql_para['users'],
                               mysql_para['password'],
                               mysql_para['stat_pay'])
     self.cursor = self.db.cursor()
     self.easy_mysql = EasyMysql.EasyMysql()
     # # xls
     self.wbk = xlwt.Workbook()
     self.xls_writer = EasyXls.EasyXls()
     self.style = xlwt.XFStyle()
     self.style.borders = self.xls_writer.borders
     # # others
     self.easy_date = DateList.DateList()
     # local
     self.cycle = 7
     vip_file_name = self.conf_path + 'Vip_Money.txt'
     self.vip_dict = self.__get_vip_table(vip_file_name)
Beispiel #5
0
 def top_shop_buy(self):
     data_map = self.top_map
     # {uid:{world:world,rank:rank,item1:count1,item2:count2...}}
     if len(data_map) == 0:
         print 'No top map exist, please load first'
         return
     date_list = DateList.DateList().get_date_list(self.start_date,
                                                   self.end_date)
     file_str = ''
     for date in date_list:
         file_name = ' ' + self.log_path.replace('$dateString$', date)
         file_str += file_name
     cmd = 'grep -h -s \',AddProp,\' ' + file_str + '|awk -F \',\' \'{OFS=\",\";if($15==80)print $3,$16,$17}\'|awk -F \',\' \'{sum[$1\",\"$2]=sum[$1\",\"$2]+$3} END {OFS=\",\";for(i in sum)print i,sum[i]}\''
     print cmd
     val = os.popen(cmd).readlines()
     for line in val:
         line = line.strip()
         array = line.split(',')
         uid = array[0]
         item = array[1]
         count = array[2]
         if uid in data_map.keys():
             data_map[uid][item] = count
     return data_map
Beispiel #6
0
# @Desc  :

import util.EasyMysql as EasyMysql
from is_valid_data import is_legal_input
import util.DateList as DateList
import sys

X_list = [
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
    21, 22, 23, 24, 25
]
try:
    date1 = sys.argv[1]
    date2 = sys.argv[2]
except:
    [date1, date2] = DateList.DateList().get_last_week()
    msg = 'No date input detected, compute the last week automatically. Computing date between ' + date1 + ' and ' + date2
    print(msg)
Y_list = DateList.DateList().get_date_list(date1, date2)
X_listtrans = map(lambda x: 'VIP' + str(x), X_list)
Y_listtrans = Y_list
X_first = ['trans']
X_first_trans = ['翻译']
X_list = X_first + X_list
X_listtrans = X_first_trans + X_listtrans
X_trans = dict(zip(X_list, X_listtrans))
Y_trans = dict(zip(Y_list, Y_listtrans))
default_value = ''


def everyday_active(input_dict, *flag):
Beispiel #7
0
        self.wbk.save(file_name)
        self.db.close()

    def execute(self, date_list, item_list_old, item_list_new, item_trans_old,
                item_trans_new, headname):
        res_dict_list_old = self.re_resultold(date_list, item_list_old,
                                              item_trans_old, headname)
        res_dict_list_new = self.re_resultnew(date_list, item_list_new,
                                              item_trans_new, headname)
        self.run_xls(date_list, res_dict_list_old, res_dict_list_new)


if __name__ == '__main__':
    # date_list_one = ["2018-11-01","2018-11-02"]
    # date_list_one = ["2018-11-01","2018-11-07"]
    date_list_one = DateList.DateList().get_date_list("2018-11-01",
                                                      "2018-11-07")
    item_list_old = [17, 20, 21, 24]
    item_trans_old = ['初级科技选择箱', '高级航母科技随机包', '15导弹选择箱', '15战舰30碎片选择箱']
    item_list_new = [14, 15, 16, 19, 22, 23]
    item_trans_new = [
        '001碎片', '051C碎片', '001碎片', '高级航母科技随机包', '052C碎片', '爱宕碎片'
    ]
    welfareobj = WelfareBuy()
    welfareobj.execute(date_list_one, item_list_old, item_list_new,
                       item_trans_old, item_trans_new, '1101-1107')
    # date_list_one = ["2018-10-15", "2018-10-22"]
    date_list_one = DateList.DateList().get_date_list("2018-10-15",
                                                      "2018-10-22")
    welfareobj.execute(date_list_one, item_list_new, item_list_new,
                       item_trans_new, item_trans_new, '1015-1022')