Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- config_file = '/etc/minecraft.conf'
- manifest_url = 'https://launchermeta.mojang.com/mc/game/version_manifest.json'
- import configparser, os, os.path, zipfile, io, json, sys
- import requests
- cparser = configparser.ConfigParser()
- with open(config_file) as f:
- # ConfigParser needs INI-style config with at least one section
- cparser.read_string('[a]\n' + f.read())
- mc_dir = cparser['a']['srvdir']
- build_type = cparser['a']['build_type']
- mc_jar = os.path.join(mc_dir, 'server.jar')
- with zipfile.ZipFile(mc_jar) as z:
- with z.open('version.json') as f:
- mc_ver_local = json.load(io.TextIOWrapper(f, 'utf-8'))['id']
- all_manifest = requests.get(manifest_url).json()
- mc_ver_remote = all_manifest['latest'][build_type]
- if mc_ver_local != mc_ver_remote:
- print('upgrade from', mc_ver_local, 'to', mc_ver_remote)
- new_manifest_url = [x['url'] for x in all_manifest['versions'] if x['id'] == mc_ver_remote][0]
- new_manifest = requests.get(new_manifest_url).json()
- download_url = new_manifest['downloads']['server']['url']
- download_file = os.path.join('versions', mc_ver_remote + '.jar')
- download_file_full = os.path.join(mc_dir, download_file)
- resp = requests.get(download_url, stream=True)
- if resp.ok:
- with open(download_file_full, 'wb') as f:
- for chunk in resp.iter_content(None):
- f.write(chunk)
- mc_jar_new = os.path.join(mc_dir, 'server.jar.new')
- os.symlink(download_file, mc_jar_new)
- os.rename(mc_jar_new, mc_jar)
- else:
- print('download failed:', resp.status_code, file=sys.stderr)
- exit(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement