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 }