Программа принимает папку с документами, извлекает из них текст и метаданные и строит каталог: краткое описание, тезисы и ключевые слова для каждого файла плюс поиск по всему собранному. Ядро: - 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>
58 lines
1.6 KiB
Batchfile
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" %*
|