16 Commits

Author SHA1 Message Date
Deluan
0aff70f816
Smarter cache of external info calls (last.fm / spotify) 2026-01-02 20:09:30 +00:00
Steve Richter
310ce67c2e
Listenbrainz scrobbling (#1424)
* Refactor session_keys to its own package

* Adjust play_tracker

- Don't send external NowPlaying/Scrobble for tracks with unknown artist
- Continue to the next agent on error

* Implement ListenBrainz Agent and Auth Router

* Implement frontend for ListenBrainz linking

* Update listenBrainzRequest

- Don't marshal Player to json
- Rename Track to Title

* Return ErrRetryLater on ListenBrainz server errors

* Add tests for listenBrainzAgent

* Add tests for ListenBrainz Client

* Adjust ListenBrainzTokenDialog to handle errors better

* Refactor listenbrainz.formatListen and listenBrainzRequest structs

* Refactor agent auth_routers

* Refactor session_keys to agents package

* Add test for listenBrainzResponse

* Add tests for ListenBrainz auth_router

* Update ListenBrainzTokenDialog and auth_router

* Adjust player scrobble toggle
2026-01-02 20:09:02 +00:00
Deluan
bb29e2bdd6
Fix double escaped lyrics and comments 2026-01-02 20:09:01 +00:00
Deluan
216e51acae
Tweak SimilarSongs algorithm to prioritize the requested main artist 2026-01-02 20:09:00 +00:00
Deluan
dc70dc99c8
Better way to match top songs from external sources (Last.fm) 2026-01-02 20:09:00 +00:00
Deluan
988cb46862
Fix loadSimilar method, was causing "internal error". Fix #1293 2026-01-02 20:06:12 +00:00
Deluan
040a0b1686
Fix getTopSongs endpoint 2026-01-02 20:06:12 +00:00
Deluan
0a9f6cb807
Refactor Agents to be singleton
Initial work for Last.fm scrobbler
2026-01-02 20:05:04 +00:00
Deluan
df6f611377
Refactored agents calling into its own struct 2026-01-02 19:32:16 +00:00
Deluan
8b6e29e9c2
Add tests for WeightedRandomChooser 2026-01-02 19:31:51 +00:00
Deluan
5c8708daec
Rename variable with conflicting name 2026-01-02 19:31:51 +00:00
Deluan
4bbd2a720c
Better SimilarSongs algorithm 2026-01-02 19:31:51 +00:00
Deluan
8149e99dda
Add a timeout to background task 2026-01-02 19:31:51 +00:00
Deluan
49dc6116f7
Don't use request's context when refreshing artist info in background 2026-01-02 19:31:51 +00:00
Deluan
8fdab93efa
Always update artist info, even if info is fresh 2026-01-02 19:31:51 +00:00
Deluan
fdd9a94144
Rename ExternalInfo to ExternalMetadata 2026-01-02 19:21:28 +00:00