nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

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 }