|
#!/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
|