TheGru 161 Posted 18 hours ago Author Posted 18 hours ago On 4/2/2026 at 10:32 AM, Iceburnmarko said: Read through all the comments , first what an excellent plug-in…. One thing I was thinking, could it be possible to add “JustWatch api” into it. Thinking to capture what ppl watched / like / hate outside of emby. Unfortunately that api is very expensive
TheGru 161 Posted 6 hours ago Author Posted 6 hours ago Aperture v0.7.1 Release Notes This release introduces Movie Collection Gap Analysis — a new admin tool that compares TMDb movie collections against your library to surface missing titles — plus Seerr request options so you can pick your Radarr/Sonarr server, quality profile, and root folder before submitting a request. Baseline: follows v0.7.0 (commit 6893d05). Commit range: 6893d05..94337ae (8 commits). At a glance Theme What shipped Gap Analysis Admin page comparing TMDb collections to your library; background scan persists all parts with library + Seerr status; collection-level sort & filter; movie detail modal with in-app Seerr requests TMDb Collection Cache Persistent tmdb_collection_cache table avoids repeated TMDb API calls for the same collection data Seerr Request Options Choose Radarr/Sonarr server, root folder, quality profile, and language profile before submitting requests — wired into Discovery, Person Detail, Top Picks, My Requests, and Gap Analysis Summary for users Gap Analysis is available in left nav menu under Admin → Gap Analysis. Run a scan, and Aperture fetches every TMDb movie collection referenced by your library, then shows which titles you own, which are already in Seerr's pipeline, and which are still missing. Sort collections by most missing, most complete, or name. Filter by minimum missing count with a slider to focus on the biggest gaps. Click any poster to open a detail modal with backdrop, metadata, and a Request via Seerr button — no need to leave Aperture. Request options dialog — when requesting through Seerr from anywhere in Aperture, you now pick the destination server, root folder, and quality profile. Bulk requests (select all missing in a collection, or multi-select across collections) go through the same flow. Movie Collection Gap Analysis What it is For every movie in your library that belongs to a TMDb collection (e.g. The Dark Knight Collection, Alien Collection), Aperture fetches the full collection and checks which released parts you own, which are in Seerr (requested/processing/available), and which are missing. Collections where all missing parts are already covered by Seerr are hidden entirely. How it works Background scan (refresh-library-gaps job): fetches TMDb collection data (cached in tmdb_collection_cache), cross-references your library and Seerr, and persists every released part with in_library and seerr_status into gap_analysis_results. Display path is pure SQL — zero Seerr or TMDb HTTP calls at page-load time. Fast even with hundreds of collections. UI groups results into collapsible collection cards with a responsive MoviePoster grid. Status overlays show "In Library", "Requested", "Processing", etc. Key features Collection-level sort: Most missing, Most complete, Name A–Z. Min-missing slider: hide collections with fewer than N missing titles. Search: filter by title or collection name. Bulk select + request: select individual posters or all missing in a collection, then request via Seerr with your chosen options. Detail modal: click any poster to see the TMDb detail view with backdrop, cast, overview, and request button. Technical summary Core module: packages/core/src/gap-analysis/index.ts — runLibraryGapAnalysis, getGapCollectionSummaries, listGapResults, getGapCollectionParts (all pure SQL reads). TMDb cache: packages/core/src/tmdb/collection-cache.ts — upsertCollectionCache, getCachedCollectionDataBatch, fetchCollectionDataAndCache. API routes: apps/api/src/routes/gap-analysis/index.ts — GET /latest, GET /results, GET /collection-parts, POST /refresh, POST /request. Job: refresh-library-gaps registered in jobConfig and wired in the executor. Seerr Request Options When submitting a request through Seerr, a new RequestSeerrOptionsDialog lets you choose: Server (Radarr or Sonarr instance) Root folder Quality profile Language profile (Sonarr) The dialog is wired into every request flow: Discovery cards/list items, Person Detail gap rows, Top Picks preview, My Requests, and Gap Analysis. The Seerr provider now exposes listRadarrServers, getRadarrServerDetails, listSonarrServers, getSonarrServerDetails, and batchGetMediaStatus. Database migrations Run your usual migration command so these apply in order: Migration Purpose 0106_gap_analysis.sql gap_analysis_runs and gap_analysis_results tables; source column on discovery_requests 0107_tmdb_collection_cache.sql tmdb_collection_cache table for persistent TMDb collection data 0108_gap_results_status.sql in_library and seerr_status columns on gap_analysis_results; wipes prior runs due to schema change Update instructions For Docker users docker compose pull docker compose up -d Database migrations run on startup (or use your usual pnpm db:migrate / deployment process). Operator checklist Migrate the database — the three new migrations must apply before starting the updated API. TMDb API key must be configured (Admin → Settings) for gap analysis to work. Seerr must be configured and enabled for the request flow. Without Seerr, gap analysis still shows owned vs missing but the request buttons are disabled. Run an analysis — go to Admin → Gap Analysis and click "Run analysis" to populate the initial snapshot. Re-run after syncing new movies. API quick reference Gap Analysis: GET /api/admin/gap-analysis/latest, GET /api/admin/gap-analysis/results, GET /api/admin/gap-analysis/collection-parts, POST /api/admin/gap-analysis/refresh, POST /api/admin/gap-analysis/request. Seerr services: GET /api/seerr/radarr, GET /api/seerr/radarr/:serverId, GET /api/seerr/sonarr, GET /api/seerr/sonarr/:serverId. Batch status: POST /api/seerr/batch-status. Full changelog (commits since v0.7.0) eef6397 feat(seerr): add Radarr/Sonarr request options and batch media status abea84a feat(tmdb): add persistent collection cache and helper types 952acdb feat(core): add gap analysis engine with pre-computed Seerr status 2f55407 feat(api): add gap analysis REST routes and background job executor 03b275d feat(web): add Gap Analysis admin page with detail modal 12d4676 docs: add gap analysis section to admin guide and API reference 94337ae feat(web): replace row-level sort with collection sort and min-missing filter
TheGru 161 Posted 5 hours ago Author Posted 5 hours ago Good lord making this thing multi-language is a huge pain in the ass! 2
TheGru 161 Posted 1 hour ago Author Posted 1 hour ago 4 hours ago, TheGru said: Good lord making this thing multi-language is a huge pain in the ass! I am almost done, wrote some google translate scripts and i18n have made this a bit less painful... without Cursor and composer 2 fast for help I would not have ever done this.
TheGru 161 Posted 1 hour ago Author Posted 1 hour ago 10 minutes ago, TheGru said: I am almost done, wrote some google translate scripts and i18n have made this a bit less painful... without Cursor and composer 2 fast for help I would not have ever done this. 3090 hardcoded english strings
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now