#!/usr/bin/perl -w use v5.36; use strict; use Y::AoC qw(grey red); use Y::AoC::UA; use Mojo::UserAgent -signatures; use Mojo::Util qw(getopt); use Time::ParseDate; my $start = '6:00:02'; getopt 'd|day=i' => \my $day, 'y|year=i' => \my $year; $year //= Y::AoC::year; my $sleep; if (!$day) { my $now = time; my @now = localtime($now); if ($now[4] == 11 && $now[2] >= 5 && $now[2] < 7) { $day = $now[3]; if ($now[2] == 5 && $now[1] >= 50) { my $then = parsedate($start); $sleep = $then - $now; } } } die "Use -d day command-line switch.\n" if !$day; my $task = 2*$day-1; my $url = "https://adventofcode.com/$year/day/$day/input"; my $dest = $task.'in.txt'; if ($sleep) { say "Sleeping for $sleep s till $start before downloading\n", "$url to $dest"; sleep $sleep; } say "Downloading $url to $dest"; my $data = Y::AoC::UA::request($url, { body => 1 }); Mojo::File->new($dest)->spew($data); say grey('=================================================='); print $data; say grey('=================================================='); say "lines words chars"; system 'wc', $dest; $url =~ s/\/input\z//; $dest = $task.'test.txt'; my $tst = Y::AoC::UA::request($url, { cache_to => "task-$year-$day.html" }) ->find('main > article > pre > code')->first->all_text; Mojo::File->new($dest)->spew($tst); say "\n", grey("also downloaded $dest"), "\n";