]> www.fi.muni.cz Git - aoc.git/blobdiff - get
Infrastructure cleanups
[aoc.git] / get
diff --git a/get b/get
new file mode 100755 (executable)
index 0000000..13a39df
--- /dev/null
+++ b/get
@@ -0,0 +1,63 @@
+#!/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)->spurt($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)->spurt($tst);
+say "\n", grey("also downloaded $dest"), "\n";