master
AudiobookOrganizer
AudiobookOrganizer — консольный инструмент на Python для автоматизации разбора и организации коллекции аудиокниг.
Проект сканирует папки с аудиофайлами, извлекает метаданные (теги, длительность, главы), при необходимости дополняет их через LLM (OpenRouter), переименовывает каталоги по единому формату и формирует структурированную библиотеку с metadata.json.
Что умеет
- Сканирует дерево каталогов и находит поддерживаемые аудиофайлы.
- Извлекает метаданные из аудио через
mutagen(если библиотека установлена). - Собирает сводную информацию по папке-книге: количество файлов, длительность, главы.
- Генерирует/обновляет
metadata.jsonв папках книг. - Переименовывает папки книг в унифицированный формат.
- Организует выходную структуру по шаблону:
AUDIOBOOK_OUTPUT_PATH/<Буква>/<Автор>/<Книга>/...
- Поддерживает AI-обогащение метаданных через OpenRouter (
OPENROUTER_API_KEYобязателен в текущем UI-наборе настроек). - Показывает интерактивный интерфейс в терминале (
rich), включая логи и прогресс.
Текущий статус команд меню
В главном меню сейчас доступны 3 пункта:
Организация библиотеки аудиокниг— реализован (основной рабочий сценарий).Извлечение метаданных— заглушка (каркас без полноценной бизнес-логики).Создание каталога— заглушка (каркас без полноценной бизнес-логики).
Структура проекта
audiobookorganizer.py— основной исполняемый файл, содержит:- конфигурацию (
ConfigurationManager,SettingsManager), - UI и меню (
UIManager,InteractiveMenu), - AI-слой (
AITextProcessor), - сканер/извлечение/организацию (
AudiobookScanner,AudiobookMetadataExtractor), - оркестратор (
AudiobookOrganizer) и точку входаmain().
- конфигурацию (
README.md— документация проекта.
Требования
- Python 3.10+ (рекомендуется 3.11).
- ОС: Windows/Linux/macOS (основной сценарий проверен под Windows).
- Доступ в интернет для AI-функций (OpenRouter).
Установка
Из корня проекта:
python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install python-dotenv PyPDF2 python-docx rich openai requests mutagen InquirerPy
InquirerPyиmutagenв коде обработаны как опциональные; без них приложение запускается, но часть возможностей будет упрощена.
Настройка .env
Создайте файл .env в корне проекта. Минимально:
# Обязательное (в текущей валидации SettingsManager)
OPENROUTER_API_KEY=your_openrouter_api_key
# Базовые пути
AUDIOBOOK_SCAN_PATH=./scan
AUDIOBOOK_OUTPUT_PATH=./output
AUDIOBOOK_LIBRARY_PATH=./audiobooks
# OpenRouter
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_MAX_INPUT_CHARS=12000
# Форматы
SUPPORTED_AUDIO_EXTENSIONS=mp3,m4a,m4b,opus,ogg,flac
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)
Запуск
python audiobookorganizer.py
Далее сценарий такой:
- Открывается интерфейс настроек (
SettingsManager) с валидацией. - После подтверждения появляется главное меню.
- Выберите
Организация библиотеки аудиокниг.
Как устроена обработка
- Сканирование
AUDIOBOOK_SCAN_PATHна поддерживаемые аудиоформаты. - Для каждой папки с аудио:
- чтение метаданных,
- расчет длительностей и глав,
- попытка AI-обогащения,
- генерация
metadata.json, - переименование папки,
- копирование/перенос в выходную структуру.
- Сохранение итогового дерева в JSON-отчет вида
directory_tree_YYYYMMDD_HHMMSS.json.
Управление во время долгой обработки
Пробел— пауза/продолжение.Q— прервать текущий процесс.
Формат создаваемого metadata.json
Проект формирует файл примерно с такими полями:
tagschapters(id,start,end,title)title,subtitleauthors,narrators,series,genrespublishedYear,publishedDate,publisherdescriptionisbn,asin,language,explicit,abridged
Ограничения и важные замечания
- Текущая AI-обработка отправляет в LLM в основном имя папки; качество обогащения зависит от нейминга исходных каталогов.
- Пункты меню
Извлечение метаданныхиСоздание каталогапока не реализованы полностью. - При наличии конфликтов имен целевых папок может выполняться удаление существующей папки перед копированием.
- Некоторые функции ориентированы на структуру русскоязычных метаданных и названий.
Рекомендованная структура локальных данных
AudiobookOrganizer/
├─ audiobookorganizer.py
├─ .env
├─ scan/ # входные неорганизованные аудиокниги
├─ output/ # структурированный вывод
└─ audiobooks/ # отчеты и служебные результаты
Планы развития
- Доработать команды
extract_metadataиcreate_catalogдо полноценных сценариев. - Вынести зависимости в
requirements.txt. - Добавить тесты для модулей метаданных и безопасного переименования/копирования.
- Расширить dry-run режим (предпросмотр изменений без файловых операций).
Description
AudiobookOrganizer — консольный инструмент на Python для автоматизации разбора и организации коллекции аудиокниг.
Languages
Python
100%