From 55bf25ae0211e51f8cbca6543ca688946a8b47a8 Mon Sep 17 00:00:00 2001 From: Bigsk Date: Wed, 24 Jun 2020 22:40:47 +0800 Subject: [PATCH] =?UTF-8?q?update=20synchronize/synchronize.py.=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0UA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- synchronize/synchronize.py | 98 ++++++++++---------------------------- 1 file changed, 26 insertions(+), 72 deletions(-) diff --git a/synchronize/synchronize.py b/synchronize/synchronize.py index ea0e9f8..1ce3c58 100644 --- a/synchronize/synchronize.py +++ b/synchronize/synchronize.py @@ -12,6 +12,8 @@ print('------------------------------------------------------------------------' print('[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Starting to specify global variables.') SystemName='GeMC API Synchronize Tool' SavePath='gemcapi/' +Version='2.3.0' +UserAgent={'User-Agent':'GeMCAPI/2.3.0 (GeMC Sync Release 2.3.0;Release)'} Log='[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Starting the synchronizing system.\n' + '------------------------------------------------------------------------\n' + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Starting to specify global variables.\n' + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Specifying global variables successful.\n' print('[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Specifying global variables successful.') @@ -31,13 +33,14 @@ def log(logvar): #Module Which Be Used To Synchronize Single File. def synchronize(url, filepath): global Log + global UserAgent log('[INFO]:The ' + SystemName + ' is synchronizing the file ' + SavePath + filepath + '.') try: - synchronize=requests.get(url) + synchronize=requests.get(url, headers=UserAgent) with open(SavePath + filepath,"wb") as code: code.write(synchronize.content) except: - log('[ERROR]:There has a error in task of synchronizing the file ' + SavePath + filepath + '.Don\'t report this to Ghink Network Studio.This is not a bug.') + log('[ERROR]:There has a error in task of synchronizing the file ' + SavePath + filepath + '.') else: log('[INFO]:The file ' + SavePath + filepath + ' has been synchronized successfully.') #Module Which Be Used To Determine Whether The Dir Exists. @@ -48,32 +51,24 @@ def make_sure_dir_exists(dirpath): else: log('[INFO]:The dir ' + SavePath + dirpath + ' does not exist.The ' + SystemName + ' will create one.') os.makedirs(SavePath + dirpath) -#Module Which Be Used To Print Dividing Line. -def dividingline(): - global Log - print('------------------------------------------------------------------------') - Log=Log + '------------------------------------------------------------------------' + '\n' log('[INFO]:Loading all kinds of modules successfully.') #------------------------------------------------------------------------# -dividingline() +print('------------------------------------------------------------------------') +Log=Log + '------------------------------------------------------------------------' + '\n' #Save JSON In Global Variables -#Save MC Versions List Json In Global Variables log('[INFO]:Starting to get the json of MC versions list.') +Log=Log + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Starting to get the json of MC versions list.' + '\n' +#Save MC Versions List Json In Global Variables mcversionsjson=requests.get(url='http://launchermeta.mojang.com/mc/game/version_manifest.json') -log('[INFO]:Get the json of MC versions successfully.') -#Save Liteloader Versions List Json In Global Variables -log('[INFO]:Starting to get the json of Liteloader Versions list.') -liteloaderversionsjson=requests.get(url='http://dl.liteloader.com/versions/versions.json') -log('[INFO]:Get the json of Liteloader Versions successfully.') -#Save authlib-injector List Json In Global Variables -authlibinjectorbuildsjson=requests.get(url='http://authlib-injector.yushi.moe/index.json') -log('[INFO]:Get the json of authlib-injector successfully.') +log('[INFO]:Get json of MC versions successfully.') +Log=Log + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Get json of MC versions successfully.' + '\n' #------------------------------------------------------------------------# -dividingline() +print('------------------------------------------------------------------------') +Log=Log + '------------------------------------------------------------------------' + '\n' #The Part of Determining Whether The Dir Exists. @@ -95,14 +90,11 @@ log('[INFO]:Determining whether the MC versions dir exists successfully.') log('[INFO]:Starting to determine whether the Liteloader versions dir exists.') make_sure_dir_exists('liteloader/dl/versions') log('[INFO]:Determining whether the Liteloader versions dir exists successfully.') -#Determining Whether The authlib-injector Builds Dir Exists. -log('[INFO]:Starting to determine whether the authlib-injector builds dir exists.') -make_sure_dir_exists('yushi/authlib-injector/artifact') -log('[INFO]:Determining whether the authlib-injector builds dir exists successfully.') log('[INFO]:Determining whether all of dirs exists successfully.') #------------------------------------------------------------------------# -dividingline() +print('------------------------------------------------------------------------') +Log=Log + '------------------------------------------------------------------------' + '\n' #The Part of Synchronizing Single Files. @@ -115,51 +107,14 @@ log('[INFO]:Synchronizing MC versions files successfully.') log('[INFO]:Starting to synchronize Liteloader versions files.') synchronize('http://dl.liteloader.com/versions/versions.json', 'liteloader/dl/versions/versions.json') log('[INFO]:Synchronizing Liteloader versions files successfully.') -#Synchronizing The authlib-injector Builds List File. -log('[INFO]:Starting to synchronize authlib-injector builds files.') -synchronize('http://authlib-injector.yushi.moe/index.json', 'yushi/authlib-injector/index.json') -log('[INFO]:Synchronizing authlib-injector builds files successfully.') #------------------------------------------------------------------------# -dividingline() - -#authlib-injector Builds Synchronizing Part. -log('[INFO]:Starting to synchronize all of authlib-injector builds.') -log('[INFO]:Starting to synchronize the latest authlib-injector builds.') -synchronize('http://authlib-injector.yushi.moe/artifact/latest.json', 'yushi/authlib-injector/artifact/latest.json') -log('[INFO]:Synchronizing the latest authlib-injector builds successfully.') -log('[INFO]:Starting to synchronize the list of authlib-injector builds.') -synchronize('http://authlib-injector.yushi.moe/artifacts.json', 'yushi/authlib-injector/artifacts.json') -log('[INFO]:Synchronizing the list of authlib-injector builds successfully.') -log('[INFO]:Starting to get the list json of builds.') -try: - authlibinjectorbuildsjson=requests.get(url='https://authlib-injector.yushi.moe/artifacts.json') - authlibinjectorbuildstext=authlibinjectorbuildsjson.text -except: - log('[ERROR]:There has a error in task of synchronizing files in list json of builds.Don\'t report this to Ghink Network Studio.This is not a bug.') -else: - log('[INFO]:Get the list json of builds successfully.') -log('[INFO]:Starting to synchronize jsons of old builds.') -log('[INFO]:Starting to get list json of builds.') -authlibinjectorbuildstextjson = eval(authlibinjectorbuildstext, type('Dummy', (dict,), dict(__getitem__=lambda s,n:n))()) -authlibinjectorbuildsnumber=authlibinjectorbuildstextjson['latest_build_number'] -log('[INFO]:Geting list json of builds successfully.') -log('[INFO]:Starting to count how many authlib-injector builds in total.') -log('[INFO]:There has ' + str(authlibinjectorbuildsnumber) + ' authlib-injector builds in total .') -log('[INFO]:Counting how many how many authlib-injector builds in total successfully.') -log('[INFO]:Start to synchronize jsons of other builds.') -whiletimes=0#Set Var whiletimes To Avoid Error. -while(whiletimes < authlibinjectorbuildsnumber): - whiletimes=whiletimes + 1 - synchronize('http://authlib-injector.yushi.moe/artifact/' + str(whiletimes) + '.json', 'yushi/authlib-injector/artifact/' + str(whiletimes) + '.json') -log('[INFO]:Synchronizing jsons of other builds successfully.') - -#------------------------------------------------------------------------# -dividingline() +print('------------------------------------------------------------------------') +Log=Log + '------------------------------------------------------------------------' + '\n' #MC Versions Synchronizing Part. -log('[INFO]:Starting to synchronize all of MC versions.') +log('[INFO]:Starting synchronize all of MC versions.') log('[INFO]:Starting to count how many MC versions in total.') #Count How Many MC Versions in total. mcversionsjsontext=mcversionsjson.text @@ -198,18 +153,17 @@ while(whiletimes < mcversionsnumber): onlineurlwithouthttps=onlineurl.replace('https://', 'http://')#Avoid Https Connetion Errors log('[INFO]:Starting to get the json of MC libraries ' + onlineurl +' list.') #Save MC Libraries Json In Global Variables - try:#Avoid Http/Httos Connection Errors Making Whole Synchronize Stop. + try:#Avoid Http/Https Connection Errors Making Whole Synchronize Stop. mclibrariesjson=requests.get(url=onlineurlwithouthttps) except: - log('[ERROR]:There has a error in task of getting json of MC libraries ' + onlineurl + '.Don\'t report this to Ghink Network Studio.This is not a bug.') + log('[ERROR]:There has a error in task of getting json of MC libraries ' + onlineurl + '.') else: log('[INFO]:Get json of MC libraries ' + onlineurl + ' successfully.') #Read Json Of MC Libraries. mclibrariesload=json.loads(mclibrariesjson.text) #Synchronize Files In "downloads". log('[INFO]:Starting to synchronize files in ”downloads".') - try:#Avoid Http/Httos Connection Errors Or Synchronize Module Download Failed Errors Making Whole Synchronize Stop. - #Synchronize Files In "downloads". + try:#Avoid Http/Https Connection Errors Or Synchronize Module Download Failed Errors Making Whole Synchronize Stop. onlineurl2=mclibrariesload['downloads']['client']['url'] fileurl2='mojang/launcher/' + onlineurl2.replace('https://launcher.mojang.com/','') filetosync2=fileurl2[::-1].split('/', 1)[-1][::-1] @@ -237,7 +191,7 @@ while(whiletimes < mcversionsnumber): make_sure_dir_exists(filetosync2) synchronize(onlineurl2, fileurl2) except: - log('[ERROR]:There has a error in task of synchronizing files in "downloads" or "loggin".Don\'t report this to Ghink Network Studio.This is not a bug.') + log('[ERROR]:There has a error in task of synchronizing files in "downloads".') else: log('[INFO]:Synchronizing files in "downloads" successfully.') log('[INFO]:Starting to count how many MC libraries files in ' + onlineurl + ' in total.') @@ -253,7 +207,7 @@ while(whiletimes < mcversionsnumber): whiletimesload3=whiletimes3 - 1 #Synchronize Files In "libraries". log('[INFO]:Starting to synchronize Files In "libraries".') - try:#Avoid Http/Httos Connection Errors Or Synchronize Module Download Failed Errors Making Whole Synchronize Stop. + try:#Avoid Http/Https Connection Errors Or Synchronize Module Download Failed Errors Making Whole Synchronize Stop. #Synchronize Files In "libraries/.../downloads/artifact". onlineurl3=mclibrariesload['libraries'][whiletimesload3]['downloads']['artifact']['url'] onlineurlwithouthttps3=onlineurl3.replace('https://', 'http://') @@ -297,15 +251,15 @@ while(whiletimes < mcversionsnumber): make_sure_dir_exists(filetosync3) synchronize(onlineurlwithouthttps3, fileurl3) except: - log('[ERROR]:There has a error in task of synchronizing files in ”libraries".Don\'t report this to Ghink Network Studio.This is not a bug.') + log('[ERROR]:There has a error in task of synchronizing files in ”libraries".') else: log('[INFO]:Synchronizing files in "libraries" successfully.') log('[INFO]:Synchronizing files and dirs on https://libraries.minecraft.net/ successfully.') -log('[INFO]:Synchronizing all of MC Versions successfully.') #------------------------------------------------------------------------# -dividingline() +print('------------------------------------------------------------------------') +Log=Log + '------------------------------------------------------------------------' + '\n' #Starting To Save Logs. log('[INFO]:Starting to save logs.')