nix-configs

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

watchedlist.nix (1905B)


      1 { pkgs, ... }:
      2 
      3 let
      4   watchedlist = pkgs.writeShellScriptBin "watchedlist" ''
      5 	# variables
      6 	if [ -z "$1" ]
      7 	then
      8 		database="watchedlist.db"
      9 	else
     10 		database="$1"
     11 	fi
     12 	# checks
     13 	if [ ! -f "$database" ]
     14 	then
     15 		echo "Database \"$database\" file missing, exiting"
     16 		exit 0
     17 	fi
     18 
     19 	# count watched content
     20 	movie_count=$(sqlite3 "$database" "SELECT COUNT(*) FROM movie_watched;")
     21 	episode_count=$(sqlite3 "$database" "SELECT COUNT(*) FROM episode_watched;")
     22 
     23 	# blank database
     24 	if [ "$movie_count" -eq 0 ] && [ "$episode_count" -eq 0 ]
     25 	then
     26 		echo "Warning: blank database detected."
     27 		echo "No watched movies or TV episodes were found in \"$database\"."
     28 		printf "Do you want to delete this database? [y/N] "
     29 		read -r answer
     30 
     31 		case "$answer" in
     32 			[yY]|[yY][eE][sS])
     33 				rm "$database"
     34 				echo "Database \"$database\" deleted."
     35 				;;
     36 			*)
     37 				echo "Database retained."
     38 				;;
     39 		esac
     40 
     41 		exit 0
     42 	fi
     43 
     44 	# movies
     45 	if [ "$movie_count" -gt 0 ]
     46 	then
     47 		sqlite3 -noheader -quote "$database" "SELECT title FROM movie_watched;" |
     48 			sed "s/^'//;s/'$//" |
     49 			sed 's/^/* /' > movies.md
     50 
     51 		echo "Created movies.md ($movie_count movies)"
     52 	fi
     53 
     54 	# tv shows
     55 	if [ "$episode_count" -gt 0 ]
     56 	then
     57 		watched_ids=$(sqlite3 -noheader "$database" "SELECT DISTINCT idShow FROM episode_watched;")
     58 
     59 		for id in $watched_ids
     60 		do
     61 			title=$(sqlite3 -noheader -quote "$database" "SELECT title FROM tvshows WHERE idShow = $id;")
     62 			title=''${title//\"/}
     63 			title=''${title//\'/}
     64 			latest_season=$(sqlite3 -noheader "$database" "SELECT MAX(season) FROM episode_watched WHERE idShow = $id;")
     65 			latest_episode=$(sqlite3 -noheader "$database" "SELECT MAX(episode) FROM episode_watched WHERE idShow = $id AND season = $latest_season;")
     66 			echo "* "$title" ("$latest_season"x"$latest_episode")"
     67 		done > tv_shows.md
     68 
     69 		echo "Created tv_shows.md ($episode_count episodes)"
     70 	fi
     71   '';
     72 in {
     73   environment.systemPackages = [ watchedlist ];
     74 }