# -*- coding: utf-8 -*- import os import json import time import logging import win32api import win32con VERSION = "1.7.1.0" BUILD_VERSION = 3 RES = {2: '油', 3: '弹', 4: '钢', 9: '铝', 10141: "航母核心", 10241: '战列核心', 10341: '巡洋核心', 10441: '驱逐核心', 10541: '潜艇核心', 141: '快速建造', 241: '建造蓝图', 541: '快速修理', 741: '装备蓝图', 66641: '损管'} HEADER = {'Accept-Encoding': 'identity', 'Connection': 'Keep-Alive', 'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 5.1.1; mi max Build/LMY48Z)'} UPDATE_URL = "http://update.protector.moe/pc/version.json" DOWNLOAD_URL = "https://github.com/ProtectorMoe/pc-protector-moe/releases/latest" class G: def __init__(self): self.repair_time_limit = 0 self.all_log = 0 g = G() class InitData: def __init__(self): self.init_out_data = False self.init_version = None self.init_data = dict() self.ship_cid = dict() self.ship_cid_wu = dict() self.error_code = dict() self.error_code_1 = dict() self.handbook_id = dict() self.new_init_version = None self.ship_equipmnt = {} self.res_url = "" def read_init(self): if not os.path.exists('data'): os.mkdir('data') if os.path.exists('data/init.json'): with open('data/init.json', 'r') as f: data = f.read() self.init_data = json.loads(data) #对比数据版本默认设置低版本 self.init_version = '20180927142352' if "DataVersion" in self.init_data: self.init_version = self.init_data["DataVersion"] if "res_url" in self.init_data: self.res_url = self.init_data["res_url"] # 领导船只cid数据 for each_ship in self.init_data['shipCard']: self.ship_cid[each_ship['cid']] = each_ship # 普通船只cid数据 for each_ship in self.init_data['shipCardWu']: self.ship_cid_wu[each_ship['cid']] = each_ship # 错误代码 self.error_code_1 = self.init_data['errorCode'] for code, message in self.error_code_1.items(): self.error_code[int(code)] = message # 图鉴代号 for each_ship in self.init_data['shipCard']: if 'shipIndex' in each_ship: self.handbook_id[each_ship['cid']] = each_ship['shipIndex'] # 装备属性 for equipment in self.init_data['shipEquipmnt']: self.ship_equipmnt[equipment["cid"]] = equipment class Logger: def __init__(self, clevel=logging.DEBUG, flevel=logging.DEBUG): self.windows = None times = time.strftime("%m-%d-%H-%M-%S", time.localtime()) path = 'log/' + times + '.log' self.path = path if not os.path.exists('log'): os.mkdir('log') with open(path, 'w') as f: f.write('') self.logger = logging.getLogger('Main') self.logger.setLevel(logging.DEBUG) fmt = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S') # 设置CMD日志 sh = logging.StreamHandler() sh.setFormatter(fmt) sh.setLevel(clevel) # 设置文件日志 fh = logging.FileHandler(path) fh.setFormatter(fmt) fh.setLevel(flevel) self.logger.addHandler(sh) self.logger.addHandler(fh) def debug(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.debug(" ".join(arg)) def info(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.info(" ".join(arg)) def war(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.warning(" ".join(arg)) def error(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.error(" ".join(arg)) def cri(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.critical(" ".join(arg)) def d(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.debug(" ".join(arg)) def i(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.info(" ".join(arg)) def w(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.warning(" ".join(arg)) def e(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.error(" ".join(arg)) def c(self, *kwargs): arg = [str(x) for x in kwargs] self.logger.critical(" ".join(arg)) @staticmethod def get_desktop(): key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', 0, win32con.KEY_READ) return win32api.RegQueryValueEx(key, 'Desktop')[0] def get_log(self): try: with open(self.path, 'r') as f: with open(self.get_desktop() + "/护萌宝·Re{}.log".format( time.strftime("%m-%d-%H-%M-%S", time.localtime())), 'w') as f2: f2.write(f.read()) except Exception as e: log.e("导出日志错误", e) log = Logger(logging.DEBUG, logging.DEBUG) init_data = InitData()