- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы. - Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов. - Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов. - Добавить тесты для нормализации URL в репозиторий RuTracker. - Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер. - Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
package entities
|
|
|
|
// AudioBook представляет аудиокнигу
|
|
type AudioBook struct {
|
|
Path string
|
|
Title string
|
|
MP3Files []string
|
|
CoverFile string
|
|
Description string
|
|
Metadata *AudioBookMetadata
|
|
}
|
|
|
|
// AudioBookMetadata метаданные аудиокниги
|
|
type AudioBookMetadata struct {
|
|
Tags []string `json:"tags"`
|
|
Chapters []Chapter `json:"chapters"`
|
|
Title string `json:"title"`
|
|
Subtitle string `json:"subtitle"`
|
|
Authors []string `json:"authors"`
|
|
Narrators []string `json:"narrators"`
|
|
Series []string `json:"series"`
|
|
Genres []string `json:"genres"`
|
|
PublishedYear *int `json:"publishedYear"`
|
|
PublishedDate *string `json:"publishedDate"`
|
|
Publisher *string `json:"publisher"`
|
|
Description string `json:"description"`
|
|
ISBN *string `json:"isbn"`
|
|
ASIN *string `json:"asin"`
|
|
Language string `json:"language"`
|
|
Explicit bool `json:"explicit"`
|
|
Abridged bool `json:"abridged"`
|
|
}
|
|
|
|
// Chapter представляет главу аудиокниги
|
|
type Chapter struct {
|
|
ID int `json:"id"`
|
|
Start float64 `json:"start"`
|
|
End float64 `json:"end"`
|
|
Title string `json:"title"`
|
|
Duration int `json:"duration"` // в секундах
|
|
}
|