AoC Input fetch tool (Rust) (github.com)
from ericjmorey@programming.dev to rust@programming.dev on 05 Dec 2023 04:25
https://programming.dev/post/6819399

cross-posted from: lemmy.world/post/9117180

If you’re writing Advent of Code solutions in Rust, then I’ve written a crate that can fetch the user input data directly from the main website.

Long story short, you provide it a login token copied from your browser cookies, and it can fetch the input data by year and day. Inputs are cached locally, so it’ll only download it once for a given problem. This was heavily inspired by the PyPi advent-of-code-data package.

Unlike other AoC-centric Rust crates, that’s all it does. The other crates I’ve seen all want the code structured in a specific way to add timing benchmarks, unit testing, and other features. I wanted something lightweight where you just call a function to get the input; no more and no less.

To use the crate:

  • Follow the AoCD instructions to set the AOC_SESSION environment variable.
    This key is used for authentication and should not be shared with anyone.
  • Add the aocfetch crate to your Cargo.toml [dependencies] section:
    aocfetch = { git = “https://github.com/ooterness/AdventOfCode.git” }
  • Import the crate and call aocfetch::get_data(year, day) to fetch your input data.

An example:

use aocfetch;

fn main() {
    let input = aocfetch::get_data(2023, 1).unwrap();
    println!("My input data: {}", input);
    println!("Part 1 solution: 42");    // TODO
    println!("Part 2 solution: 42");    // TODO
}

If this goes well I will submit it to crates.io, but I wanted to open this up for beta-testing first.

#rust

threaded - newest

tehbilly@le.ptr.is on 06 Dec 2023 13:59 collapse

Giving this a try today! Just wanted to point out that it should be aocfetch = { git = “https://github.com/ooterness/AdventOfCode.git” }, swapping path for git.

ericjmorey@programming.dev on 06 Dec 2023 14:49 collapse