Utility library for Advent of Code (https://adventofcode.com)
Find a file
2022-12-04 14:05:59 +01:00
aocutil Initialize aocutils 2022-12-04 13:50:57 +01:00
tests Initialize aocutils 2022-12-04 13:50:57 +01:00
.gitignore Initialize aocutils 2022-12-04 13:50:57 +01:00
poetry.lock Initialize aocutils 2022-12-04 13:50:57 +01:00
pyproject.toml Initialize aocutils 2022-12-04 13:50:57 +01:00
README.md Add installation section 2022-12-04 14:05:59 +01:00

AoC Utils

This small library can be used for the yearly Advent of Code (https://adventofcode.com) challenge. It automates the retrieval of puzzle input and submission.

Installation

aocutil is published on PyPi and can be installed from there.

Usage

from aocutil import Aoc

# Initialize for year 2022, day 1 with session id 53616c746
#
# Everything here is optional. If left out year and day is determined
# from the current date -- be aware that your code is non-repeatable if year 
# and date is not specified.
# Session id is read from `${HOME}/.config/aocutil/session_id` if not specified.
aoc = Aoc(year=2022, day=1, session_id="53616c746")

# Retrieve input and split into list of lines
#
# You can also retrieve the content as a string with `aoc.input().read()`.
puzzle = aoc.input().lines()

# solve the puzzle (your implementation)
solution = solve(puzzle)

# Submit the solution for level 1
#
# If left out, the level is determined automatically by
# which level is not solved yet.
aoc.submit(solution, level=1)

Retrieving the Session ID

A user in Advent of Code submissions and input retrieval is determined by a session id stored in a cookie in the user's browser. For this library to work it needs a users session id. The session id can be found by opening your browsers developer tools and looking for a cookie named session.

You can either initialize Aoc with the token or store it in a file named ${HOME}/.config/aocutil/session_id. I would recommend the latter so you don't accidentially publish your session id. Note that everyone who gets hold of your session id can impersonate you.