nix-configs

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

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 }