mirror of https://github.com/Nezreka/SoulSync.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
1.1 KiB
25 lines
1.1 KiB
"""Standardized personalized-playlist subsystem.
|
|
|
|
Replaces the patchwork of `PersonalizedPlaylistsService` (computed-on-
|
|
demand views, no persistence) + `discovery_curated_playlists` (ID-only
|
|
storage) + `curated_seasonal_playlists` (full storage) with a single
|
|
unified abstraction:
|
|
|
|
- ``manager.PersonalizedPlaylistManager`` — owns the storage layer +
|
|
generator dispatch + refresh lifecycle.
|
|
- ``specs.PlaylistKindSpec`` — one spec per playlist KIND
|
|
(``hidden_gems``, ``time_machine``, ``seasonal_mix``, etc.) with
|
|
generator function, default config, variant resolver, and display-
|
|
name template.
|
|
- ``types.Track`` / ``types.PlaylistConfig`` — shared dataclasses.
|
|
|
|
The legacy ``PersonalizedPlaylistsService`` keeps its existing
|
|
generator implementations — they're called BY the manager rather than
|
|
duplicated. This means:
|
|
- The improved diversity logic / popularity thresholds / blacklist
|
|
filtering all stays.
|
|
- New behavior layered on top: persistence, refresh-on-demand,
|
|
per-playlist user-tweakable config, staleness windows, listening-
|
|
history cross-reference, seeded randomization.
|
|
"""
|