56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
import os
|
|
import requests
|
|
|
|
def must_get_env(name):
|
|
v = os.getenv(name)
|
|
if not v:
|
|
raise Exception(f"missing environment variable '{name}'")
|
|
return v
|
|
|
|
|
|
PROJECT = must_get_env("PROJECT")
|
|
VERSION = must_get_env("VERSION")
|
|
NTFY_ADDRESS = must_get_env("NTFY_ADDRESS")
|
|
NTFY_TOKEN = must_get_env("NTFY_TOKEN")
|
|
|
|
|
|
def split_at(s, sep):
|
|
split = s.split(sep, 1)
|
|
split.extend([None, None][:2-len(split)])
|
|
return split
|
|
|
|
|
|
|
|
def main():
|
|
versions = requests.get(f"https://api.modrinth.com/v2/project/{PROJECT}/version").json()
|
|
|
|
(version, loader) = split_at(VERSION, '@')
|
|
|
|
v = find_version(versions, version, loader)
|
|
|
|
if v:
|
|
res = requests.put(
|
|
NTFY_ADDRESS,
|
|
headers={
|
|
"Authorization": f"Bearer {NTFY_TOKEN}",
|
|
"Title": f"{PROJECT} update available!",
|
|
},
|
|
data=f"Version {version} is now available for {PROJECT}!")
|
|
print(res)
|
|
|
|
pass
|
|
|
|
|
|
def find_version(versions, desired_version, loader):
|
|
for version in versions:
|
|
if desired_version not in version.get("game_versions"):
|
|
continue
|
|
if loader and loader not in version.get("loaders"):
|
|
continue
|
|
return version
|
|
return None
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|