Добавить тесты репозитория файловой системы и реализовать функциональность журналирования файлов.
- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы. - Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов. - Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов. - Добавить тесты для нормализации URL в репозиторий RuTracker. - Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер. - Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
This commit is contained in:
21
internal/domain/repositories/audiobook_repository.go
Normal file
21
internal/domain/repositories/audiobook_repository.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package repositories
|
||||
|
||||
import "audio-catalyst/internal/domain/entities"
|
||||
|
||||
// AudioBookRepository интерфейс для работы с аудиокнигами
|
||||
type AudioBookRepository interface {
|
||||
// ScanDirectory сканирует директорию на наличие аудиокниг
|
||||
ScanDirectory(rootDir string) ([]entities.AudioBook, error)
|
||||
|
||||
// SaveMetadata сохраняет метаданные аудиокниги
|
||||
SaveMetadata(bookPath string, metadata *entities.AudioBookMetadata) error
|
||||
|
||||
// DownloadCover загружает обложку по URL
|
||||
DownloadCover(coverURL, bookPath string) error
|
||||
|
||||
// RenameBookFolder переименовывает папку аудиокниги
|
||||
RenameBookFolder(oldPath, newBaseName string) (string, error)
|
||||
|
||||
// OrganizeBookFolder перемещает папку книги в библиотеку organized: <root>/<Letter>/<Author>/<Book>
|
||||
OrganizeBookFolder(bookPath, authorFullName, targetRoot string) (string, error)
|
||||
}
|
||||
12
internal/domain/repositories/config_repository.go
Normal file
12
internal/domain/repositories/config_repository.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package repositories
|
||||
|
||||
import "audio-catalyst/internal/domain/entities"
|
||||
|
||||
// ConfigRepository интерфейс для работы с конфигурацией
|
||||
type ConfigRepository interface {
|
||||
// Load загружает конфигурацию из файла
|
||||
Load(filename string) (*entities.Config, error)
|
||||
|
||||
// Save сохраняет конфигурацию в файл
|
||||
Save(filename string, config *entities.Config) error
|
||||
}
|
||||
10
internal/domain/repositories/logger.go
Normal file
10
internal/domain/repositories/logger.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package repositories
|
||||
|
||||
// Logger интерфейс для логирования
|
||||
type Logger interface {
|
||||
Info(format string, args ...interface{})
|
||||
Debug(format string, args ...interface{})
|
||||
Warning(format string, args ...interface{})
|
||||
Error(format string, args ...interface{})
|
||||
Success(format string, args ...interface{})
|
||||
}
|
||||
21
internal/domain/repositories/rutracker_repository.go
Normal file
21
internal/domain/repositories/rutracker_repository.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package repositories
|
||||
|
||||
import "audio-catalyst/internal/domain/entities"
|
||||
|
||||
// RuTrackerRepository интерфейс для работы с RuTracker
|
||||
type RuTrackerRepository interface {
|
||||
// Login выполняет авторизацию
|
||||
Login() error
|
||||
|
||||
// Search выполняет поиск торрентов
|
||||
Search(query string, page int) ([]entities.Torrent, error)
|
||||
|
||||
// GetTopicMetadata получает метаданные со страницы темы
|
||||
GetTopicMetadata(topicID string) (*entities.RuTrackerResult, error)
|
||||
|
||||
// DownloadTorrent скачивает торрент файл
|
||||
DownloadTorrent(topicID string) ([]byte, error)
|
||||
|
||||
// Close закрывает соединение
|
||||
Close()
|
||||
}
|
||||
Reference in New Issue
Block a user