nix-configs

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

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 }