Files
nethackrc/upload.py
2025-10-07 08:39:41 -05:00

54 lines
1.5 KiB
Python

import argparse
from dotenv import load_dotenv
from jinja2 import Environment, FileSystemLoader
from pyquery import PyQuery as pq
import os
import requests
import sys
def render(filename, options={}):
env = Environment(loader=FileSystemLoader("."), trim_blocks=True, lstrip_blocks=True)
template = env.get_template(filename)
return template.render(options)
def upload(rcfile, variant):
load_dotenv()
s = requests.Session()
base_url = f"https://www.hardfought.org/nh/{variant}"
s.post(f"{base_url}/login.php", {
"username": os.getenv("HDF_USERNAME"),
"password": os.getenv("HDF_PASSWORD"),
"submit": "Login",
})
get_page = s.get(f"{base_url}/rcedit.php")
csrf_token = pq(get_page.content)('input[name="csrf_token"]').attr("value")
s.post(f"{base_url}/rcedit.php", {
"csrf_token": csrf_token,
"rctext": rcfile,
"submit": "Save+RC+File",
})
print(f"Uploaded variant {variant}")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("template")
parser.add_argument("-v", "--variant")
parser.add_argument("--nudist", "-n", action="store_true")
parser.add_argument("--pauper", "-p", action="store_true")
parser.add_argument("--nobones", action="store_true")
parser.add_argument("--nopet", action="store_true")
args = parser.parse_args()
rcfile = render(args.template, vars(args))
if args.variant:
upload(rcfile, args.variant)
else:
print(rcfile)