#!/bin/sh -e COOKIES="${HOME}/.adventofcode.json" YEAR=${YEAR:-$(date +%Y)} DAY=${DAY:-$(TZ=EST date '+%d')} DEC=$(echo "${DAY}" | sed 's/^0//') MODE="wget" # https://stackoverflow.com/q/21919156/how-do-i-copy-cookies-from-chrome SESSION=$(jq < "${COOKIES}" '."session-cookie"') concat() { local part for part in "$@"; do printf '%s' "${part}" done } authenticated_wget() { wget \ --server-response \ --header "Cookie: session=${SESSION}" \ "${@}" } if [ "${MODE}" = 'wget' ]; then cd "${YEAR}" cd 'rust' mkdir "day${DAY}" || : cd "day${DAY}" # https://stackoverflow.com/q/21919156/how-do-i-copy-cookies-from-chrome SESSION=$(jq < "${COOKIES}" '."session-cookie"' | tr -d '"') [ -e "input" ] || { mkdir 'input' authenticated_wget --output-document "input/page_${DEC}.html" \ "https://adventofcode.com/${YEAR}/day/${DEC}" SETTINGS=$(authenticated_wget --output-document='-' \ "https://adventofcode.com/${YEAR}/settings") USERNAME=$(echo "${SETTINGS}" | sed -n 's#.*display_name.*checked.*\(.*\).*#\1#p') authenticated_wget --output-document "input/${USERNAME}" \ "https://adventofcode.com/${YEAR}/day/${DEC}/input" elinks -dump "./input/page_${DEC}.html" >"input/page_${DEC}.txt" } elif [ "${MODE}" = 'aocdl' ]; then # One could possibly use the golang implemenation instead of wget: # https://github.com/GreenLightning/advent-of-code-downloader # # It has more features, but it is always a hassle to install extra things. # # go get github.com/GreenLightning/advent-of-code-downloader/aocdl ~/.go/bin/aocdl -output "{{.Year}}/rust/{{.Day}}" fi