feat: rename project to BookFlow Curator
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
# AudiobookOrganizer
|
||||
# BookFlow Curator
|
||||
|
||||
AudiobookOrganizer — консольный инструмент на Python для автоматизации разбора и организации коллекции аудиокниг.
|
||||
BookFlow Curator — консольный инструмент на Python для автоматизации разбора и организации коллекции аудиокниг.
|
||||
|
||||
> **Portfolio snapshot.** Проект показывает полный файловый pipeline: сканирование коллекции, извлечение тегов, AI-обогащение, нормализацию структуры и формирование `metadata.json` для дальнейшей интеграции.
|
||||
|
||||

|
||||

|
||||
|
||||
Проект сканирует папки с аудиофайлами, извлекает метаданные (теги, длительность, главы), при необходимости дополняет их через 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,3 +1,4 @@
|
||||
# Lists the Python packages required by this project.
|
||||
InquirerPy>=0.3,<1
|
||||
PyPDF2>=3,<4
|
||||
openai>=1,<2
|
||||
|
||||
Reference in New Issue
Block a user