epub (1181B)
1 #!/bin/sh 2 3 [ -z "$1" ] && { printf "Uso: %s <arquivo.epub>\n" "$(basename "$0")"; exit 1; } 4 5 FILE="$(realpath "$1")" 6 [ -f "$FILE" ] || { printf "Erro: arquivo não encontrado: %s\n" "$FILE"; exit 1; } 7 8 DEST_DIR="$(dirname "$FILE")" 9 BASE="$(basename "$FILE" .epub)" 10 FINAL_NAME="${DEST_DIR}/${BASE}_editado.epub" 11 TEMP_DIR="/tmp/epub_${$}_$(date +%s)" 12 13 # Extração 14 mkdir -p "$TEMP_DIR" 15 unzip -q "$FILE" -d "$TEMP_DIR" 16 17 # Verifica se NERDTree está disponível 18 _has_nerdtree() { 19 vim -e -s \ 20 -c 'silent! runtime plugin/NERD_tree.vim' \ 21 -c 'if !exists("g:loaded_nerd_tree") | cq | endif' \ 22 -c 'q' >/dev/null 2>&1 23 } 24 25 if _has_nerdtree; then 26 (cd "$TEMP_DIR" && vim -c "NERDTree $TEMP_DIR" -c "wincmd l") 27 else 28 # netrw é built-in — funciona sem plugins 29 (cd "$TEMP_DIR" && "${EDITOR:-vim}" .) 30 fi 31 32 # Recompactação seguindo o padrão OCF: 33 # mimetype deve ser o primeiro arquivo e sem compressão (-0) 34 printf '-> Gerando EPUB: %s\n' "$FINAL_NAME" 35 ( 36 cd "$TEMP_DIR" || exit 1 37 zip -q -X -0 "$FINAL_NAME" mimetype 38 zip -q -X -9 -r -g "$FINAL_NAME" . -x "mimetype" -x "*.DS_Store" 39 ) 40 41 rm -rf "$TEMP_DIR" 42 printf 'Concluído: %s\n' "$FINAL_NAME"