import requests import json import sys from os.path import exists def login(username, password): print("> Login for user "+username) payload = {'username': username, 'password': password, 'api_version':'4'} headers = {'content-type': 'application/json'} r = requests.post("https://auth.factorio.com/api-login", data=payload) return r.json()["token"] def downloadRelease(releaseInfo, username, token): downloadURL = "https://mods.factorio.com"+releaseInfo["download_url"]+"?username="+username+"&token="+token r = requests.get(downloadURL) with open(releaseInfo["file_name"], "wb") as f: f.write(r.content) def checkReleaseExistsOnHDD(releaseInfo): file_exists = exists(releaseInfo["file_name"]) return file_exists def getReleaseInfo(name, version): print("> Get Release Info") r = requests.get('https://mods.factorio.com/api/mods/'+name) data = r.json() if version == "latest": return data["releases"][-1] for r in data["releases"]: if r["version"] == version: return r sys.exit(200) r = getReleaseInfo(sys.argv[1], sys.argv[2]) if checkReleaseExistsOnHDD(r) == False: token = login(sys.argv[3], sys.argv[4]) downloadRelease(r, sys.argv[3], token)