#!/bin/bash ## zaread - a simple script created by paoloap. # default variables zadir="$XDG_DATA_HOME"'/.zaread/' reader="zathura" # if ~/.zaread doesn't exist, we create it. if [[ ! -d "$zadir" ]]; then mkdir "$zadir" mkdir "$zadir"cksum fi # if no arguments exit. if [[ -z $@ ]]; then exit 1; fi # if zathura is not installed, we force the user to choose a pdf reader # after three wrong commands, the script exits 1 # if the user inserts a command that exists but is not a pdf reader then... then fuck him. counter=0 while [[ -z `command -v "$reader"` ]]; do if [ $counter -gt 3 ]; then exit 1; fi let counter+=1 echo "Seems that you don't have zathura installed. Please choose an installed PDF reader:" read reader done echo "We'll read PDF with $reader." ## create position and file variables ## # complete file name (path excluded): file=`echo "$@" | rev | cut -d'/' -f1 | rev` # complete directory path: # if it has been inserted absolute path ($@ starts with '/') if [[ $@ =~ ^/ ]]; then directory=`echo "$@" | rev | cut -d'/' -f2- | rev`"/" # else (relative path inserted) else dir=`pwd`"/"`echo "$@" | sed 's|.[^/]*$||'`"/" directory=`echo "$dir" | sed 's|//|/|'` fi echo "$directory""$file" # if file type is pdf, then just read the file if [[ `file "$directory""$file" | cut -d':' -f2 | cut -d' ' -f2` == "PDF" ]]; then echo "The file is already in PDF format." $reader "$directory""$file" # else check if you already have its pdf version (if not, create it) else pdffile=`echo "$file" | rev | cut -d'.' -f2- | rev`".pdf" check=`cksum "$directory""$file" | awk '{print $1}'` # if pdf version hasn't ever been created, or it changed, then # make conversion and store the checksum. if [[ ( ! -f "$zadir$pdffile" ) || ( ! "$check" == `cat "$zadir"cksum/"$file".check` ) ]]; then # if it's a mobi file, then convert it to epub (the command depends on calibre) if [[ "$file" =~ ^.*\.mobi$ ]]; then ebook-converter "$directory""$file" "$directory"`echo "$file" | sed 's/mobi$/epub/'` else libreoffice --convert-to pdf "$directory""$file" --headless --outdir "$zadir" fi echo "$check" > "$zadir"cksum/"$file".check fi $reader "$zadir$pdffile" fi