From 6fed8ed75ea09708cee5ef94bbd08302b29bbf60 Mon Sep 17 00:00:00 2001 From: Bigsk Date: Sat, 7 Nov 2020 17:42:03 +0800 Subject: [PATCH] Fixed many bugs and improved 'SearchFile' function :) --- main.py | 109 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 46 deletions(-) diff --git a/main.py b/main.py index da5b9c9..bc9dba0 100644 --- a/main.py +++ b/main.py @@ -3,20 +3,19 @@ import os,requests,json,time,sys,psutil,string,platform,glob,getpass,shutil,hash #------------------# class MultiThreadDownload(threading.Thread): - '''class for Multi-Thread Download''' + '''The Class for Multi-Thread Download''' + '''Get from Internet and improved by Ghink Network Studio''' def __init__(self,url,startpos,endpos,f): super(MultiThreadDownload,self).__init__() self.url = url self.startpos = startpos self.endpos = endpos self.fd = f - def download(self): headers = {"Range":"bytes=%s-%s"%(self.startpos,self.endpos)} res = requests.get(self.url,headers=headers) self.fd.seek(self.startpos) self.fd.write(res.content) - def run(self): self.download() @@ -27,30 +26,31 @@ class GMCLCore(object): self.__Version=Version ''' def __init__(self,LauncherName="GMCLCore",LauncherVersion="A0.2.0"): + '''The global variable set function''' + ''':LauncherName The name of your launcher,default value is "GMCLCore".''' + ''':LauncherVersion The version of your launcher,default value is the version of core.''' self.__LauncherName=LauncherName self.__LauncherVersion=LauncherVersion self.__UserAgent={'User-Agent':LauncherName+'/'+LauncherVersion+' ((GMCL Core Alpha 0.2.0;Alpha))'} - def GetAuthWay(self,AuthWay): - if(AuthWay=="offline"): - self.__AuthWay="offline" - elif(AuthWay=="online"): - self.__AuthWay="online" - else: - return "Error:Wrong Auth Way." - def GetAccount(self,Account="Steve"): - if(self.__AuthWay=="online"): - if(Account.count("@")==1): - self.OnlineAuth(Account,self._Password) + def SearchFile(self,Path,Tag,Num=1): + '''The function which was used to search files''' + ''':Path The root path you want to search''' + ''':Tag The name keyword of the file you want to search''' + ''':Num How much result you want to get,you should set as "all" if you want to return all result,the default value is 1''' + List=[] + i=0 + for root,dirs,files in os.walk(Path,topdown=True): + if Tag in files: + i+=1 + List.append(root+'\\'+Tag) + if(i==Num): + break else: - return "Error:Wrong Account." - elif(self.__AuthWay=="offline"): - if(Account.count("@")==1): - return "Error:Wrong Account." - else: - self.OfflineAuth(Account) - else: - pass + pass + return List def GetUUID(self,Account="Steve"): + '''The function which was used to generate UUID''' + ''':Account Your account,the default value is "Steve"''' if(self.__AuthWay=="offline"): result="OfflinePlayer:"+Account md5=hashlib.md5() @@ -58,34 +58,48 @@ class GMCLCore(object): return md5.hexdigest() else: return "Error:Wrong Auth Way." - def OnlineAuth(self,Account,Password): - if(json.loads(requests.get("https://authserver.mojang.com/",headers=self.__UserAgent).text)['status']=="OK"): - result=json.loads(requests.post("https://authserver.mojang.com/authenticate",'{"agent":{"name":"Minecraft","Version":1},"username":"'+Account+'","password":"'+Password+'"}',headers=self.__UserAgent).text) - self.__Token=result['accessToken'] - self.__UUID=result['selectedProfile']['id'] - self.__ID=result['selectedProfile']['name'] - else: - return "Error:Fail to request Mojang\'s Auth Server." - def OfflineAuth(self,Account="Steve"): - self.__ID=Account - self.__UUID=self.GetUUID(Account) - self.__Token="" def GetJavaPath(self,Num=1): + '''The function which was used to search java''' + ''':Num How much result you want to get,you should set as "all" if you want to return all result,the default value is 1''' if(platform.system()=="Windows"): - path="C:/" + return self.SearchFile('C:\\','javaw.exe',Num) elif(platform.system()=="Linux"): - path="/" + return self.SearchFile('\\','java',Num) else: - path="/" - i=0 - for ipath in os.listdir(Path): - FullDir=os.path.join(path,ipath) - if(os.path.isfile(FullDir)): - if("javaw.exe" in os.path.split(FullDir)[1]): - return FullDir - i+=1 - if(i==Num): - break + return self.SearchFile('\\','java',Num) + def SetAccount(self,Account="Steve",Password=""): + '''The function which was used to set game account data''' + ''':Account Your account,the default value is "Steve"''' + ''':Password Your password''' + if(self.__AuthWay=="online"): + if(Account.count("@")==1): + if(json.loads(requests.get("https://authserver.mojang.com/",headers=self.__UserAgent).text)['status']=="OK"): + result=json.loads(requests.post("https://authserver.mojang.com/authenticate",'{"agent":{"name":"Minecraft","Version":1},"username":"'+Account+'","password":"'+Password+'"}',headers=self.__UserAgent).text) + self.__Token=result['accessToken'] + self.__UUID=result['selectedProfile']['id'] + self.__ID=result['selectedProfile']['name'] + else: + return "Error:Fail to request Mojang\'s Auth Server." + else: + return "Error:Wrong Account." + elif(self.__AuthWay=="offline"): + if(Account.count("@")==1): + return "Error:Wrong Account." + else: + self.__ID=Account + self.__UUID=self.GetUUID(Account) + self.__Token="" + else: + pass + def SetAuthWay(self,AuthWay): + '''The auth way set function''' + ''':AuthWay Your auth way,must be "offline" or "online"''' + if(AuthWay=="offline"): + self.__AuthWay="offline" + elif(AuthWay=="online"): + self.__AuthWay="online" + else: + return "Error:Wrong Auth Way." def SetRecomMem(self): if(platform.system()=="Windows"): path="C:/" @@ -149,3 +163,6 @@ class GMCLCore(object): for i in mtd_list: i.join() + +launcher=GMCLCore() +print(launcher.GetJavaPath(2)) \ No newline at end of file