- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы. - Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов. - Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов. - Добавить тесты для нормализации URL в репозиторий RuTracker. - Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер. - Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
123 lines
5.4 KiB
Markdown
123 lines
5.4 KiB
Markdown
# Архитектура AudioBook Catalyst после рефакторинга
|
||
|
||
## Структура приложения
|
||
|
||
```
|
||
AudioBook Catalyst
|
||
├── Конфигурация
|
||
│ ├── Config struct (YAML)
|
||
│ └── HTTP клиенты (основной + OpenRouter)
|
||
│
|
||
├── Сканирование файлов
|
||
│ ├── scanAudioBooks() ✅ активно
|
||
│ ├── findMP3Files() ✅ активно
|
||
│ ├── findCoverFile() ✅ активно
|
||
│ └── findDescriptionFile() ✅ активно
|
||
│
|
||
├── RuTracker интеграция
|
||
│ ├── 🆕 RuTrackerClient класс ✅ НОВЫЙ
|
||
│ │ ├── NewRuTrackerClient()
|
||
│ │ ├── Search()
|
||
│ │ ├── DownloadTorrent()
|
||
│ │ └── GetTopicPage()
|
||
│ │
|
||
│ └── 🚫 Старые функции (закомментированы)
|
||
│ ├── authenticateRuTracker() ❌ устарело
|
||
│ ├── searchRuTracker() ❌ устарело
|
||
│ ├── parseAudioBookPage() ❌ устарело
|
||
│ └── ExtractAudiobookID() ❌ устарело
|
||
│
|
||
├── Обработка метаданных
|
||
│ ├── createMetadata() ✅ активно
|
||
│ ├── saveMetadata() ✅ активно
|
||
│ ├── downloadCover() ✅ активно
|
||
│ └── Парсеры (Authors, Narrators, Genres) ✅ активно
|
||
│
|
||
├── TUI интерфейс
|
||
│ ├── TUIManager ✅ активно
|
||
│ ├── Главное меню ✅ активно
|
||
│ ├── Тест RuTracker клиента ✅ НОВЫЙ
|
||
│ └── Настройки ✅ активно
|
||
│
|
||
└── Система логирования
|
||
├── Файловое логирование ✅ активно
|
||
├── TUI логирование ✅ активно
|
||
└── Цветной вывод ✅ активно
|
||
```
|
||
|
||
## Ключевые изменения
|
||
|
||
### ✅ Что работает
|
||
- **Новый RuTrackerClient**: Полностью функциональный объектно-ориентированный клиент
|
||
- **Совместимые функции**: Все функции работы с метаданными и файлами
|
||
- **TUI интерфейс**: Полностью работающий интерфейс с новым пунктом тестирования
|
||
- **Система логирования**: Без изменений, полностью функциональна
|
||
|
||
### 🚫 Что закомментировано
|
||
- **Старая авторизация**: Устаревшие методы authenticateRuTracker/authenticateWithoutToken
|
||
- **Старый поиск**: Функция searchRuTracker и связанные парсеры
|
||
- **OpenRouter интеграция**: Анализ HTML через AI (пока закомментирован)
|
||
|
||
### 🔄 Что нужно доработать
|
||
- Интеграция нового клиента в основной процесс обработки
|
||
- Замена временного кода в processAudioBook()
|
||
- Тестирование всех функций нового клиента
|
||
|
||
## API нового RuTrackerClient
|
||
|
||
### Создание клиента
|
||
```go
|
||
client, err := NewRuTrackerClient(username, password)
|
||
```
|
||
|
||
### Поиск торрентов
|
||
```go
|
||
results, err := client.Search("поисковый запрос")
|
||
```
|
||
|
||
### Получение информации о теме
|
||
```go
|
||
pageContent, err := client.GetTopicPage(topicID)
|
||
```
|
||
|
||
### Загрузка торрент-файла
|
||
```go
|
||
torrentData, err := client.DownloadTorrent(downloadURL)
|
||
```
|
||
|
||
## Преимущества новой архитектуры
|
||
|
||
### 🏗️ Структурированность
|
||
- Четкое разделение ответственности
|
||
- Объектно-ориентированный подход
|
||
- Типизированные структуры данных
|
||
|
||
### 🚀 Производительность
|
||
- Переиспользование HTTP соединений
|
||
- Параллельная обработка страниц результатов
|
||
- Оптимизированные регулярные выражения
|
||
|
||
### 🛡️ Надежность
|
||
- Автоматическое переключение между зеркалами
|
||
- Правильная обработка кодировки CP1251
|
||
- Централизованная обработка ошибок
|
||
|
||
### 🔧 Расширяемость
|
||
- Легко добавлять новые методы
|
||
- Модульная архитектура
|
||
- API для интеграции с другими компонентами
|
||
|
||
## Состояние проекта
|
||
|
||
✅ **Компилируется без ошибок**
|
||
✅ **Запускается и работает TUI**
|
||
✅ **Новый RuTracker клиент готов к использованию**
|
||
🔄 **Требует интеграции в основной процесс обработки**
|
||
|
||
## Следующие шаги
|
||
|
||
1. Интеграция нового клиента в processAudioBook()
|
||
2. Тестирование поиска и загрузки метаданных
|
||
3. Валидация работы с реальными данными RuTracker
|
||
4. Удаление закомментированного кода после успешного тестирования
|