Files
GenAudioBookInfo/README.md
Dmitriy Fofanov 402ce7f4f1 Функция: реализованы консольный логгер и презентер для обработки аудиокниг
- Добавлен ConsoleLogger для подробного логирования этапов обработки аудиокниг в консоли.

- Введен ConsolePresenter для форматированного вывода результатов сканирования в консоль.

- Создан ProcessAudioBooksUseCase для обработки полного конвейера обработки аудиокниг, включая сканирование папок, извлечение метаданных, поиск торрентов и запись результатов.

- Реализована проверка LLM для улучшения метаданных.

- Добавлена ​​обработка ошибок и логирование на всех этапах обработки.
2026-02-20 00:35:43 +03:00

73 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GenAudioBookInfo
[![](https://goreportcard.com/badge/github.com/fofanov/genaudiobookinfo)](https://goreportcard.com/report/github.com/fofanov/genaudiobookinfo "Go Report Card")
[![](https://pkg.go.dev/badge/github.com/fofanov/genaudiobookinfo?status.svg)](https://pkg.go.dev/github.com/fofanov/genaudiobookinfo "GoDoc")
[![](https://img.shields.io/github/release/fofanov/genaudiobookinfo.svg)](https://github.com/fofanov/genaudiobookinfo/releases/latest "GitHub release")
[![](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT "License: MIT")
Консольная утилита на Go для сканирования каталогов с аудиокнигами и извлечения метаданных (название, автор, жанр, описание, обложка и т.д.) из аудиофайлов.
## Архитектура
Проект построен по принципам **Clean Architecture**:
```
cmd/
genaudiobookinfo/
main.go ← Composition Root (точка входа, DI)
internal/
domain/
audiobook.go ← Сущности (entities)
ports.go ← Интерфейсы-порты (FolderLister, MetadataExtractor, Presenter)
usecase/
scan_audiobooks.go ← Бизнес-логика (Fan-Out / Fan-In, Worker Pool)
infrastructure/
folder_lister.go ← Реализация FolderLister (файловая система)
metadata_extractor.go ← Реализация MetadataExtractor (dhowden/tag)
audio_utils.go ← Утилиты (определение аудиоформатов)
presentation/
console_presenter.go ← Реализация Presenter (форматированный вывод)
```
### Паттерны
| Паттерн | Где применяется |
|---|---|
| **Clean Architecture** | Разделение на domain / usecase / infrastructure / presentation |
| **Dependency Injection** | Конструкторы принимают интерфейсы, Composition Root в `main.go` |
| **Ports & Adapters** | `domain/ports.go` — порты; infrastructure и presentation — адаптеры |
| **Fan-Out / Fan-In** | `usecase/scan_audiobooks.go` — параллельное сканирование через каналы |
| **Worker Pool** | Настраиваемое количество горутин-воркеров |
| **Graceful Shutdown** | Обработка SIGINT/SIGTERM через `context.Context` |
## Сборка
```bash
go build -o genaudiobookinfo.exe ./cmd/genaudiobookinfo/
```
## Использование
```bash
# Сканировать каталог с аудиокнигами
genaudiobookinfo.exe D:\Audiobooks
# Указать количество воркеров
genaudiobookinfo.exe -workers 8 D:\Audiobooks
# Установить таймаут
genaudiobookinfo.exe -timeout 60s D:\Audiobooks
```
## Поддерживаемые форматы
MP3, M4A, M4B, OGG, OPUS, FLAC, WMA, AAC, WAV
## Зависимости
- [dhowden/tag](https://github.com/dhowden/tag) — чтение метаданных аудиофайлов