#!/usr/bin/python
|
# -*- coding: utf-8 -*-
|
|
import CommFunc
|
import ConfigParser
|
import logging
|
import mylog
|
import json
|
import os
|
from unrar import rarfile
|
|
cfg = ConfigParser.ConfigParser()
|
cfg.read("../../InterfaceConfig.php")
|
# 需要处理的流向名及顺序列表
|
DRNameList = ["LogInOut"]
|
|
argvDict = {"spID": "hyyngame",
|
"eventType": "ImportBakDailyActive",
|
"queryCenterbak": 1,
|
"allServer": 1,
|
"startDate": "2024-05-01",
|
}
|
|
|
def queryAccountLoginoutInfo(argvDict):
|
logging.info("queryAccountLoginoutInfo %s" % str(argvDict))
|
|
startDate = argvDict.get("startDate", "")
|
endDate = argvDict.get("endDate", "")
|
spID = argvDict.get("spID", "")
|
# 查询中心备份的
|
# {"日期":{"AccID":[loginTime, logoutTime, IP], ...}, ...}
|
loginoutDateAccIDInfo = {}
|
if not CommFunc.loopCenterbakRarDR(cfg, startDate, endDate, argvDict, checkDrFileNeedParseFunc, parseLineFunc,
|
loginoutDateAccIDInfo, drNameList=DRNameList, logloop=1, printloop=1):
|
return
|
|
logging.info("query all data OK")
|
logging.info("%s" % loginoutDateAccIDInfo)
|
|
content = json.dumps(loginoutDateAccIDInfo, ensure_ascii=False, default=lambda obj: obj.__dict__)
|
with open('BakDailyActive.json', 'w') as file:
|
file.write(content) # 将内容写入文件
|
print "save ok"
|
logging.info("save ok")
|
return
|
|
|
def checkDrFileNeedParseFunc(drFileName, *parseArgs, **kv):
|
''' 检查流向是否需要处理
|
@param drFileName: 流向文件名 xxx_日期.txt
|
@param *parseArgs: 自定义参数
|
@return: isNeed, checkNeedParseRetInfo
|
'''
|
return True, None
|
|
|
def parseLineFunc(drName, dateStr, checkNeedParseRetInfo, line, *parseArgs, **kv):
|
''' 解析流向行内容
|
@param drName: 流向名
|
@param dateStr: 对应日期字符串
|
@param checkNeedParseRetInfo: checkDrFileNeedParseFunc 返回的内容
|
@param line: 本行内容
|
@param *parseArgs: 自定义参数
|
'''
|
|
loginoutDateAccIDInfo = parseArgs[0]
|
# 统计登录
|
if drName == "LogInOut":
|
if "127.0.0.1" in line:
|
#loginfo(" 脱机登录,不处理")
|
return
|
|
drDict = eval(line)
|
accID = drDict["AccID"]
|
|
if dateStr not in loginoutDateAccIDInfo:
|
loginoutDateAccIDInfo[dateStr] = {}
|
accIDDict = loginoutDateAccIDInfo[dateStr]
|
if accID not in accIDDict:
|
accIDDict[accID] = ["", "", ""]
|
loginoutList = accIDDict[accID]
|
|
if drDict["Type"] == "login":
|
loginoutList[0] = drDict["LoginTime"]
|
else:
|
loginoutList[1] = drDict["LogoutTime"]
|
loginoutList[2] = drDict["IP"]
|
|
return
|
|
|
def main():
|
CommFunc.setdefaultencoding()
|
mylog.InitMyLog(argvDict.get("eventType", ""))
|
queryAccountLoginoutInfo(argvDict)
|
return
|
|
|
if __name__ == "__main__":
|
try:
|
main()
|
except:
|
CommFunc.printExceptionError()
|
os.system('pause')
|