More-like rails (real personalization beyond genre): - db.random_owned_titles() seeds from a few random owned titles (with tmdb_id); client.recommendations() + engine.recommendations() (cached + owned-annotated) fetch TMDB recs. New /discover/morelike interleaves movie/show seeds (max 3 rails) and the page prepends them, pre-filled, above the rail stack with a gradient 'for you' title. Hero trailer (cheap big visual win): - client.video_trailer() (light /videos call, Trailer over Teaser) + engine .trailer() (day-cached) + /discover/trailer. Hero gets a 'Trailer' button that opens an in-app YouTube lightbox (autoplay, Esc/backdrop close, pauses the slideshow) — nothing leaves SoulSync. Tests: +11 (recs parse/annotate/cache, trailer pick+fallback+cache, random owned seeds owned-with-tmdb only, /discover/trailer + /discover/morelike endpoints). Enrichment + API suites: 114 passed. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| music_database.py | ||
| personalized_schema.py | ||
| video_database.py | ||
| video_schema.sql | ||