feat: rename project to BookFlow Curator

This commit is contained in:
2026-08-31 19:31:50 +03:00
parent 83e69b9859
commit 277ba24606
4 changed files with 15 additions and 14 deletions
+10 -10
View File
@@ -1,10 +1,10 @@
# AudiobookOrganizer
# BookFlow Curator
AudiobookOrganizer — консольный инструмент на Python для автоматизации разбора и организации коллекции аудиокниг.
BookFlow Curator — консольный инструмент на Python для автоматизации разбора и организации коллекции аудиокниг.
> **Portfolio snapshot.** Проект показывает полный файловый pipeline: сканирование коллекции, извлечение тегов, AI-обогащение, нормализацию структуры и формирование `metadata.json` для дальнейшей интеграции.
![Рабочий сценарий AudiobookOrganizer](docs/images/overview.png)
![Рабочий сценарий BookFlow Curator](docs/images/overview.png)
Проект сканирует папки с аудиофайлами, извлекает метаданные (теги, длительность, главы), при необходимости дополняет их через LLM (OpenRouter), переименовывает каталоги по единому формату и формирует структурированную библиотеку с `metadata.json`.
@@ -26,12 +26,12 @@ AudiobookOrganizer — консольный инструмент на Python д
## Структура проекта
- `audiobookorganizer.py` — основной исполняемый файл, содержит:
- `bookflow_curator.py` — основной исполняемый файл, содержит:
- конфигурацию (`ConfigurationManager`, `SettingsManager`),
- UI и меню (`UIManager`, `InteractiveMenu`),
- AI-слой (`AITextProcessor`),
- сканер/извлечение/организацию (`AudiobookScanner`, `AudiobookMetadataExtractor`),
- оркестратор (`AudiobookOrganizer`) и точку входа `main()`.
- оркестратор (`BookFlowCurator`) и точку входа `main()`.
- `README.md` — документация проекта.
## Требования
@@ -72,7 +72,7 @@ AUDIOBOOK_LIBRARY_PATH=./audiobooks
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
OPENROUTER_MODEL=deepseek/deepseek-chat-v3-0324:free
OPENROUTER_REFERER=https://github.com/dfofanov/repo
OPENROUTER_APP_TITLE=AudiobookOrganizer
OPENROUTER_APP_TITLE=BookFlow Curator
OPENROUTER_MAX_INPUT_CHARS=12000
# Форматы
@@ -86,13 +86,13 @@ SUPPORTED_TEXT_EXTENSIONS=txt,pdf,epub,mobi
AUDIOBOOK_SOURCE_API_KEY=
AUDIOBOOK_SOURCE_BASE_URL=
AUDIOBOOK_SOURCE_TIMEOUT=20
AUDIOBOOK_SOURCE_USER_AGENT=Mozilla/5.0 (compatible; AudiobookOrganizerBot/1.0)
AUDIOBOOK_SOURCE_USER_AGENT=Mozilla/5.0 (compatible; BookFlowCuratorBot/1.0)
```
## Запуск
```bash
python audiobookorganizer.py
python bookflow_curator.py
```
Далее сценарий такой:
@@ -139,8 +139,8 @@ python audiobookorganizer.py
## Рекомендованная структура локальных данных
```text
AudiobookOrganizer/
├─ audiobookorganizer.py
bookflow-curator/
├─ bookflow_curator.py
├─ .env
├─ scan/ # входные неорганизованные аудиокниги
├─ output/ # структурированный вывод
@@ -154,7 +154,7 @@ class ConfigurationManager:
'model_name': os.getenv('OPENROUTER_MODEL', 'z-ai/glm-4.5-air:free'),
# Рекомендуемые заголовки для OpenRouter (не обязательны, но полезны для квот)
'referer': os.getenv('OPENROUTER_REFERER', 'https://github.com/dfofanov/repo'),
'app_title': os.getenv('OPENROUTER_APP_TITLE', 'AudiobookOrganizer')
'app_title': os.getenv('OPENROUTER_APP_TITLE', 'BookFlow Curator')
}
@property
@@ -168,7 +168,7 @@ class ConfigurationManager:
return {
'base_url': os.getenv('AUDIOBOOK_SOURCE_BASE_URL', 'https://audiobooks.example.com'),
'timeout': int(os.getenv('AUDIOBOOK_SOURCE_TIMEOUT', '20')),
'user_agent': os.getenv('AUDIOBOOK_SOURCE_USER_AGENT', 'Mozilla/5.0 (compatible; AudiobookOrganizerBot/1.0)')
'user_agent': os.getenv('AUDIOBOOK_SOURCE_USER_AGENT', 'Mozilla/5.0 (compatible; BookFlowCuratorBot/1.0)')
}
@@ -2230,7 +2230,7 @@ class AudiobookMetadataExtractor:
return False
# Заменяем заглушку оркестратора полной реализацией
class AudiobookOrganizer:
class BookFlowCurator:
"""Основной оркестратор процесса организации аудиокниг"""
def __init__(self):
self.ui_manager = UIManager()
@@ -2395,7 +2395,7 @@ async def main():
SUPPORTED_TEXT_EXTENSIONS = set(os.getenv('SUPPORTED_TEXT_EXTENSIONS', 'txt,pdf,epub,mobi').split(','))
# Создание оркестратора
orchestrator = AudiobookOrganizer()
orchestrator = BookFlowCurator()
# Создание консоли и интерактивного меню
console = Console()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 1.0 MiB

+1
View File
@@ -1,3 +1,4 @@
# Lists the Python packages required by this project.
InquirerPy>=0.3,<1
PyPDF2>=3,<4
openai>=1,<2