Программа принимает папку с документами, извлекает из них текст и метаданные и строит каталог: краткое описание, тезисы и ключевые слова для каждого файла плюс поиск по всему собранному. Ядро: - 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>
87 lines
2.2 KiB
Batchfile
87 lines
2.2 KiB
Batchfile
@echo off
|
|
setlocal
|
|
|
|
rem Build a standalone Catalogizer.exe: double-click this file in Explorer.
|
|
rem Any arguments are passed to scripts\build_exe.py (--onedir, --console, --cli).
|
|
rem --setup create .venv and install PySide6 + pymupdf + PyInstaller first
|
|
|
|
set "MODULE_ROOT=%~dp0."
|
|
set "VENV_PYTHON=%MODULE_ROOT%\.venv\Scripts\python.exe"
|
|
set "BUILD_SCRIPT=%MODULE_ROOT%\scripts\build_exe.py"
|
|
set "PACKED_EXE=%MODULE_ROOT%\dist\Catalogizer.exe"
|
|
set "EXE_NAME=Catalogizer.exe"
|
|
set "PACKAGES=PySide6 pymupdf pyinstaller"
|
|
set "BUILD_ARGS=%*"
|
|
|
|
if /i "%~1"=="--setup" (
|
|
set "BUILD_ARGS="
|
|
goto setup
|
|
)
|
|
if exist "%VENV_PYTHON%" goto have_python
|
|
|
|
echo Local .venv is missing.
|
|
echo Starting the one-time build environment setup.
|
|
echo.
|
|
|
|
:setup
|
|
echo Preparing the build environment in .venv - this takes a few minutes.
|
|
echo.
|
|
if not exist "%VENV_PYTHON%" (
|
|
python -m venv "%MODULE_ROOT%\.venv"
|
|
if errorlevel 1 (
|
|
echo Failed to create .venv. Is Python installed and in PATH?
|
|
pause
|
|
exit /b 1
|
|
)
|
|
)
|
|
"%VENV_PYTHON%" -m pip install --upgrade pip
|
|
"%VENV_PYTHON%" -m pip install %PACKAGES%
|
|
if errorlevel 1 (
|
|
echo Failed to install %PACKAGES%.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
echo.
|
|
|
|
:have_python
|
|
if not exist "%VENV_PYTHON%" (
|
|
echo Build environment is missing: "%VENV_PYTHON%"
|
|
echo Create it with: BUILD_EXE.bat --setup
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
rem A running build keeps its own file locked and PyInstaller fails halfway.
|
|
"%SystemRoot%\System32\tasklist.exe" /FI "IMAGENAME eq %EXE_NAME%" 2>nul | "%SystemRoot%\System32\find.exe" /I "%EXE_NAME%" >nul
|
|
if not errorlevel 1 (
|
|
echo %EXE_NAME% is running and cannot be overwritten.
|
|
echo Close the application and start the build again.
|
|
echo.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
"%VENV_PYTHON%" "%BUILD_SCRIPT%" %BUILD_ARGS%
|
|
if errorlevel 1 (
|
|
echo.
|
|
echo Build failed. See README.md, section about the exe.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
rem Self-check: the packed build has no console to show a traceback.
|
|
if exist "%PACKED_EXE%" (
|
|
"%PACKED_EXE%" --check
|
|
if errorlevel 1 (
|
|
echo.
|
|
echo The build starts but the main window is broken.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
)
|
|
|
|
echo.
|
|
echo Done. Start it with CATALOG.bat or run dist\%EXE_NAME% directly.
|
|
pause
|
|
exit /b 0
|