From 107f57d2cc2b6325b3d96e7006b360d6da4c0b36 Mon Sep 17 00:00:00 2001 From: Dmitriy Fofanov Date: Fri, 20 Feb 2026 00:48:41 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D1=83=D1=82=D0=B8=D0=BB=D0=B8=D1=82=D1=8B=20=D0=B2=20README?= =?UTF-8?q?.md=20=D0=B4=D0=BB=D1=8F=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=20?= =?UTF-8?q?=D1=82=D0=BE=D1=87=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BE=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=84=D1=83=D0=BD=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D0=B8=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B0=D1=83=D0=B4=D0=B8=D0=BE=D0=BA=D0=BD=D0=B8=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 214ffa6..5717d12 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,20 @@ [![](https://img.shields.io/gitea/issues/open/fofanov/genaudiobookinfo?gitea_url=https://github.dfv24.com)](https://github.dfv24.com/fofanov/genaudiobookinfo/issues "Open Issues") [![](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT "License: MIT") -Консольная утилита на Go для сканирования каталогов с аудиокнигами и извлечения метаданных (название, автор, жанр, описание, обложка и т.д.) из аудиофайлов. +Go-утилита для обработки аудиокниг: сканирует папки, извлекает/нормализует теги, ищет данные через TorrAPI, (опционально) валидирует через OpenRouter, генерирует metadata.json (AudioBookShelf) и раскладывает по структуре. + +**Что делает программа:** + +1. **Сканирует** каталог и находит папки с аудиофайлами (MP3, M4B, FLAC и др.) +2. **Извлекает метаданные** из тегов первого аудиофайла (автор, название, жанр, год) +3. **Исправляет кодировку** — автоматически устраняет mojibake в тегах (UTF-8 → Latin-1) +4. **Валидирует метаданные** через LLM (OpenRouter) — нормализует формат автора, убирает мусор из названия +5. **Ищет аудиокнигу** на торрент-трекерах через TorrAPI (RuTracker, Kinozal, NoNameClub, RuTor) — получает описание, постер, жанр +6. **Скачивает обложку** (`cover.jpg`) из найденной раздачи +7. **Формирует `metadata.json`** в формате [AudioBookShelf](https://www.audiobookshelf.org/) с главами, нарраторами, серией +8. **Организует файлы** в структурированную иерархию: `result/<Буква>/<Автор>/<Автор - Название [Год]>/` + +Обработка ведётся **параллельно** (настраиваемый пул воркеров) с отображением прогресс-бара и поддержкой graceful shutdown. ## Архитектура