feat(cover,metadata): ffprobe extraction, cover placeholders, grid refresh, and audiobook search

- Replace music-metadata and mediainfo with @ffprobe-installer for all audio metadata extraction; remove mediainfo dependency
- Show BookCoverPlaceholder in all missing-cover locations: Similar/Series/Author Books carousel, cover editor panel, metadata search result cards, and metadata diff panel
- Extend BookRecommendation and SeriesBookRecommendation shared types with hasCover and authors; update recommendation and book repositories to supply them via parallel queries
- Fix cover refresh not updating in grid: BookCoverCard now merges refreshed BookDetail into the local BookCard and emits update:book; VirtualBookGrid forwards the event; Home, Series, Author, and Collection views wire the handler so covers update without a page reload
- Add audiobook covers checkbox to the Online Search drawer so users can toggle between square and portrait cover searches; result thumbnails and loading skeletons adapt their aspect ratio to match the selection
This commit is contained in:
neon
2026-05-10 23:14:11 +00:00
parent ea998b8bd2
commit 57d91ebea1
25 changed files with 1491 additions and 494 deletions
+2 -2
View File
@@ -43,6 +43,8 @@
"@fastify/helmet": "^13.0.2",
"@fastify/multipart": "^10.0.0",
"@fastify/static": "^9.1.3",
"@ffmpeg-installer/ffmpeg": "^1.1.0",
"@ffprobe-installer/ffprobe": "^2.1.2",
"@nestjs/common": "^11.1.19",
"@nestjs/config": "^4.0.4",
"@nestjs/core": "^11.1.19",
@@ -66,9 +68,7 @@
"fastest-levenshtein": "^1.0.16",
"fastify": "^5.8.5",
"jose": "^6.2.3",
"mediainfo.js": "^0.3.7",
"ms": "^2.1.3",
"music-metadata": "^11.12.3",
"mysql2": "^3.22.3",
"nestjs-pino": "^4.6.1",
"node-unrar-js": "^2.0.2",