From 3cd9138c9d8fb9be248c75330cca9da47f4d2e8a Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Sun, 10 May 2026 22:57:02 +0200 Subject: added a whole bunch of scripts --- pdf-fzf | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 pdf-fzf (limited to 'pdf-fzf') diff --git a/pdf-fzf b/pdf-fzf new file mode 100755 index 0000000..c2570c7 --- /dev/null +++ b/pdf-fzf @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# pdf-fzf — interactive PDF text search via fzf + bat +# Deps: pdftotext (poppler-utils), fzf, bat + +set -euo pipefail + +DIR="${1:-.}" +CACHE=$(mktemp -d /tmp/pdf-fzf.XXXXXX) +trap 'rm -rf "$CACHE"' EXIT + +MAPFILE="$CACHE/map.tsv" +INDEX="$CACHE/index.tsv" + +echo "Indexing PDFs in '$DIR'..." >&2 + +find "$DIR" -type f -iname "*.pdf" | sort | while read -r pdf; do + hash=$(printf '%s' "$pdf" | md5sum | cut -c1-8) + txtfile="$CACHE/${hash}.txt" + pdftotext "$pdf" - 2>/dev/null > "$txtfile" || continue + [[ ! -s "$txtfile" ]] && continue + printf '%s\t%s\t%s\n' "$hash" "$pdf" "$txtfile" >> "$MAPFILE" + awk -v src="$pdf" -F'\t' \ + 'NF { printf "%s\t%d\t%s\n", src, NR, $0 }' "$txtfile" +done > "$INDEX" + +PDF_COUNT=$(wc -l < "${MAPFILE:-/dev/null}" 2>/dev/null || echo 0) +LINE_COUNT=$(wc -l < "$INDEX") +echo "Indexed $LINE_COUNT lines from $PDF_COUNT PDFs." >&2 + +# Preview script — receives the raw fzf line, shows bat at matched line +PREVIEW_SH="$CACHE/preview.sh" +cat > "$PREVIEW_SH" </dev/null &)" \ + < "$INDEX" -- cgit v1.3