1
1
Files
audio-catalyst/ARCHITECTURE.md
Dmitriy Fofanov 72a66f1664 Добавить тесты репозитория файловой системы и реализовать функциональность журналирования файлов.
- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы.
- Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов.
- Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов.
- Добавить тесты для нормализации URL в репозиторий RuTracker.
- Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер.
- Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
2025-09-29 20:40:05 +03:00

5.4 KiB
Raw Blame History

Архитектура 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

Создание клиента

client, err := NewRuTrackerClient(username, password)

Поиск торрентов

results, err := client.Search("поисковый запрос")

Получение информации о теме

pageContent, err := client.GetTopicPage(topicID)

Загрузка торрент-файла

torrentData, err := client.DownloadTorrent(downloadURL)

Преимущества новой архитектуры

🏗️ Структурированность

  • Четкое разделение ответственности
  • Объектно-ориентированный подход
  • Типизированные структуры данных

🚀 Производительность

  • Переиспользование HTTP соединений
  • Параллельная обработка страниц результатов
  • Оптимизированные регулярные выражения

🛡️ Надежность

  • Автоматическое переключение между зеркалами
  • Правильная обработка кодировки CP1251
  • Централизованная обработка ошибок

🔧 Расширяемость

  • Легко добавлять новые методы
  • Модульная архитектура
  • API для интеграции с другими компонентами

Состояние проекта

Компилируется без ошибок Запускается и работает TUI Новый RuTracker клиент готов к использованию 🔄 Требует интеграции в основной процесс обработки

Следующие шаги

  1. Интеграция нового клиента в processAudioBook()
  2. Тестирование поиска и загрузки метаданных
  3. Валидация работы с реальными данными RuTracker
  4. Удаление закомментированного кода после успешного тестирования