]> www.fi.muni.cz Git - aoc.git/blob - get
Day 25: examining the input
[aoc.git] / get
1 #!/usr/bin/perl -w
2
3 use v5.36;
4 use strict;
5
6 use Y::AoC qw(grey red);
7 use Y::AoC::UA;
8
9 use Mojo::UserAgent -signatures;
10 use Mojo::Util qw(getopt);
11 use Time::ParseDate;
12
13 my $start = '6:00:02';
14
15 getopt
16         'd|day=i'  => \my $day,
17         'y|year=i' => \my $year;
18
19 $year //= Y::AoC::year;
20 my $sleep;
21
22 if (!$day) {
23         my $now = time;
24         my @now = localtime($now);
25         if ($now[4] == 11 && $now[2] >= 5 && $now[2] < 7) {
26                 $day = $now[3];
27                 if ($now[2] == 5 && $now[1] >= 50) {
28                         my $then = parsedate($start);
29                         $sleep = $then - $now;
30                 }
31         }
32 }
33
34 die "Use -d day command-line switch.\n"
35         if !$day;
36
37 my $task = 2*$day-1;
38 my $url = "https://adventofcode.com/$year/day/$day/input";
39 my $dest = $task.'in.txt';
40
41 if ($sleep) {
42         say "Sleeping for $sleep s till $start before downloading\n",
43                 "$url to $dest";
44         sleep $sleep;
45 }
46 say "Downloading $url to $dest";
47
48 my $data = Y::AoC::UA::request($url, { body => 1 });
49 Mojo::File->new($dest)->spew($data);
50 say grey('==================================================');
51 print $data;
52 say grey('==================================================');
53
54 say "lines words chars";
55 system 'wc', $dest;
56
57 $url =~ s/\/input\z//;
58 $dest = $task.'test.txt';
59
60 my $tst = Y::AoC::UA::request($url, { cache_to => "task-$year-$day.html" })
61         ->find('main > article > pre > code')->first->all_text;
62 Mojo::File->new($dest)->spew($tst);
63 say "\n", grey("also downloaded $dest"), "\n";