From 50e9ae670d01536489c1651b11aa1cf040bd95eb Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Wed, 1 Dec 2021 08:53:47 +0100 Subject: [PATCH] Auxilliary scripts --- get.sh | 9 ++++++++ leaderboard | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100755 get.sh create mode 100755 leaderboard diff --git a/get.sh b/get.sh new file mode 100755 index 0000000..a0d03f8 --- /dev/null +++ b/get.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +DAY=`date +%e|sed 's/ //g'` +FILE="$((2*DAY - 1))in.txt" +COOKIE=`cat cookie` + +URL="https://adventofcode.com/2021/day/$DAY/input" +echo "Stahuji $URL do $FILE" +curl -q -b "$COOKIE" "$URL" --output "$FILE" diff --git a/leaderboard b/leaderboard new file mode 100755 index 0000000..cc2ed5b --- /dev/null +++ b/leaderboard @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w + +use v5.16; +use Mojo::UserAgent -signatures; +use Mojo::JSON qw(from_json); +use Mojo::File qw(curfile); +use Mojo::Util qw(getopt dumper); +use POSIX; + +my $board_id = 652041; +my $my_name = 'Yenya'; +my $day = (localtime(time))[3]; +my $mode = 'r'; +my $cached = curfile->sibling('cache.json'); +getopt + 'n|name=s' => \$my_name, + 'd|day=i' => \$day, + '1|first-task' => sub { $mode = '1' }, + '2|second-task' => sub { $mode = '2' }, + 'r|relative' => sub { $mode = 'r' }, + 'b|board=i' => \$board_id +or die "Usage: $0 [-n username] [-1|-2|-r] [-b board_id]\n"; + +if (!$cached->stat || time - $cached->stat->mtime > 900) { + warn "Downloading cache.json\n"; + chomp(my $cookie = curfile->sibling('cookie')->slurp); + my $res = Mojo::UserAgent->new->get( + "https://adventofcode.com/2021/leaderboard/private/view/$board_id.json", + { Cookie => $cookie } + )->result; + + $cached->spurt($res->body); +} + +my $json = from_json $cached->slurp; + + +my %times; +my $my_time; +for my $name (keys %{ $json->{members} }) { + my $member = $json->{members}->{$name}; + my $level = $member->{completion_day_level}->{$day} + or next; + my $time; + if ($mode eq 'r') { + next if !$level->{2}; + $time = $level->{2}->{get_star_ts} - $level->{1}->{get_star_ts}; + } elsif ($mode eq '1') { + next if !$level->{1}; + $time = $level->{1}->{get_star_ts}; + } elsif ($mode eq '2') { + next if !$level->{2}; + $time = $level->{2}->{get_star_ts}; + } + my $id_or_name = $member->{name} // 'Anonymous user #' . $member->{id}; + $times{ $id_or_name } = $time; + $my_time = $time + if $id_or_name eq $my_name; +} + +for my $name (sort { $times{$a} <=> $times{$b} } keys %times) { + $my_time //= $times{$name}; + printf("%6d %6d %s\n", $times{$name}, $times{$name} - $my_time, $name); +} -- 2.43.5