minecraft-plugin-proxy/minecraft-plugin-proxy.py
2025-02-18 10:44:46 -05:00

46 lines
1.4 KiB
Python

'''
A proxy built on FastAPI to find the most recent version of a Minecraft plugin.
'''
import requests
from fastapi import FastAPI
from fastapi.responses import RedirectResponse
from xml.etree import ElementTree as ET
api = FastAPI()
@api.get('/viabackwards/velocity')
@api.head('/viabackwards/velocity')
async def viabackwards_velocity():
latest_release = requests.get(
'https://hangar.papermc.io/api/v1/projects/ViaVersion/ViaBackwards/latestrelease'
).text.strip()
return RedirectResponse(
f'https://hangar.papermc.io/api/v1/projects/ViaVersion/ViaBackwards/versions/{latest_release}/Velocity/download'
)
@api.get('/luckperms/{server_type}')
@api.head('/luckperms/{server_type}')
async def luckperms_velocity(server_type):
luckperms_metadata = requests.get('https://metadata.luckperms.net/data/all').json()
return RedirectResponse(
luckperms_metadata['downloads'][server_type]
)
@api.get('/tribufu-velocityrcon')
@api.head('/tribufu-velocityrcon')
async def tribufu_velocityrcon():
velocityrcon_metadata = requests.get('https://mvn.tribufu.com/releases/com/tribufu/Tribufu-VelocityRcon/maven-metadata.xml').text
root = ET.fromstring(velocityrcon_metadata)
version = root.find('.//versioning/latest').text
return RedirectResponse(
f'https://mvn.tribufu.com/releases/com/tribufu/Tribufu-VelocityRcon/{version}/Tribufu-VelocityRcon-{version}.jar'
)