63ab25ca91
parse SPOTIFY_IMPORT_PLAYLIST_NAMES env var
2026-01-31 19:53:03 -05:00
628f845e77
add missing SPOTIFY_IMPORT_PLAYLIST_NAMES env var
2026-01-31 19:49:57 -05:00
8ef5ee7d8f
fix background service to use configured playlist names
2026-01-31 19:44:47 -05:00
fb3ea1b876
fix playlist names format in env example
2026-01-31 19:42:11 -05:00
3f3e1b708d
add configurable playlist names env var
2026-01-31 19:37:10 -05:00
bc4faead74
fix playlist names to use underscores for filenames
2026-01-31 19:35:55 -05:00
6ffa2a3277
use hardcoded playlist names for Spotify sync
2026-01-31 19:34:45 -05:00
c3c01b5559
check every minute for missing tracks files
2026-01-31 19:33:02 -05:00
47d59ec0f5
search last 24 hours for missing tracks files in manual sync
2026-01-31 19:30:01 -05:00
e7f72cd87a
add manual Spotify sync trigger endpoint
2026-01-31 19:12:34 -05:00
6d15d02f16
add Spotify Import environment variables to docker-compose.yml
2026-01-31 18:11:25 -05:00
3137cc4657
fix: remove duplicate Spotify playlist interception code with compilation error
2026-01-31 18:07:22 -05:00
18e700d6a4
Fix compilation errors and remove unused code
2026-01-31 18:03:55 -05:00
2420cd9a23
Fix SpotifyMissingTracksFetcher to work with ID-based configuration and add detailed logging
2026-01-31 18:00:24 -05:00
65d6eb041a
Refactor Spotify playlist injection to use playlist IDs instead of names
2026-01-31 17:59:01 -05:00
103808f079
Add logging to every ProxyRequest call
2026-01-31 17:54:51 -05:00
cd29e0de6c
Add debug logging to diagnose Spotify configuration issue
2026-01-31 17:21:14 -05:00
bd480be382
Fix Spotify playlist interception in ProxyRequest with detailed logging
2026-01-31 17:17:59 -05:00
293f6f5cc4
Add detailed logging to GetPlaylistItems interception
2026-01-31 17:16:10 -05:00
e9b893eb3e
Add detailed Spotify Import configuration logging
2026-01-31 17:14:24 -05:00
51694a395d
Add comprehensive debug logging for Spotify playlist interception
2026-01-31 17:09:28 -05:00
32166061ef
Add Spotify playlist interception in ProxyRequest method
2026-01-31 17:07:31 -05:00
a8845a9ef3
Change GetPlaylistItems route order to 1 and add debug logging
2026-01-31 17:05:56 -05:00
e873cfe3bf
Fix JsonDocument.RootElement access in GetPlaylistTracks
2026-01-31 17:03:36 -05:00
43718eaefc
Remove duplicate GetPlaylistItems route and add constructor logging
2026-01-31 17:02:35 -05:00
5f9451f5b4
Add playlist parsing from env var and debug logging for Spotify feature
2026-01-31 17:00:16 -05:00
2c3ef5c360
Fix Spotify playlist injection: add dedicated route, startup fetch, and clarify config
2026-01-31 16:57:52 -05:00
4ba2245876
refactor: optimize playlist interception order
...
- Check external playlists first (fast check)
- Only check Spotify if enabled (avoid extra API call)
- Fall back to regular Jellyfin playlists
- Maintains correct behavior for all playlist types
2026-01-31 16:54:39 -05:00
c117fa41f6
fix: add route to intercept playlist items requests
...
- Add GetPlaylistItems route with Order=5 (before catch-all)
- Intercepts /playlists/{id}/items requests
- Routes to GetPlaylistTracks for Spotify playlist handling
2026-01-31 16:54:01 -05:00
2b078453b2
refactor: reuse Jellyfin settings for Spotify feature
...
- Remove duplicate JellyfinUrl and ApiKey from SpotifyImportSettings
- Use existing JELLYFIN_URL and JELLYFIN_API_KEY settings
- Simplify configuration - no duplicate settings needed
- Update documentation and .env.example
2026-01-31 16:52:26 -05:00
0ee1883ccb
fix: intercept existing Jellyfin Spotify playlists
...
- Check playlist name instead of creating virtual playlists
- Intercept playlist items request for Spotify playlists
- Fill empty playlists with matched tracks from providers
- Works with existing Jellyfin Spotify Import plugin playlists
2026-01-31 16:50:16 -05:00
8912758b5e
feat: spotify playlist injection
...
- Add SpotifyImportSettings configuration model
- Create SpotifyMissingTracksFetcher background service
- Inject virtual Spotify playlists into search results
- Auto-match tracks from external providers
- Update README with feature documentation
- Configure sync window and playlist settings
2026-01-31 16:43:49 -05:00
35d5249843
chore: add sampleMissingPlaylists to gitignore
2026-01-31 12:09:16 -05:00
fa9739bfaa
docs: update README
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
2026-01-31 11:16:00 -05:00
62bfb367bc
docs: update README
CI / build-and-test (push) Has been cancelled
2026-01-31 11:15:44 -05:00
0ba51e2b30
fix: improve auth, search, and stability
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
2026-01-31 01:14:53 -05:00
6f91361966
refactor: use token-based fuzzy matching for flexible search
CI / build-and-test (push) Has been cancelled
2026-01-31 01:03:14 -05:00
d4036095f1
fix: check all permutations of title/artist/album in search scoring
2026-01-31 01:00:56 -05:00
6620b39357
fix: remove score filtering, add combined title+artist matching
2026-01-31 01:00:00 -05:00
dcaa89171a
refactor: change external suffix from H to S (SquidWTF)
2026-01-31 00:50:55 -05:00
1889dc6e19
fix: gracefully skip malformed playlists instead of failing all endpoints
2026-01-31 00:47:59 -05:00
615ad58bc6
refactor: change external provider suffix from SW to H
2026-01-31 00:08:11 -05:00
6176777d0f
fix: forward client auth headers for login
2026-01-30 22:09:09 -05:00
a339574f05
fix: forward caching headers for client-side caching
...
Jellyfin sends ETag, Last-Modified, and Cache-Control headers that allow clients like Feishin to cache songs locally. Proxy now forwards these headers so clients don't re-download songs unnecessarily.
2026-01-30 22:02:35 -05:00
67b4fac64c
Merge branch 'main' into dev
CI / build-and-test (push) Has been cancelled
2026-01-30 14:12:05 -05:00
bc4e5d9442
fix: enable deduplication for cache mode
...
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
- Cache mode now registers downloaded songs in mappings
- Prevents duplicate downloads in cache mode
- Fixes wasted API calls and duplicate cache files
- Both cache and download modes benefit from deduplication
2026-01-30 14:11:47 -05:00
ada6653bd1
fix: enable deduplication for cache mode
...
- Cache mode now registers downloaded songs in mappings
- Prevents duplicate downloads in cache mode
- Only library scan/album download skip cache mode
- Fixes wasted API calls and duplicate cache files
2026-01-30 14:10:34 -05:00
2297455923
fix: prevent duplicate downloads by registering before releasing lock
...
- Race condition fixed where multiple threads could download same song
- RegisterDownloadedSongAsync now called before lock release
- Second thread finds registered mapping and skips download
- Eliminates duplicate files with (1), (2) suffixes
2026-01-30 13:38:36 -05:00
df8dbfc5e1
fix: prevent duplicate downloads by registering before releasing lock
...
- Move RegisterDownloadedSongAsync call before lock release
- Prevents race condition where multiple threads download same song
- Second thread now finds registered mapping before starting download
- Fixes duplicate files like 'Song (1).flac', 'Song (2).flac'
- Library scan and album download still happen after lock release
2026-01-30 13:37:42 -05:00
c2f843eabd
fix: add base64 encoded SquidWTF endpoints with automatic fallback
...
- Decode 6 endpoints at startup (triton, wolf, hund, maus, vogel, katze)
- Automatic fallback when endpoint fails
- All services cycle through endpoints on failure
- URLs stored as base64, decoded once in Program.cs
- Fixes search/download issues
2026-01-30 13:24:34 -05:00