LogOutput Update
This commit is contained in:
parent
1c2851e36b
commit
ce21a4ce29
72
core.py
72
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()
|
||||
i.join()
|
||||
self.Log("info","Success.","Download")
|
||||
|
Reference in New Issue
Block a user