01cd2f7711
Update README to use 'vi' instead of 'nano'
2026-01-30 03:17:02 -05:00
f558e4ba7f
Fix: Parse LRC format into individual lines for Feishin compatibility
...
Feishin expects lyrics as an array of {Start, Text} objects with timestamps
in ticks, not as a single LRC-formatted text block
2026-01-30 03:12:14 -05:00
c33180abd7
Fix: Parse LRC format into individual lines for Feishin compatibility
...
Feishin expects lyrics as an array of {Start, Text} objects with timestamps
in ticks, not as a single LRC-formatted text block
2026-01-30 03:00:55 -05:00
666aa8621a
Add lyrics support and fix multiple Jellyfin proxy issues
...
Features:
- Add LRCLIB lyrics integration with synced/plain lyrics support
- Add Redis cache logging at INFO level for visibility
- Register SquidWTFSettings to enable quality configuration
Fixes:
- Fix playback progress reporting by wrapping POST bodies correctly
- Fix cache cleanup by updating file access times on stream
- Fix Artists/{id}/Similar endpoint proxying
- Fix browse requests to pass full query string (recently added/played/etc)
- Fix nullable duration handling in lyrics endpoint
- Add ' - SW' suffix to external albums/artists
- Remove unused code and improve debugging
2026-01-30 02:29:44 -05:00
680454e76e
Clarify lyrics preference: synced lyrics preferred over plain
...
Already working correctly, just made the code clearer with explicit variable
2026-01-30 02:28:05 -05:00
34bfc20d28
Change Redis cache logging from Debug to Info level
...
Makes cache hits/misses visible in production logs without needing Debug level
2026-01-30 02:20:11 -05:00
489159b424
Add debug logging for Redis cache hits/misses
...
Now logs when cache entries are retrieved (HIT/MISS) and when they're stored
2026-01-30 02:17:45 -05:00
2bb754b245
Fix: Pass through full query string for browse requests
...
Recently added, recently played, and frequently played sections use
different query parameters (SortBy, SortOrder, Filters, etc) that we
weren't forwarding. Now we pass the complete query string to Jellyfin.
2026-01-30 02:15:48 -05:00
8d8c0892a2
Fix: Handle decimal duration values from LRCLIB API
...
LRCLIB returns duration as a decimal/float, not int. Convert to int using Math.Round.
2026-01-30 02:13:10 -05:00
e12851e9ca
Fix: Handle nullable Duration in lyrics endpoint
2026-01-30 02:10:25 -05:00
f8969bea8d
Add LRCLIB lyrics integration for Jellyfin
...
- Create LrclibService to fetch lyrics from lrclib.net API
- Add LyricsInfo model for lyrics data
- Add /Audio/{itemId}/Lyrics and /Items/{itemId}/Lyrics endpoints
- Support both local and external songs
- Cache lyrics for 30 days in Redis
- Return lyrics in Jellyfin format with synced/plain lyrics
2026-01-30 02:09:27 -05:00
aebb1c14dd
Fix multiple Jellyfin proxy issues and improvements
...
- Fix playback progress reporting by wrapping POST bodies in required field names
- Fix cache cleanup by updating last access time when streaming files
- Fix Artists/{id}/Similar endpoint proxying to correct Jellyfin endpoint
- Add ' - SW' suffix to external albums and artists for better identification
- Register SquidWTFSettings configuration to enable quality settings
- Remove unused code and improve debugging logs
2026-01-30 01:58:10 -05:00
ceaa17f018
Fix: Register SquidWTFSettings configuration in Program.cs
...
The SquidWTF quality setting from .env was not being loaded because
SquidWTFSettings wasn't registered with the DI container.
2026-01-30 00:50:34 -05:00
9aa7ceb138
Remove unused _preferredQuality field from SquidWTFDownloadService
...
The quality setting is already being used correctly via _squidwtfSettings.Quality
2026-01-30 00:49:41 -05:00
72b1ebc2eb
Fix: Wrap playback request bodies in required field names for Jellyfin
...
Jellyfin expects playback endpoints to have bodies wrapped:
- /Sessions/Playing -> {"playbackStartInfo": {...}}
- /Sessions/Playing/Progress -> {"playbackProgressInfo": {...}}
- /Sessions/Playing/Stopped -> {"playbackStopInfo": {...}}
This fixes the 'field is required' validation errors.
2026-01-30 00:48:38 -05:00
48a0351862
Improve POST body debugging for playback endpoints
...
- Better logging to show what client sends vs what we forward
- Log all headers when body is empty to help diagnose issues
2026-01-30 00:45:16 -05:00
4b95f9910c
Fix: Ensure POST requests always send body content to Jellyfin
...
- Always send body content for POST requests, even if empty (send '{}')
- Update TODO.md to mark tasks 2 and 3 as done
- Improve logging for POST body debugging
2026-01-30 00:44:39 -05:00
80424a867d
Fix: Update last access time for cached files to enable proper cleanup
2026-01-30 00:41:17 -05:00
4afd769602
Fix: Proxy Artists/{id}/Similar to correct Jellyfin endpoint
2026-01-30 00:29:56 -05:00
b47a5f9063
Add ' - SW' suffix to external albums and artists
...
Makes it easy to distinguish external content from local Jellyfin library
2026-01-30 00:21:37 -05:00
457a5b7582
Fix reauthentication and artist song counts
...
- Fixed reauthentication: Pass through 401 responses to client instead of hiding them with empty results
- Fixed artist song counts: Artists now show correct song count instead of total library count (1290)
- Fixed external artist Similar endpoint to prevent errors
- Improved auth header forwarding with case-insensitive detection
2026-01-30 00:09:44 -05:00
e10b4408ba
Forgot to pass artistID for artist searching
2026-01-29 18:52:27 -05:00
28d14a0006
remove changes patch
2026-01-29 17:40:26 -05:00
e18840cddf
feat: Fork octo-fiestarr as allstarr with Jellyfin proxy improvements
...
Major changes:
- Rename project from octo-fiesta to allstarr
- Add Jellyfin proxy support alongside Subsonic/Navidrome
- Implement fuzzy search with relevance scoring and Levenshtein distance
- Add POST body logging for debugging playback progress issues
- Separate local and external artists in search results
- Add +5 score boost for external results to prioritize larger catalog(probably gonna reverse it)
- Create FuzzyMatcher utility for intelligent search result scoring
- Add ConvertPlaylistToJellyfinItem method for playlist support
- Rename keys folder to apis and update gitignore
- Filter search results by relevance score (>= 40)
- Add Redis caching support with configurable settings
- Update environment configuration with backend selection
- Improve external provider integration (SquidWTF, Deezer, Qobuz)
- Add tests for all services
2026-01-29 17:36:53 -05:00
Branson
ed9cec1cde
Update SquidWTF quality and storage settings
...
Set default quality and storage mode for SquidWTF.
2026-01-17 11:29:05 -05:00
Branson
d9c1086564
Rename service from octo-fiesta to octo-fiestarr
2026-01-17 11:19:58 -05:00
Branson
9563eb8868
Revise README with updated configuration options
...
Updated configuration details for SquidWTF, Deezer, and Qobuz. Changed default SUBSONIC_URL and added new settings for audio quality and storage mode.
2026-01-17 11:12:37 -05:00
Branson
2e08b4c562
Update environment variables in docker-compose.yml
...
Removed Deezer ARL tokens and quality settings, added SquidWTF quality setting.
2026-01-17 11:07:21 -05:00
Branson
b1a0718acc
Add SquidWTF configuration to .env.example
...
Added configuration options for SquidWTF service.
2026-01-17 11:05:19 -05:00
Branson
bd8971835e
Update MUSIC_SERVICE option in .env.example
...
Make SquidWTF default option
2026-01-17 11:03:01 -05:00
Branson
aa8fdb4aca
Update README
...
Updated README to reflect the new name 'Octo-Fiestarr' and added SquidWTF support details.
2026-01-17 11:01:29 -05:00
Branson
e04c254f04
Update docker-compose.yml
2026-01-17 08:35:19 -05:00
Branson
17a991a4fd
Update octo-fiesta image reference
2026-01-16 20:33:46 -05:00
Branson
488cd64d25
Fix syntax error
2026-01-16 19:40:45 -05:00
Branson
f931a86129
Add new playlist search/parsing implementations from upstream for SquidWTF
2026-01-16 19:40:11 -05:00
Branson
8c67f4acce
Update constructor with new parameter from upstream
2026-01-16 19:39:16 -05:00
bransoned
bfcb78b0b4
fix: merge conflicts and upstream changes merged
2026-01-16 22:45:04 +00:00
Vickes
4fde5a6db4
feat: add HTTP Range header support for iOS streaming clients ( #48 )
2026-01-15 23:47:03 +01:00
V1ck3s
1bf3e17d78
docs: add external playlists feature documentation
2026-01-15 23:32:31 +01:00
V1ck3s
e8e385b770
fix: resolve circular dependency and fix failing tests
2026-01-15 23:32:31 +01:00
V1ck3s
ebe6e90f39
feat: playlist implementation
2026-01-15 23:32:31 +01:00
Branson
0f93862cc2
Fix syntax error
2026-01-13 17:10:29 -05:00
bransoned
ce9689daa2
Change repeated array allocation into predefined constant
2026-01-13 17:10:11 -05:00
V1ck3s
d31a380176
fix: add HTTP Range header forwarding for iOS clients
2026-01-13 17:09:56 -05:00
Branson
c4e62cdeab
Fix syntax error
2026-01-13 16:56:51 -05:00
bransoned
183f59993f
Change repeated array allocation into predefined constant
2026-01-13 21:39:42 +00:00
bransoned
8a66db915d
Remove debug prints, fix Artist search, implement GetArtistAlbumsAsync
2026-01-12 16:10:02 -05:00
V1ck3s
2c5daeefed
docs: add Narjo to iOS compatible clients section
2026-01-12 19:50:46 +01:00
V1ck3s
c8c4fd8322
fix: add HTTP Range header forwarding for iOS clients
2026-01-12 19:35:29 +01:00
V1ck3s
7a08f15523
fix: prevent duplicate downloads from concurrent stream requests
2026-01-12 18:43:47 +01:00