feat(api): library sources, scanner and catalog (M2)
ci / api / api (push) Successful in 26s
ci / mobile / mobile (Metro-бандл Android) (push) Failing after 22s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 37s
ci / ts / ts (packages + web) (push) Successful in 51s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 53s
ci / api / api (push) Successful in 26s
ci / mobile / mobile (Metro-бандл Android) (push) Failing after 22s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 37s
ci / ts / ts (packages + web) (push) Successful in 51s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 53s
- schema for sources, path patterns, media files, artists, albums, tracks, genres (migration 00003) - path patterns (RE2 with named groups, skip), merge with tags by source priority, fallbacks from the file name and folder, name normalization and multi-artist split - scanner: walk, skip unchanged files by size and mtime, ffprobe in 8 workers with a single catalog writer, renames by content hash keep the track, duplicates fold into one track with the best file as primary, missing files are kept 30 days - storage-agent mounts NFS with validated server, export and an option whitelist, no shell; test mount counts audio files - admin API: sources CRUD, connection test, patterns with preview, scan, library status, file errors, host folder picker; scheduled scans and health checks; mounts are restored on start - catalog API: artist, artist albums, album with tracks, track - api image is alpine with ffmpeg for ffprobe Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ab092def54
commit
c583991d14
24 files changed
+7467
-84
No files matched your search
+3
-2
@@ -197,7 +197,7 @@ CREATE TABLE albums (
|
||||
id uuid PRIMARY KEY,
|
||||
title text NOT NULL,
|
||||
title_norm text NOT NULL,
|
||||
album_artist_id uuid REFERENCES artists(id),
|
||||
album_artist_id uuid NOT NULL REFERENCES artists(id), -- без тегов — исполнитель трека или «Unknown artist»
|
||||
year int,
|
||||
cover_path text, -- путь в кэше обложек (/cache/covers/<hash>.webp)
|
||||
cover_colors text[], -- палитра обложки (3 цвета: доминирующий, второй, акцент) — для ambient-фона,
|
||||
@@ -208,7 +208,8 @@ CREATE TABLE albums (
|
||||
CREATE TABLE tracks (
|
||||
id uuid PRIMARY KEY,
|
||||
title text NOT NULL,
|
||||
album_id uuid REFERENCES albums(id),
|
||||
title_norm text NOT NULL, -- ключ поиска дублей: (album_id, title_norm, duration ±2 с)
|
||||
album_id uuid NOT NULL REFERENCES albums(id),
|
||||
disc_no int, track_no int,
|
||||
year int,
|
||||
duration_ms int NOT NULL,
|
||||
|
||||
Reference in new issue
Block a user