#!/bin/sh # This is a small script to open a book from your calibre library # Using dmenu. LIBRARY="$HOME/Library" if [ "$(date -r "$XDG_CACHE_HOME/calibrelib" "+%d-%m-%Y")" = "$(date '+%d-%m-%Y')" ]; then books_raw=$(cat "$XDG_CACHE_HOME/calibrelib") else books_raw=$(calibredb --with-library "$LIBRARY" list --for-machine --fields="title,authors,formats") fi id="$(echo "$books_raw" |\ jq -r '.[]|(.id | tostring) + " | " + .title + " | " + .authors' |\ dmenu -i -l 12 -p "Search Book: " |\ cut -d "|" -f 1)" entry="$(echo "$books_raw" | jq -a ".[]|select(.id | contains($id))")" formats="$(echo "$entry" | \ jq -r ".formats|.[]" |\ sed -r "s/.*\.([^\.]*)$/\1/g")" if [ "$(echo "$formats" | wc -l)" -lt 2 ]; then xdg-open "$(echo "$entry" | \ jq -r ".formats|.[0]")" exit fi index=$(( $(echo "$formats" | grep -n -F $(echo "$formats" | \ dmenu -p "Select format:" ) | cut -d ":" -f 1) - 1)) xdg-open "$(echo "$entry" | \ jq -r ".formats|.[$line]")"