V1ck3s
ce779b3c8a
refactor: reorganize Models into subdirectories by context
...
Split monolithic MusicModels.cs (177 lines) into separate files:
- Models/Settings/ (DeezerSettings, QobuzSettings, SubsonicSettings)
- Models/Domain/ (Song, Album, Artist)
- Models/Search/ (SearchResult)
- Models/Download/ (DownloadInfo, DownloadStatus)
- Models/Subsonic/ (ScanStatus)
Updated namespaces and imports across 22 files.
Improves navigation and separates models by business context.
2026-01-08 19:57:11 +01:00
V1ck3s
c38291efa3
refactor: extract BaseDownloadService to eliminate code duplication between providers
2026-01-08 19:39:06 +01:00
V1ck3s
43c9a2e808
refactor: add Result<T> pattern and global exception handler for consistent error handling
2026-01-08 19:31:05 +01:00
V1ck3s
cb37c7f69a
refactor: implement unified startup validator architecture with IStartupValidator interface
2026-01-08 19:19:45 +01:00
V1ck3s
fe9cb9b758
refactor: organize services by provider and standardize settings pattern
2026-01-08 19:02:44 +01:00
V1ck3s
275467c5bf
feat: add pluggable music service architecture with Qobuz support
2026-01-07 23:55:59 +01:00
V1ck3s
9ec1bb77b5
fix: use AlbumArtist for download folder organization
2026-01-07 22:43:17 +01:00
V1ck3s
5d03f86872
feat: add download mode option (Track/Album) for Deezer downloads
...
Closes #10
2026-01-06 22:53:43 +01:00
V1ck3s
3fd98ea3de
feat: add explicit content filter for Deezer tracks ( #22 )
2026-01-06 21:59:00 +01:00
V1ck3s
2a6191e9db
feat: add startup validation for Subsonic and Deezer connectivity
2026-01-04 17:42:49 +01:00
V1ck3s
7eb101ea29
feat: add configurable audio quality selection for Deezer downloads
2026-01-03 18:06:24 +01:00
V1ck3s
5b736ea61a
security: remove token from log output
2026-01-02 17:45:28 +01:00
V1ck3s
88d8cbb376
fix: address Copilot PR review findings
...
- Register DeezerDownloadService and DeezerMetadataService as Singleton
to properly share state across requests (rate limiting, download tracking)
- Fix race condition in LocalLibraryService.LoadMappingsAsync with
double-check locking pattern
- Dispose HttpRequestMessage objects to prevent memory leaks (4 occurrences)
- Handle fire-and-forget TriggerLibraryScanAsync with proper error logging
- Replace Console.WriteLine with ILogger in SubsonicController
- Fix while loop in DownloadSongAsync to refresh activeDownload state
- Use modern C# range operator syntax for Substring calls
- Clean up appsettings.json template (remove private IP, clear ARL token)
- Add documentation comment for Blowfish decryption key
- Add downloads directory to gitignore
2025-12-13 18:06:37 +01:00
V1ck3s
2d69a5c33e
refactor: update comments and documentation to English for consistency
2025-12-13 18:06:37 +01:00
V1ck3s
c909458bee
feat: add metadatas to file after download
2025-12-13 18:06:37 +01:00
V1ck3s
55727f206f
fix: artist, album, songs image problem fixed with new ID format
2025-12-13 18:06:37 +01:00
V1ck3s
d183853cb2
feat: improve downloaded files organization
2025-12-13 18:06:37 +01:00
V1ck3s
96f6f7f8d4
fix: remote track number is now working, default bitrate for remote songs, remote quality for remote songs
2025-12-13 18:06:37 +01:00
V1ck3s
9b398c7484
feat: replace OpenSSL with native Blowfish decryption and add library rescan
...
- Replace OpenSSL subprocess with BouncyCastle native Blowfish CBC decryption
- Add automatic Subsonic library scan trigger after downloads (with 30s debounce)
- Improve error handling in DeezerMetadataService search methods
- Add comprehensive tests for download service, metadata service, and library service
- Increase test coverage from 13 to 32 tests
2025-12-13 18:06:37 +01:00
V1ck3s
8aa9c2d437
feat: implement DeezerDownloadService with Blowfish decryption
...
- Port JavaScript DeezerDownloader to C#
- Add Deezer API authentication with ARL token
- Implement track download via media.deezer.com API
- Add Blowfish CBC decryption for encrypted chunks (uses OpenSSL)
- Add rate limiting and retry with exponential backoff
- Update config for Deezer ARL tokens
- Configure Subsonic URL to 192.168.1.12:4533
2025-12-13 18:06:37 +01:00
V1ck3s
6b07ac7646
feat: add subsonic proxy architecture with external music services
...
- Add MusicModels (Song, Artist, Album, SearchResult, DownloadInfo)
- Add IMusicMetadataService and DeezerMetadataService for external search
- Add IDownloadService and DeezspotDownloadService for downloads
- Add LocalLibraryService for managing downloaded songs cache
- Add custom endpoints: search3, stream, getSong, getAlbum, getCoverArt
- Configure dependency injection for all services
2025-12-13 18:06:37 +01:00