Files

89 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# SCAN-BOOK // Interactive multi-page book scanning CLI
# Skenování knih po stránkách přes Brother DCP-J4120DW (USB bazina / AirScan)
set -e
BOOK_NAME="$1"
if [ -z "$BOOK_NAME" ]; then
BOOK_NAME="kniha_$(date +%Y%m%d_%H%M%S)"
fi
# Strip .pdf extension if user provided it
BOOK_NAME="${BOOK_NAME%.pdf}"
OUT_DIR="$HOME/Downloads/$BOOK_NAME"
mkdir -p "$OUT_DIR"
FINAL_PDF="$HOME/Downloads/${BOOK_NAME}.pdf"
echo "======================================================================"
echo " KNIŽNÍ SKENER // BROTHER DCP-J4120DW (BAZINA USB)"
echo "======================================================================"
echo " Kniha : $BOOK_NAME"
echo " Složka: $OUT_DIR"
echo " Výstup: $FINAL_PDF"
echo ""
echo " Ovládání:"
echo " [ENTER] = Naskenovat aktuální stranu"
echo " r = Znovu naskenovat poslední stranu (oprava posunu)"
echo " q = Dokončit knihu a spojit do jednoho PDF"
echo "======================================================================"
echo ""
PAGE=1
while true; do
printf "[Strana %03d] Položte knihu na sklo a stiskněte [ENTER] (nebo 'q' pro konec): " "$PAGE"
read -r cmd
if [[ "$cmd" == "q" || "$cmd" == "done" || "$cmd" == "exit" ]]; then
break
fi
if [[ "$cmd" == "r" ]]; then
if [ $PAGE -gt 1 ]; then
PAGE=$((PAGE - 1))
echo "[-] Opakuji sken strany $PAGE..."
else
echo "[-] Ještě nebyla naskenována žádná strana."
continue
fi
fi
PAGE_FILE="$OUT_DIR/page_$(printf '%04d' $PAGE).jpg"
printf " [+] Skenuji stranu %03d (300 DPI True Gray)... " "$PAGE"
# Execute scan on bazina via USB (native JPEG output for zero-loss lossless packaging)
ssh bazina "scanimage -d 'brother4:bus1;dev8' --resolution 300 --mode 'True Gray' -x 210 -y 297 --format=jpeg" > "$PAGE_FILE" 2>/dev/null || {
# Fallback to network airscan if USB re-enumerated
scanimage -d "airscan:w0:Brother DCP-J4120DW" --resolution 300 --mode "Gray" -x 210 -y 297 --format=jpeg > "$PAGE_FILE" 2>/dev/null
}
if [ -s "$PAGE_FILE" ]; then
echo "OK ($(du -h "$PAGE_FILE" | cut -f1))"
PAGE=$((PAGE + 1))
else
echo "CHYBA: Sken se nezdařil. Zkontrolujte tiskárnu a zkuste to znovu."
fi
echo ""
done
TOTAL_PAGES=$(ls -1 "$OUT_DIR"/page_*.jpg 2>/dev/null | wc -l)
if [ "$TOTAL_PAGES" -gt 0 ]; then
echo ""
echo "[*] Spojuji $TOTAL_PAGES stran do výsledného PDF..."
img2pdf "$OUT_DIR"/page_*.jpg -o "$FINAL_PDF"
ln -sf "$FINAL_PDF" "$HOME/Downloads/kniha.pdf"
echo "======================================================================"
echo " [✓] KNIHA DOKONČENA!"
echo " Počet stran: $TOTAL_PAGES"
echo " Soubor : $FINAL_PDF"
echo " Odkaz : ~/Downloads/kniha.pdf"
echo " Velikost : $(du -h "$FINAL_PDF" | cut -f1)"
echo "======================================================================"
notify-send "Kniha naskenována" "$TOTAL_PAGES stran v $FINAL_PDF" 2>/dev/null || true
else
echo "[-] Nebyla naskenována žádná strana. Kniha nebyla vytvořena."
fi