diff --git a/core.py b/core.py index 02077d4..7ee0594 100644 --- a/core.py +++ b/core.py @@ -22,10 +22,6 @@ class MultiThreadDownload(threading.Thread): class GMCLCore(object): '''The Main Class of the Launcher Core''' - ''' - self.__GamePath=GamePath - self.__Version=Version - ''' def __init__(self,LauncherName="GMCLCore",LauncherVersion="A0.2.0",LogOutput=False): '''The global variable set function''' ''':LauncherName The name of your launcher,the default value is "GMCLCore"''' @@ -36,6 +32,10 @@ class GMCLCore(object): self.__LogOutput=LogOutput self.__UserAgent={'User-Agent':LauncherName+'/'+LauncherVersion+' ((GMCL Core Alpha 0.2.0;Alpha))'} self.__Log=[] + self.__AuthWay="" + self.Log("info","Successful.","__init__") + def __del__(self): + self.Log("info","Successful.","__del__") def Log(self,Type,Text,Function="Anonymous Function",ErrorType="TypeError"): '''The function which was used to manager the log output system''' ''':Type Type of the log info''' @@ -60,6 +60,14 @@ class GMCLCore(object): else: self.__Log.append(("OTHER",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),Function,Text)) return ("OTHER",Text) + def ReturnLog(self): + '''The function which was used to return the list of program log''' + self.Log("info","Successful.","ReturnLog") + return self.__Log + def PrintLog(self): + '''The function which was used to print the list of program log''' + self.Log("info","Successful.","PrintLog") + print(self.__Log) def MakeDir(self,Path): '''The function which was used to create a dir with determination''' ''':Path The path of the dir you want to create''' @@ -121,12 +129,12 @@ class GMCLCore(object): self.__ID=result['selectedProfile']['name'] self.Log("info","Success.","GetAccount") else: - return Log("warn","Fail to request Mojang\'s auth server.","SetAccount") + return self.Log("warn","Fail to request Mojang\'s auth server.","SetAccount") else: - return Log("warn","Wrong Account.","SetAccount") + return self.Log("warn","Wrong Account.","SetAccount") elif(self.__AuthWay=="offline"): if(Account.count("@")==1): - return Log("warn","Wrong Account.","SetAccount") + return self.Log("warn","Wrong Account.","SetAccount") else: self.__ID=Account self.__UUID=self.GetUUID(Account) @@ -139,60 +147,66 @@ class GMCLCore(object): ''':AuthWay Your auth way,must be "offline" or "online"''' if(AuthWay=="offline"): self.__AuthWay="offline" + self.Log("info","Success.","SetAuthWay") elif(AuthWay=="online"): self.__AuthWay="online" + self.Log("info","Success.","SetAuthWay") else: - return "Error:Wrong Auth Way." + self.Log("warn","Wrong Auth Way.","SetAccount") def SetRecomMem(self): '''The recommendation memory value set function''' self.__Memory = float(psutil.virtual_memory().free / 1024 ** 3) * 0.8 + self.Log("info","Success.","SetRecomMem") def SetJavaPath(self,path): '''The java path set function''' ''':Path Your java path''' if(path==None): - return "Error:Wrong local address for java." + self.Log("warn","Wrong local address for java.","SetJavaPath") else: if(os.path.exists(path)): self.__JAVA=path + self.Log("info","Success.","SetJavaPath") else: - return "Error:Wrong local address for java." + self.Log("warn","Wrong local address for java.","SetJavaPath") def SetGameMem(self,Memory): '''The game memory value set function''' ''':Memory The memory of the game,the unit is GiBytes''' try: self.__Memory=float(Memory) + self.Log("info","Success.","SetGameMem") except: - return "Error:Wrong parameter for game memory." + self.Log("warn","Wrong parameter for game memory.","SetGameMem") def Download(self,DownloadFrom,DownloadTo,ThreadNum=3): '''The multi-thread download function''' ''':DownloadFrom The online url for the file''' ''':DownloadTo The local path for the file''' ''':ThreadNum The number of the thread,the default value is 3''' if(DownloadFrom=="" or DownloadTo==""): - return "Error:Wrong online address or local address for download." + self.Log("warn","Wrong online address or local address for download.","Download") else: - url = DownloadFrom - filename = DownloadTo - filesize = int(requests.head(url,headers=self.__UserAgent).headers['Content-Length']) - threadnum = ThreadNum + url=DownloadFrom + filename=DownloadTo + filesize=int(requests.head(url,headers=self.__UserAgent).headers['Content-Length']) + threadnum=ThreadNum threading.BoundedSemaphore(threadnum) - step = filesize // threadnum - mtd_list = [] - start = 0 - end = -1 - tempf = open(filename,'w') + step=filesize // threadnum + mtd_list=[] + start=0 + end=-1 + tempf=open(filename,'w') tempf.close() with open(filename,'rb+') as f: - fileno = f.fileno() + fileno=f.fileno() while end < filesize -1: - start = end +1 - end = start + step -1 + start=end +1 + end=start + step -1 if end > filesize: - end = filesize - dup = os.dup(fileno) - fd = os.fdopen(dup,'rb+',-1) - t = MultiThreadDownload(url,start,end,fd,self.__UserAgent) + end=filesize + dup=os.dup(fileno) + fd=os.fdopen(dup,'rb+',-1) + t=MultiThreadDownload(url,start,end,fd,self.__UserAgent) t.start() mtd_list.append(t) for i in mtd_list: - i.join() \ No newline at end of file + i.join() + self.Log("info","Success.","Download")