50 lines
1.6 KiB
Bash
Executable File
50 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
# Description: Browse Project Gutenberg catalogue by popularity, then download
|
|
# and read a book of your choice.
|
|
#
|
|
# Details: Set the variable EBOOK_ID to download in html format and read in w3m.
|
|
# Clear EBOOK_ID to browse available ebooks by popularity and set it to
|
|
# the ID once you find an interesting one.
|
|
# To download and read in epub format set READER to an epub reader like
|
|
# epr: https://github.com/wustho/epr
|
|
#
|
|
# More on EBOOK_ID:
|
|
# Wuthering Heights by Emily Brontë is at https://www.gutenberg.org/ebooks/768
|
|
# So EBOOK_ID would be 768
|
|
#
|
|
# Downloaded ebooks are at ${XDG_CACHE_HOME:-$HOME/.cache}/nnn/gutenbooks/
|
|
#
|
|
# Shell: POSIX compliant
|
|
# Author: Arun Prakash Jana
|
|
|
|
EBOOK_ID="${EBOOK_ID:-""}"
|
|
DIR="${XDG_CACHE_HOME:-$HOME/.cache}/nnn/gutenbooks/$EBOOK_ID"
|
|
BROWSE_LINK="https://www.gutenberg.org/ebooks/search/?sort_order=downloads"
|
|
BROWSER="${BROWSER:-w3m}"
|
|
READER="${READER:-""}"
|
|
|
|
if [ -n "$EBOOK_ID" ]; then
|
|
if [ ! -e "$DIR" ]; then
|
|
mkdir -p "$DIR"
|
|
cd "$DIR" || exit 1
|
|
|
|
if [ -z "$READER" ]; then
|
|
curl -L -O "https://www.gutenberg.org/files/$EBOOK_ID/$EBOOK_ID-h.zip"
|
|
unzip "$EBOOK_ID"-h.zip
|
|
else
|
|
curl -L -o "$EBOOK_ID".epub "https://www.gutenberg.org/ebooks/$EBOOK_ID.epub.noimages"
|
|
fi
|
|
fi
|
|
|
|
if [ -d "$DIR" ]; then
|
|
if [ -z "$READER" ]; then
|
|
"$BROWSER" "$DIR/$EBOOK_ID-h/$EBOOK_ID-h.htm"
|
|
else
|
|
"$READER" "$DIR/$EBOOK_ID.epub"
|
|
fi
|
|
fi
|
|
else
|
|
"$BROWSER" "$BROWSE_LINK"
|
|
fi
|