helper scripts
This commit is contained in:
Executable
+97
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# direct_rofi_ocr.sh - Direct script to search OCR'd screenshots with rofi
|
||||
# This script displays OCR data from SQLite and allows opening files with rofi
|
||||
|
||||
# Database path
|
||||
DB_PATH="/home/master/screenshot_ocr.db"
|
||||
|
||||
# Check dependencies
|
||||
check_deps() {
|
||||
local missing=0
|
||||
|
||||
if ! command -v rofi &> /dev/null; then
|
||||
echo "Error: rofi is not installed. Please install it with: sudo pacman -S rofi"
|
||||
missing=1
|
||||
fi
|
||||
|
||||
if ! command -v sqlite3 &> /dev/null; then
|
||||
echo "Error: sqlite3 is not installed. Please install it with: sudo pacman -S sqlite"
|
||||
missing=1
|
||||
fi
|
||||
|
||||
if ! [ -f "$DB_PATH" ]; then
|
||||
echo "Error: Database not found at $DB_PATH"
|
||||
echo "Please run the OCR script first to create and populate the database."
|
||||
missing=1
|
||||
fi
|
||||
|
||||
return $missing
|
||||
}
|
||||
|
||||
# Format OCR text (remove newlines, limit length)
|
||||
format_text() {
|
||||
local text="$1"
|
||||
text=$(echo "$text" | tr '\n' ' ' | tr -s ' ')
|
||||
|
||||
if [ ${#text} -gt 80 ]; then
|
||||
text="${text:0:80}..."
|
||||
fi
|
||||
|
||||
echo "$text"
|
||||
}
|
||||
|
||||
# Main function
|
||||
main() {
|
||||
# Check dependencies
|
||||
if ! check_deps; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create temporary file for mapping
|
||||
TEMP_FILE=$(mktemp)
|
||||
trap 'rm -f $TEMP_FILE' EXIT
|
||||
|
||||
# Extract data from database
|
||||
echo "Querying database..."
|
||||
sqlite3 "$DB_PATH" "SELECT filename, full_path, ocr_text FROM ocr_results" | \
|
||||
while IFS='|' read -r filename path text; do
|
||||
# Format the text for display
|
||||
formatted=$(format_text "$text")
|
||||
# Write to temp file: display_text|file_path
|
||||
echo "$filename | $formatted|$path" >> "$TEMP_FILE"
|
||||
done
|
||||
|
||||
# Check if we got any results
|
||||
if [ ! -s "$TEMP_FILE" ]; then
|
||||
echo "No OCR data found in database. Run ocr_screenshots.py first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Display in rofi
|
||||
echo "Opening rofi dialog..."
|
||||
selection=$(cat "$TEMP_FILE" | cut -d'|' -f1-2 | rofi -dmenu -i -p "Screenshot OCR" -width 80)
|
||||
|
||||
# Check if user made a selection
|
||||
if [ -z "$selection" ]; then
|
||||
echo "No selection made."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Find the corresponding path
|
||||
display_text=$(echo "$selection" | sed 's/|.*$//')
|
||||
path=$(grep -F "$display_text" "$TEMP_FILE" | cut -d'|' -f3)
|
||||
|
||||
# Open the file
|
||||
if [ -n "$path" ] && [ -f "$path" ]; then
|
||||
echo "Opening: $path"
|
||||
xdg-open "$path" &
|
||||
else
|
||||
echo "Error: Could not find file path for selection."
|
||||
echo "Selected: $display_text"
|
||||
echo "Path: $path"
|
||||
fi
|
||||
}
|
||||
|
||||
# Run main function
|
||||
main
|
||||
Reference in New Issue
Block a user