master
E. Almqvist 4 years ago
parent daad3c4a06
commit 316b2c75f1
  1. 1
      2020/aoc/README.md
  2. 1
      2020/aoc/__init__.py
  3. 2
      2020/aoc/__main__.py
  4. 60
      2020/aoc/_api.py

@ -0,0 +1 @@
# Credit to https://github.com/alvesvaren/AoC-template

@ -0,0 +1 @@
from ._api import get_input

@ -0,0 +1,2 @@
import aoc

@ -0,0 +1,60 @@
import requests
from pathlib import Path
from datetime import datetime
_SESSION_FILE_NAME = "session.txt"
_YEAR_FILE_NAME = "year.txt"
def _set_read_file(filename: str, default: str = None) -> str:
try:
with open(filename) as file:
return file.read()
except FileNotFoundError:
if default:
with open(filename, "w") as file:
file.write(default)
return default
return None
SESSION = _set_read_file(_SESSION_FILE_NAME)
if not SESSION:
SESSION = _set_read_file(
_SESSION_FILE_NAME,
input("Enter your session cookie: "))
YEAR = _set_read_file(_YEAR_FILE_NAME)
if not YEAR:
YEAR = _set_read_file(
_YEAR_FILE_NAME,
str(datetime.now().year))
def get_input(day: int, year: int = YEAR, overwrite: bool = False):
"""
Usage:
```python
import aoc
data_rows = aoc.get_input(5).splitlines()
```python
"""
Path("data").mkdir(exist_ok=True)
file_name = f"data/{year}_{day}.txt"
data = _set_read_file(file_name)
if overwrite:
data = None
if not data:
response = requests.get(
f"https://adventofcode.com/{year}/day/{day}/input",
cookies={"session": SESSION})
if not response.ok:
if response.status_code == 404:
raise FileNotFoundError(response.text)
raise RuntimeError(f"Request failed, code: {response.status_code}, message: {response.content}")
data = _set_read_file(
file_name,
response.text[:-1])
return data
Loading…
Cancel
Save