aocpy

Advent of Code Automation


License
MIT
Install
pip install aocpy==0.0.1

Documentation

aocpy - Advent of Code Automation Tool

PyPI version shields.io

Fetch input, submit answers and generate boilerplate files for solving Advent of Code puzzles 🎄

Installation

Install via pip: pip install aocpy

Usage

N.B Please see the Session Cookie Configuration section

Begin a Puzzle

begin fetches the puzzle input and generates boilerplate files with the following structure:

<day_number>/
  solution.py
  input.txt
# fetch input and generate boilerplate for today's challenge
$ aocpy begin

# fetch input and generate boilerplate for a specific puzzle
$ aocpy begin -y 2017 -d 15
$ aocpy begin -d 15 # uses current puzzle year

Submit Puzzle Answers

# submit answer for level 1 of today's puzzle
$ aocpy submit "myanswer" 1

# submit answer for level 2 of today's puzzle
$ aocpy submit "myanswer2" 2

# submit answer for level 1 of a specific puzzle
$ aocpy submit "myanswer" 1 -y 2017 -d 15

# submit answer for level 2 of a specific puzzle
$ aocpy submit "myanswer2" 2 -y 2017 -d 15

Running Solutions

The solution template files include a small CLI to read input files.

$ cd <puzzle_day_dir>

# Default - run with aocpy generated input.txt file
$ python solution.py

# Run with example_input.txt if present
$ python solution.py -e

# Run with specified input file
$ python solution.py /path/to/my/file.txt

Session Cookie Configuration

AoC puzzle inputs differ by user, requiring a browser cookie to determine the current user. aocpy requires this cookie and can be supplied in several ways:

  • CLI -c/--session-cookie option (supported by all commands):

    • $ aocpy begin -c <1234mycookie>
  • Configuration file:

    • Paste the cookie into a file at ~/.config/aocpy/token
    # ~/.config/aocpy/token
    <1234mycookie>
    
  • Environment variable:

    • $ export AOC_SESSION_COOKIE=<1234mycookie>

Finding Your Session Cookie

  1. Open Advent of Code in a web browser and log in
  2. Open the browser's developer console
  • i.e. Right click -> Inspect or F12
  1. Select the Network tab
  2. Navigate to any puzzle input page i.e. adventofcode.com/2018/day/1/input
  3. Click on the request that shows up in the Network tab
  4. The cookie will be in the Request Headers section with the format Cookie: session=<1234mycookie>