diff --git a/mcUp.py b/mcUp.py new file mode 100755 index 0000000..ae9d2c0 --- /dev/null +++ b/mcUp.py @@ -0,0 +1,36 @@ +#!/bin/python +# Setup Parser +import parsers.paperMC +import argparse +parser = argparse.ArgumentParser(description='A command-line tool to update a Minecraft Server.') +parser.add_argument('api', metavar='api', help='which API to use') +parser.add_argument('project', metavar='project', help='which project to query for') +parser.add_argument('action', metavar='action', help='what action to execute') +parser.add_argument('subAction', metavar='subAction', help='what sub action to execute') +args = parser.parse_args() +print("mcUp.py, written by Caleb Fontenot") + +# PaperMC command functions +def paperMC(project, action, subAction): + if action == "get": + if subAction == "versions": + print(parsers.paperMC.getVersions(project)) + elif subAction == "latest": + latestVersion = parsers.paperMC.getLatest(project) + buildNumber = parsers.paperMC.getBuildNumber(project, latestVersion) + print("Latest version of "+project+" is "+latestVersion+" build #"+str(buildNumber[-1])) + elif action == "download": + + + + + +#print(type(getVersionVelocity)) + +#print("Latest build of velocity is", parsers.paperMC.getLatest#("velocity")) + +# Determine which API to use: +if args.api == "paperMC": + paperMC(args.project, args.action, args.subAction) +else: + print("Error: Unknown API: "+args.api) \ No newline at end of file diff --git a/parsers/__pycache__/paperMC.cpython-310.pyc b/parsers/__pycache__/paperMC.cpython-310.pyc new file mode 100644 index 0000000..8b975d7 Binary files /dev/null and b/parsers/__pycache__/paperMC.cpython-310.pyc differ diff --git a/parsers/paperMC.py b/parsers/paperMC.py new file mode 100644 index 0000000..1a6d241 --- /dev/null +++ b/parsers/paperMC.py @@ -0,0 +1,38 @@ +import requests +debug = False +if debug == True: + import logging + from requests import api + logging.basicConfig() + logging.getLogger().setLevel(logging.DEBUG) + requests_log = logging.getLogger("requests.packages.urllib3") + requests_log.setLevel(logging.DEBUG) + requests_log.propagate = True +timeoutTime = 1 +base_api_url = "https://papermc.io/api/v2" +# This function returns the versions from a project from the Paper API. +def getVersions(project): + print("Accessing "+base_api_url+"/projects/"+project+"...") + response = requests.get(base_api_url+"/projects/"+project, timeout=timeoutTime) + print("Status Code is: "+str(response.status_code)) + api_response = response.json() + return api_response['versions'] + +def getLatest(project): + versions = getVersions(project) + return versions[-1] + +def getBuildNumber(project, version): + response = requests.get(base_api_url+"/projects/"+project+"/versions/"+version, timeout=timeoutTime) + print("Status Code is: "+str(response.status_code)) + api_response = response.json() + return api_response['builds'] + +def getJarName(project, version): + + +def downloadVersion(project, version): + jarName = getJarName(project, version) + buildID = getBuildNumber(project, version) + response = requests.get(base_api_url+"/projects/"+project+"/versions/"+version+"/builds/"+buildID+"/downloads/"+jarName, timeout=timeoutTime) +