blog-duolingo-rank.nix (1195B)
1 { 2 pkgs, 3 domain, 4 ... 5 }: let 6 blog-duolingo-rank = pkgs.writeShellScriptBin "blog-duolingo-rank" '' 7 # variables 8 username="$(awk -F'[/()]' '/Duolingo/ {print $5}' "$HOME/vault/src/blog.${domain}/content/about.md")" 9 post_file="$HOME/vault/src/blog.${domain}/content/posts/logging-duolingo-ranks-over-time.md" 10 # functions 11 function lastmod { 12 echo -n "Amending lastmod value... " 13 mod_timestamp="$(date +%FT%H:%M:00)" 14 sed -i "s/lastmod: .*/lastmod: $mod_timestamp/g" "$1" 15 echo -e "$i \e[32mdone\e[39m" 16 } 17 # process 18 page_source="$(curl -s https://duome.eu/"$username")" 19 rank_lingot="$(printf %s "$page_source" | awk -F"[#><]" '/icon lingot/ {print $15}')" 20 rank_streak="$(printf %s "$page_source" | awk -F"[#><]" '/icon streak/{getline;print $15}')" 21 # write 22 echo -e "$i \e[32mdone\e[39m" 23 echo -n "Appending ranks to page... " 24 sed -i '/<\/tbody><\/table>/d' "$post_file" 25 printf " <tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n</tbody></table>" "$(date +%F)" "$(date +%H:%M)" "$rank_streak" "$rank_lingot" >>"$post_file" 26 echo -e "$i \e[32mdone\e[39m" 27 lastmod "$post_file" 28 ''; 29 in { 30 environment.systemPackages = [blog-duolingo-rank]; 31 }