mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-02-09 23:55:10 -05:00
feat: pre-build playlist cache and make matching interval configurable
- Pre-build playlist items cache during track matching for instant serving - Add PreBuildPlaylistItemsCacheAsync() to SpotifyTrackMatchingService - Combines local Jellyfin tracks + external matched tracks in correct Spotify order - Saves to both Redis and file cache for persistence across restarts - Change matching interval from hardcoded 30 minutes to configurable (default: 24 hours) - Add SPOTIFY_IMPORT_MATCHING_INTERVAL_HOURS environment variable - Set to 0 to only run once on startup (manual trigger still works) - Add endpoint usage files to .gitignore - Update documentation in README and .env.example Rationale: Spotify playlists like Discover Weekly update once per week, so running every 24 hours is more than sufficient. Pre-building the cache eliminates slow 'on the fly' playlist building. All 225 tests pass.
This commit is contained in:
@@ -401,11 +401,14 @@ SPOTIFY_IMPORT_PLAYLIST_NAMES=Release Radar,Discover Weekly
|
||||
- Caches the list of missing tracks in Redis + file cache
|
||||
- Runs automatically on startup (if needed) and every 5 minutes during the sync window
|
||||
|
||||
3. **Allstarr Matches Tracks** (2 minutes after startup, then every 30 minutes)
|
||||
3. **Allstarr Matches Tracks** (2 minutes after startup, then configurable interval)
|
||||
- For each missing track, searches your streaming provider (SquidWTF, Deezer, or Qobuz)
|
||||
- Uses fuzzy matching to find the best match (title + artist similarity)
|
||||
- Rate-limited to avoid overwhelming the service (150ms delay between searches)
|
||||
- Caches matched results for 1 hour
|
||||
- **Pre-builds playlist items cache** for instant serving (no "on the fly" building)
|
||||
- Default interval: 24 hours (configurable via `SPOTIFY_IMPORT_MATCHING_INTERVAL_HOURS`)
|
||||
- Set to 0 to only run once on startup (manual trigger via admin UI still works)
|
||||
|
||||
4. **You Open the Playlist in Jellyfin**
|
||||
- Allstarr intercepts the request
|
||||
|
||||
Reference in New Issue
Block a user