Программа принимает папку с документами, извлекает из них текст и метаданные и строит каталог: краткое описание, тезисы и ключевые слова для каждого файла плюс поиск по всему собранному. Ядро: - extract: PDF, DJVU, DOC(X), RTF, ODT, CHM, EPUB, FB2, PPT(X), XLS(X), TXT; PDF передаётся MuPDF потоком в память (работают длинные пути) и ограничен по времени — повреждённый файл иначе чинится минутами; - summarize: экстрактивное реферирование по TF-IDF, посчитанному на самой библиотеке, с лёгким стеммером для русского и английского; - db: SQLite с полнотекстовым индексом FTS5, морфологический поиск с BM25; - scanner: инкрементальный многопоточный обход, счётчик попыток защищает от файла, обрывающего разбор; - report: автономный HTML с поиском, Markdown, JSON, CSV. Интерфейс: - окно PySide6 в тёмной теме: вкладки разбора и поиска, фоновый поток, карточка документа, правка своих ключевых слов; - командная строка: build, scan, analyze, report, search, show, tag, stats; - у каждой папки свой каталог, последняя обработанная запоминается. Сборка: scripts/build_exe.py даёт Catalogizer.exe в Windows и Catalogizer.app в macOS, иконки .ico и .icns рисуются кодом. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
31 lines
987 B
Bash
Executable File
31 lines
987 B
Bash
Executable File
#!/bin/bash
|
|
# GUI launcher for macOS: double-click this file in Finder.
|
|
set -u
|
|
|
|
MODULE_ROOT="$(cd "$(dirname "$0")" && pwd)"
|
|
PACKED_APP="$MODULE_ROOT/dist/Catalogizer.app"
|
|
VENV_PYTHON="$MODULE_ROOT/.venv/bin/python3"
|
|
|
|
# A packed build needs neither Python nor PySide6, so it wins when present.
|
|
if [ -d "$PACKED_APP" ]; then
|
|
if [ "${1:-}" = "--check" ]; then
|
|
"$PACKED_APP/Contents/MacOS/Catalogizer" --check
|
|
exit $?
|
|
fi
|
|
open -a "$PACKED_APP" --args "$@"
|
|
exit 0
|
|
fi
|
|
|
|
PYTHON="$VENV_PYTHON"
|
|
[ -x "$PYTHON" ] || PYTHON="$(command -v python3 || true)"
|
|
if [ -z "$PYTHON" ] || ! "$PYTHON" -c "import PySide6, pymupdf" >/dev/null 2>&1; then
|
|
echo "Python with PySide6 and pymupdf is not available."
|
|
echo
|
|
echo "Either build a standalone Catalogizer.app with BUILD_APP.command,"
|
|
echo "or install the dependencies:"
|
|
echo " python3 -m pip install -r \"$MODULE_ROOT/requirements.txt\""
|
|
exit 1
|
|
fi
|
|
|
|
exec "$PYTHON" "$MODULE_ROOT/catalog_gui.py" "$@"
|