blog-music.nix (2428B)
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 's/ - .... - Remaster$//g' | 50 sed 's/ - .... Remaster$//g' | 51 sed 's/ - .... Remastered Edition$//g' | 52 sed 's/ - .... re-mastered version$//g' | 53 sed 's/ - .... Remastered Version$//g' | 54 sed 's/ - feat.*$//g' | 55 sed 's/ - Live$//g' | 56 sed 's/ - Single$//g' | 57 sed 's/ - Original Mix$//g' | 58 sed 's/ - Remaster$//g' | 59 sed 's/ - Remastered ....$//g' | 60 sed 's/ - Remastered$//g' | 61 sed 's/ - Radio Version$//g' | 62 sed 's/ - Remastered Version$//g' | 63 sed 's/ (.... Remaster)$//g' | 64 sed 's/ (feat.*)$//g' | 65 sed 's/ (Live)//g' | 66 sed 's/\[[^][]*\]//g' | 67 awk '{print "["$0"]"}' >temp.tracks.log 68 tail -n +2 <"$source" | 69 awk -F'\"' '{print $2}' | 70 awk '{print "("$0")"}' >temp.links.log 71 echo -e "\e[32mdone\e[39m" 72 # write page 73 echo -n "Writing page... " 74 { 75 printf "%s\n\n" "$header" 76 printf "%s" "$(paste temp.artists.log temp.tracks.log temp.links.log \ 77 | sed 's/\t/ \| /g' \ 78 | sed 's/^/\| /g' \ 79 | sed 's/$/ \|/g' \ 80 | sed 's/\] | (/\](/g')" \ 81 | sort | uniq -i \ 82 | sed -e '1i\| ------ \| ----- \|' \ 83 | sed -e '1i\| Artist \| Title \|' 84 } >"$post" 85 echo -e "\e[32mdone\e[39m" 86 lastmod "$post" 87 echo -n "Deleting temporary files... " 88 rm temp.{artists,tracks,links}.log 89 echo -e "\e[32mdone\e[39m" 90 ''; 91 in { 92 environment.systemPackages = [blog-music]; 93 }