Files
catalog_doc/CATALOG.bat
Andrey Kruchinkin 49f91247c7 Каталогизатор документов: разбор папки, тезисы, поиск, GUI
Программа принимает папку с документами, извлекает из них текст и
метаданные и строит каталог: краткое описание, тезисы и ключевые слова
для каждого файла плюс поиск по всему собранному.

Ядро:
- 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>
2026-08-30 19:20:29 +03:00

58 lines
1.6 KiB
Batchfile

@echo off
setlocal
rem GUI launcher: double-click this file in Windows Explorer.
set "MODULE_ROOT=%~dp0."
set "PACKED_EXE=%MODULE_ROOT%\dist\Catalogizer.exe"
set "LOCAL_PYTHON=%MODULE_ROOT%\.venv\Scripts\python.exe"
set "LOCAL_PYTHONW=%MODULE_ROOT%\.venv\Scripts\pythonw.exe"
rem A packed build needs neither Python nor PySide6, so it wins when present.
if exist "%PACKED_EXE%" (
if /i "%~1"=="--check" (
"%PACKED_EXE%" --check
if errorlevel 1 (
echo Catalogizer.exe is broken. Rebuild it with BUILD_EXE.bat.
pause
exit /b 1
)
echo Catalogizer: packed build is ready.
exit /b 0
)
start "Catalogizer" /D "%MODULE_ROOT%" "%PACKED_EXE%" %*
exit /b 0
)
if exist "%LOCAL_PYTHON%" (
set "CHECK_PYTHON=%LOCAL_PYTHON%"
set "GUI_PYTHON=%LOCAL_PYTHONW%"
) else (
set "CHECK_PYTHON=python"
where pythonw >nul 2>&1
if errorlevel 1 (
set "GUI_PYTHON=python"
) else (
set "GUI_PYTHON=pythonw"
)
)
"%CHECK_PYTHON%" -c "import PySide6, pymupdf" >nul 2>&1
if errorlevel 1 (
echo Python with PySide6 and pymupdf is not available.
echo.
echo Either build a standalone Catalogizer.exe with BUILD_EXE.bat,
echo or install the dependencies:
echo python -m pip install -r "%MODULE_ROOT%\requirements.txt"
echo.
pause
exit /b 1
)
if /i "%~1"=="--check" (
"%CHECK_PYTHON%" "%MODULE_ROOT%\catalog_gui.py" --check
exit /b %errorlevel%
)
rem pythonw starts the desktop application without an extra console window.
start "Catalogizer" /D "%MODULE_ROOT%" "%GUI_PYTHON%" "%MODULE_ROOT%\catalog_gui.py" %*