You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

176 lines
5.1 KiB

1 month ago
# from time import time
# from types import new_class
# from pandas.io import parsers
# import xlrd
# import os
# import shutil
# import re
# import sys
# import json
# import numpy as np
from pandas import DataFrame;
import pandas as pd
import analyze.AnalyzeFuc as anlyze
from common.CommonFuc import DateToTime
from parsers.BillParser import BillParser
from parsers.BdcParser import BdcParser
from parsers.BdcCliParser import BdcCliParser
TA_PATH = "./ta/"
import datetime
Bill_Log_Path = "./log/bill/"
Bdc_Log_Path = "./log/bdcSvr/"
BdcCli_Log_Path = "./log/bdcCli/"
def ParserAllLog(args):
ParserBillLog(args)
ParserBdcLog(args)
ParserBdcCliLog(args)
#解析bill
#@date 分析日期
#@day 天数
def ParserBillLog(args):
date = args[0]
day = int(args[1]) if len(args) == 2 else 1
starTime = datetime.datetime.strptime(date, '%Y-%m-%d')
for i in range(0, day):
delta = datetime.timedelta(days=i)
curtime = starTime + delta
parser = BillParser(curtime, Bill_Log_Path)
parser.Parsers()
#解析bdc
#@date 分析日期
#@day 天数
def ParserBdcLog(args):
date = args[0]
day = int(args[1]) if len(args) == 2 else 1
starTime = datetime.datetime.strptime(date, '%Y-%m-%d')
for i in range(0, day):
delta = datetime.timedelta(days=i)
curtime = starTime + delta
parser = BdcParser(curtime, Bdc_Log_Path)
parser.Parsers()
#解析bdcCli
#@date 分析日期
#@day 天数
def ParserBdcCliLog(args):
date = args[0]
day = int(args[1]) if len(args) == 2 else 1
starTime = datetime.datetime.strptime(date, '%Y-%m-%d')
for i in range(0, day):
delta = datetime.timedelta(days=i)
curtime = starTime + delta
parser = BdcCliParser(curtime, BdcCli_Log_Path)
parser.Parsers()
def MainlineFinishOnline(args):
date = args[0]
day = int(args[1]) if len(args) == 2 else 1
mainlandData = anlyze.CalcMainlineFinishOnline(date, day)
mainlandData.to_csv(f"./out/MainlineFinishOnline_{date}_{day}.csv", index=False)
def MainlandStateOnline(args):
date = args[0]
day = int(args[1]) if len(args) >= 2 else 1
svrver_id = int(args[2]) if len(args) >= 3 else 0
mainlandData = anlyze.CalcMainlandStateOnline(date, day, svrver_id)
mainlandData.to_csv(f"./out/MainlandStateOnline_{date}_{day}_{svrver_id}.csv", index=False)
def PlayerBillData(args):
uid = int(args[0])
billtype = int(args[1])
date = args[2]
day = int(args[3]) if len(args) == 4 else 1
data = anlyze.CalcPlayerBillData(uid, billtype, date, day)
data.to_csv(f"./out/{uid}_{billtype.name}_{date}_{day}.csv", index=False)
def HangupTime(args):
date = args[0]
day = int(args[1]) if len(args) == 2 else 1
data1, data2 = anlyze.CalcHangupTime(date, day)
def CalcPlayerStayUIData():
starTime = DateToTime("2021-10-03")
players = pd.read_csv("./csv/付费礼包.csv")
list = []
for i in range(0, len(players)):
player = players.iloc[i]
endTtime = datetime.datetime.strptime(player["事件时间"], "%Y/%m/%d %H:%M")
_data = anlyze.CalcPlayerStayUI(player["账户ID"], starTime, endTtime)
list.append(_data)
#players["mainland"] = players.apply(lambda x : anlyze.GetPlayerMaxMainland(x["账户ID"], x["事件时间"]), axis=1)
#players.to_csv(f"./out/付费礼包.csv", index=False)
data = pd.concat(list)
data.to_csv(f"./out/玩家停留界面.csv", index=False)
CMD_MAP = {}
def Register(cmd:str, helpStr:str, func):
one = {
"cmd" : cmd,
"help": helpStr,
"func":func
}
CMD_MAP[cmd] = one
def Help(args):
print("Help--------------------------------------------------------------------Star\n")
for value in CMD_MAP.values():
cmd = value["cmd"]
help = value["help"]
print(f"{cmd}\t\t\t\t-----{help}\n")
print("Help--------------------------------------------------------------------End\n")
#end Help
def RegisterAll():
Register("ParserAllLog", "解析所有日志 {date} {day}", ParserAllLog)
Register("ParserBillLog", "解析billlog ParserBillLog {date} {day}", ParserBillLog)
Register("ParserBdcLog", "解析bdclog ParserBdcLog {date} {day}", ParserBdcLog)
Register("ParserBdcCliLog", "解析bdcClilog ParserBdcCliLog {date} {day}", ParserBdcCliLog)
Register("PlayerBillData", "拉取玩家bill日志 PlayerBillData {uid} {billtype} {date} day", PlayerBillData)
Register("MainlandStateOnline", "计算玩家在线时长 MainlandStateOnline {date} {day} {server_id}", MainlandStateOnline)
Register("help", "帮助", Help)
#end RegisterAll
if __name__ == "__main__":
#CalcPlayerStayUIData()
#anlyze.CalcHangupTime("2021-10-03", 1)
RegisterAll()
while True:
argsStr = input("输入指令:")
args = argsStr.split(" ")
if len(args) == 0:
print("输入为空")
continue
cmd = args[0]
if cmd == "quit":
break
if cmd in CMD_MAP.keys():
one = CMD_MAP[cmd]
one["func"](args[1:])
else:
print("没有该命令.....")