import requests import os import time import json print('[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Starting the synchronizing system.') #------------------------------------------------------------------------# print('------------------------------------------------------------------------') #Part Of Load All Kinds Of Global Variables From Json File. print('[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Starting to specify global variables from json file.') configopen=open("synchronize/config.json", mode='r') configjson = configopen.read() configopen.close() config = json.loads(configjson) SystemName=config['systemname'] SavePath='synchronize/' + config['savepath'] Version=config['version'] UserAgent={'User-Agent':config['useragent']} 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.') #------------------------------------------------------------------------# print('------------------------------------------------------------------------') Log=Log + '------------------------------------------------------------------------' + '\n' #The Part Of All Kinds Of Functions. print('[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Starting to load all kinds of modules.') Log=Log + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Starting to load all kinds of modules.' + '\n' #Module Which Be Used To Print And Save Logs. def log(logvar): global Log print('[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + logvar) Log=Log + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + logvar + '\n' #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, headers=UserAgent)#Without Proxies 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 + '.') else: log('[INFO]:The file ' + SavePath + filepath + ' has been synchronized successfully.') #Module Which Be Used To Determine Whether The Dir Exists. def make_sure_dir_exists(dirpath): global Log if os.path.exists(SavePath + dirpath): log('[INFO]:The dir ' + SavePath + dirpath + ' has already existed.Nothing to do.') else: log('[INFO]:The dir ' + SavePath + dirpath + ' does not exist.The ' + SystemName + ' will create one.') os.makedirs(SavePath + dirpath) log('[INFO]:Loading all kinds of modules successfully.') #------------------------------------------------------------------------# print('------------------------------------------------------------------------') Log=Log + '------------------------------------------------------------------------' + '\n' #Save 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 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' #------------------------------------------------------------------------# print('------------------------------------------------------------------------') Log=Log + '------------------------------------------------------------------------' + '\n' #The Part of Determining Whether The Dir Exists. #Determining Whether The Log Dir Exists. log('[INFO]:Starting to determine whether the log dir exists.') dirpath='synchronize/' + config['logspath'] if os.path.exists(dirpath): log('[INFO]:The dir ' + dirpath + ' has already existed.Nothing to do.') else: log('[INFO]:The dir ' + dirpath + ' does not exist.The ' + SystemName + ' will create one.') os.makedirs(dirpath) log('[INFO]:Determining whether the log dir exists successfully.') log('[INFO]:Starting to determine whether all of dirs exists.') #Determining Whether The MC Versions Dir Exists. log('[INFO]:Starting to determine whether the MC versions dir exists.') make_sure_dir_exists('mojang/launchermeta/mc/game') log('[INFO]:Determining whether the MC versions dir exists successfully.') #Determining Whether The Liteloader Versions Dir Exists. 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.') log('[INFO]:Determining whether all of dirs exists successfully.') #------------------------------------------------------------------------# print('------------------------------------------------------------------------') Log=Log + '------------------------------------------------------------------------' + '\n' #The Part of Synchronizing Single Important Files. log('[INFO]:Starting to synchronize single files.') #Synchronizing The Minecraft Versions List File. log('[INFO]:Starting to synchronize MC versions files.') synchronize('http://launchermeta.mojang.com/mc/game/version_manifest.json', 'mojang/launchermeta/mc/game/version_manifest.json') log('[INFO]:Synchronizing MC versions files successfully.') #Synchronizing The Liteloader Versions List File. 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.') #------------------------------------------------------------------------# print('------------------------------------------------------------------------') Log=Log + '------------------------------------------------------------------------' + '\n' log('[INFO]:Starting to synchronize more files.') log('[WARN]:Attention!In the version new than 2.3.0,the synchronize tools will synchronize files in the background to improve the speed of synchronizing,that means you will not see the log output in the shell/cmd/powershell.If you want to see all logs and not care about the speed,you can download the old version on gitee,but we will not provide update for it.') #------------------------------------------------------------------------# print('------------------------------------------------------------------------') Log=Log + '------------------------------------------------------------------------' + '\n' #MC Versions Synchronizing Part. log('[INFO]:Starting synchronize all of MC versions.') #Part 1. log('[INFO]:Starting synchronize part 1.') log('[INFO]:Starting to synchronize files and dirs on https://launchermeta.mojang.com/.') os.popen('python synchronize/part1.py','r') time.sleep(5) #Part 2. log('[INFO]:Starting synchronize part 2.') log('[INFO]:Starting to synchronize files and dirs on https://libraries.minecraft.net/.') os.popen('python synchronize/part2.py','r') #------------------------------------------------------------------------# print('------------------------------------------------------------------------') Log=Log + '------------------------------------------------------------------------' + '\n' #Starting To Save Logs. log('[INFO]:Starting to save logs.') logwrite=open('synchronize/' + config['logspath'] + "main-" + str(time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + '.txt'),mode='w') logwrite.write(Log + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Save logs successfully.' + '\n' + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:All tasks of synchronizing have done successfully.') print('[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:Save logs successfully.' + '\n' + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]:All tasks of synchronizing have done successfully.') logwrite.close()