blog-music.nix (2424B)
1 { 2 pkgs, 3 vars, 4 ... 5 }: let 6 blog-music = pkgs.writeShellScriptBin "blog-music" '' 7 # variables 8 # functions 9 function lastmod { 10 echo -n "Amending lastmod value... " 11 mod_timestamp="$(date +%FT%H:%M:00)" 12 sed -i "s/lastmod: .*/lastmod: $mod_timestamp/g" "$1" 13 echo -e "\e[32mdone\e[39m" 14 } 15 post_arg="$1" 16 17 if [ -z "$post_arg" ]; then 18 echo "No CSV supplied, using default liked.csv to music.md process" 19 20 source="./liked.csv" 21 post="$HOME/vault/src/blog.${vars.user.domain}/content/music.md" 22 else 23 if [ ! -f "$post_arg" ]; then 24 echo "Input file does not exist: $post_arg" 25 exit 1 26 fi 27 28 source="$post_arg" 29 basename="$(basename "$source" .csv)" 30 post="./''${basename}.md" 31 fi 32 33 echo -n "Checking for output $(basename "$post")..." 34 35 # create file if missing 36 if [ ! -f "$post" ]; then 37 echo -e "\e[33mcreating new file\e[39m" 38 touch "$post" 39 fi 40 41 header="$(grep -v \| "$post")" 42 43 echo -n "Processing $source... " 44 tail -n +2 <"$source" | 45 awk -F'\",\"' '{print $4}' | 46 sed 's/\\\,/,/g' >temp.artists.log 47 tail -n +2 <"$source" | 48 awk -F'\",\"' '{print $2}' | 49 sed \ 50 -e 's/ - .... - Remaster$//' \ 51 -e 's/ - .... Remaster$//' \ 52 -e 's/ - .... Remastered Edition$//' \ 53 -e 's/ - .... re-mastered version$//' \ 54 -e 's/ - .... Remastered Version$//' \ 55 -e 's/ - [0-9]\+\x27\x27 Version$//' \ 56 -e 's/ - feat.*$//' \ 57 -e 's/ - Live$//' \ 58 -e 's/ - Original Mix$//' \ 59 -e 's/ - Radio Version$//' \ 60 -e 's/ - Remaster$//' \ 61 -e 's/ - Remastered ....$//' \ 62 -e 's/ - Remastered$//' \ 63 -e 's/ - Single$//' \ 64 -e 's/ (.... Remaster)$//' \ 65 -e 's/ (feat.*)$//' \ 66 -e 's/ (Live)$//' \ 67 -e 's/\[[^][]*\]//' | 68 awk '{print "["$0"]"}' >temp.tracks.log 69 tail -n +2 <"$source" | 70 awk -F'\"' '{print $2}' | 71 awk '{print "("$0")"}' >temp.links.log 72 echo -e "\e[32mdone\e[39m" 73 # write page 74 echo -n "Writing page... " 75 { 76 printf "%s\n\n" "$header" 77 printf "%s" "$(paste temp.artists.log temp.tracks.log temp.links.log \ 78 | sed 's/\t/ \| /g' \ 79 | sed 's/^/\| /g' \ 80 | sed 's/$/ \|/g' \ 81 | sed 's/\] | (/\](/g')" \ 82 | sort | uniq -i \ 83 | sed -e '1i\| ------ \| ----- \|' \ 84 | sed -e '1i\| Artist \| Title \|' 85 } >"$post" 86 echo -e "\e[32mdone\e[39m" 87 lastmod "$post" 88 echo -n "Deleting temporary files... " 89 rm temp.{artists,tracks,links}.log 90 echo -e "\e[32mdone\e[39m" 91 ''; 92 in { 93 environment.systemPackages = [blog-music]; 94 }