fix(library): parallelize cover processing and retry missing artwork
ci / api / api (push) Successful in 50s
ci / db / db (push) Successful in 1m1s

This commit is contained in:
mrleo1nid committed 2026-10-23 02:02:36 +03:00
1 parent eed7038109
commit 0a4cd4bff1
5 files changed
+259 -28

No files matched your search

+10
View File
@@ -172,6 +172,16 @@ lower-case, `ё → е`, удаление пунктуации, схлопыва
сгенерированный из цвета. Конвертируются в WebP 64/300/1200 px в `/srv/pipu/cache/covers/`, вычисляется
палитра из 3 цветов (k-means по пикселям; `cover_colors`) — для ambient-фона, цветов кнопки волны и плейсхолдеров.
Поиск файлов в папке не зависит от регистра: `cover.jpg`, `cover.jpeg`, `Cover.png`,
а также `folder`, `front`, `album`, `albumart` с расширениями JPG/JPEG/PNG/WebP.
Картинка должна лежать рядом с аудиофайлом; глубина папки относительно корня источника не важна.
Папки, исключённые из сканирования, не используются для поиска обложек.
После успешного скана (в том числе обычного, без перечитывания тегов) альбомы без обложек
проверяются повторно. Обработчик запускается также при старте API, готовит до четырёх альбомов
одновременно и сохраняет готовые обложки по мере обработки. Одинаковые изображения используют
общие файлы кэша; ошибки чтения и конвертации остаются для повтора при следующем запуске обработчика.
Клиент получает ссылку на готовый WebP через API каталога; nginx раздаёт файл из кэша.
## Поиск
Meilisearch, индексы: