vidyaplace-tears.nix (1082B)
1 { pkgs, ... }: 2 3 { 4 5 environment.systemPackages = [ 6 (pkgs.writeShellScriptBin "vidyaplace-tears" '' 7 8 # variables 9 player="''${1:-Calico}" 10 11 # process 12 printf "Player: %s\n" "$player" 13 ${pkgs.curl}/bin/curl -s "https://vidyaplace.org/api/highscores/player/$player" | 14 ${pkgs.jq}/bin/jq -r ' 15 def format_number: 16 tostring 17 | if length <= 3 then . 18 else (.[0:length-3] | format_number) + "," + .[length-3:] 19 end; 20 def format_skill: 21 sub("_xp$"; "") 22 | split("_") 23 | map((.[0:1] | ascii_upcase) + .[1:]) 24 | join(" "); 25 to_entries 26 | map(select(.key | test("_(xp)$"))) 27 | sort_by(.value) 28 | .[0] as $lowest 29 | .[1] as $second 30 | 31 "Lowest skill: \($lowest.key | format_skill) (\($lowest.value | format_number) XP)", 32 "Second lowest skill: \($second.key | format_skill) (\($second.value | format_number) XP)", 33 "", 34 "Difference: \(($second.value - $lowest.value) | format_number) XP" 35 ' 36 '') 37 ]; 38 39 }