Добавить тесты репозитория файловой системы и реализовать функциональность журналирования файлов.
- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы. - Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов. - Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов. - Добавить тесты для нормализации URL в репозиторий RuTracker. - Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер. - Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
This commit is contained in:
122
ARCHITECTURE.md
Normal file
122
ARCHITECTURE.md
Normal file
@@ -0,0 +1,122 @@
|
||||
# Архитектура 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. Удаление закомментированного кода после успешного тестирования
|
||||
Reference in New Issue
Block a user