From 3186a86291df7a42a0e1ef04bad4cd5b94c48bcf Mon Sep 17 00:00:00 2001 From: Thibaud Date: Mon, 28 Jul 2025 09:56:51 +0200 Subject: [PATCH] [run.py] add get_input_file --- run.py | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/run.py b/run.py index 24ba9e0..c5dacc3 100644 --- a/run.py +++ b/run.py @@ -1,9 +1,32 @@ +import urllib.request +import getpass import sys import time import subprocess +import os from pathlib import Path +_auth = None + + +def get_auth(): + global _auth + if _auth is None: + if "AUTH" in os.environ: + _auth = os.environ["AUTH"] + else: + _auth = getpass.getpass(prompt="Cookie: ") + + +def get_input_file(year, day): + url = f"https://adventofcode.com/{year}/day/{day}/input" + r = urllib.request.Request(url) + r.add_header("Cookie", f"session={_auth}") + res = urllib.request.urlopen(r) + return res + + def main(year, day): if day is not None: path = Path(f"{year}/day{day}") @@ -13,8 +36,12 @@ def main(year, day): print(f"Invalid day {day}", file=sys.stderr) exit(1) if not input_path.exists(): - print(f"Could not find input file {input_path}", file=sys.stderr) - exit(1) + print(f"Downloading input file {input_path}") + get_auth() + with open(input_path, "wb") as f: + res = get_input_file(year, day) + f.write(res.read()) + run_day(script_path, input_path) else: for day in range(1, 26): @@ -23,8 +50,11 @@ def main(year, day): input_path = path / Path("input.txt") if script_path.exists(): if not input_path.exists(): - print(f"Could not find input file {input_path}, skipped day {day}.", file=sys.stderr) - continue + print(f"Downloading input file {input_path}") + get_auth() + with open(input_path, "wb") as f: + res = get_input_file(year, day) + f.write(res.read()) run_day(script_path, input_path)