Commit Graph

351 Commits

Author SHA1 Message Date
Deluan 05e27095b2 Fix getTopSongs endpoint 2021-08-19 08:17:22 -04:00
Deluan 86c0b422f6 Small refactorings 2021-07-21 12:46:30 -04:00
Deluan 8afa2cd833 Remove dependency of deprecated `ioutil` package 2021-07-20 20:12:28 -04:00
Deluan 7540881695 Small refactorings 2021-07-20 19:18:29 -04:00
Deluan 1d8607ef6a Remove unnecessary repositories methods 2021-07-20 17:45:08 -04:00
Deluan 03ad6e972a Removed unused attributes in Last.fm responses 2021-07-16 21:06:47 -04:00
Deluan b0fc684cb6 Fix small lint errors found by gocritic 2021-07-15 13:43:03 -04:00
Deluan 114fdce09e Fix Last.fm's artist.getInfo 2021-07-03 21:48:53 -04:00
Deluan 26b5e6b1b4 Better scrobble log message when buffer is disabled 2021-07-02 10:19:16 -04:00
Deluan f49205733b Add feature flag for buffered scrobbling 2021-07-02 10:04:41 -04:00
Deluan cfb113bd33 Disable Last.FM features based on `LastFM.Enabled` config option 2021-07-02 10:04:41 -04:00
Deluan 289da56f64 Implement Scrobble buffering/retrying 2021-07-02 10:04:41 -04:00
Deluan 92634a7408 Only show message after 2 seconds, giving time for the browser to close it first 2021-06-25 22:23:35 -04:00
Deluan ee21f3957e Pass userId explicitly to UserPropsRepository methods 2021-06-25 22:21:37 -04:00
Deluan 0cbb0acad3 Skip songs with less than 31 seconds, as per Last.fm specification
See https://www.last.fm/api/scrobbling#when-is-a-scrobble-a-scrobble
2021-06-23 21:08:01 -04:00
Deluan abe8015745 Add option to disable external scrobbling per player 2021-06-23 17:55:58 -04:00
Deluan 5001518260 Move user properties (like session keys) to their own table 2021-06-23 17:49:32 -04:00
Deluan 99be8444d3 Disable completely external scrobblers if feature is disabled (`DevEnableScrobble`) 2021-06-23 11:01:58 -04:00
Deluan 056f0b944f Refactor: Consolidate scrobbling logic in play_tracker 2021-06-23 11:01:58 -04:00
Deluan 76acd7da89 Don't send scrobbles/nowPlaying updates to Last.fm if user has not authorized 2021-06-23 11:01:58 -04:00
Deluan 8af7dab23d Fix wrong warning about ignored NowPlaying 2021-06-23 11:01:58 -04:00
Deluan a7509c9ff7 Send NowPlaying and Scrobbles to Last.fm 2021-06-23 11:01:58 -04:00
Deluan d5461d0ae9 Refactor Agents to be singleton
Initial work for Last.fm scrobbler
2021-06-23 11:01:58 -04:00
Steve Richter f9fa9667a3 Show user-friendly message when error occurs in Last.fm callback endpoint 2021-06-23 11:01:58 -04:00
Steve Richter 5fbfd9c81e Implement Last.fm account linking UI 2021-06-23 11:01:58 -04:00
Deluan 743e469795 Use singleton in other places as well 2021-06-21 18:59:26 -04:00
Deluan 1f997357a9 Expose Last.fm's ApiKey to UI 2021-06-21 18:14:01 -04:00
Deluan 143cde37e5 Implement Last.FM Web authentication flow 2021-06-21 18:14:01 -04:00
Deluan 502a719e96 Implement Last.FM Desktop Auth flow endpoints 2021-06-21 18:14:01 -04:00
Deluan 0495e421fe Fix Last.fm API method signature 2021-06-21 18:14:01 -04:00
Deluan a4f91b74d2 Add Last.FM Authentication methods 2021-06-21 18:14:01 -04:00
Deluan 80b2c2f3cf Try to register all playing music in GetNowPlaying 2021-06-20 11:25:15 -04:00
Deluan 97434c1789 Fix GetNowPlaying endpoint showing only the last play 2021-06-20 10:39:19 -04:00
Deluan f8ee6db72a New implementation of NowPlaying 2021-06-20 10:39:16 -04:00
Deluan bed2f017af Fix index of songs in downloaded playlist 2021-06-12 23:02:34 -04:00
Deluan b445cdd641 Use a dedicated api-key/secret pair for Last.FM 2021-06-10 15:07:06 -04:00
Deluan f9eec5e4dc Refactored agents calling into its own struct 2021-06-08 17:00:02 -04:00
Deluan 6c1ba8f0d0 Add tests to `core.Share` 2021-06-08 16:32:08 -04:00
Deluan 110e17b004 Make MockRepo names more consistent 2021-06-08 16:30:19 -04:00
Yash Jipkate af210c8903
Add Native Sharing REST API (#1150)
* Initial draft - UNTESTED

* changes to Save() and Update()

* apply col filter and limit nanoid

* remove columns to not update
2021-06-08 15:44:30 -04:00
Deluan e80cf80d05 Move all Spotify and LastFM code into only one folder for each 2021-06-08 11:25:46 -04:00
Deluan c5abdc19bc Fix recursive bug in Last.FM calls without mbid 2021-05-30 22:46:23 -04:00
Deluan 7bbb09e546 Add tests for WeightedRandomChooser 2021-05-28 23:51:56 -04:00
Deluan dd56a7798e Rename variable with conflicting name 2021-05-28 23:00:39 -04:00
Deluan a38e478a47 Better SimilarSongs algorithm 2021-05-28 22:55:34 -04:00
Deluan 01f3ce0228 Add a timeout to background task 2021-05-28 11:37:53 -04:00
Deluan 48b6fa7feb Don't use request's context when refreshing artist info in background 2021-05-28 09:34:15 -04:00
Deluan ed01946ace Embed Last.FM error responses, making the tests faster 2021-05-27 21:04:03 -04:00
Deluan Quintão 89b12b34be
Retry calls to Last.FM without MBIDs when if returns artist invalid (#1138)
* Call Last.FM's getInfo again without mbid when artist is not found

* Call Last.FM's getSimilar again without mbid when artist is not found

* Call Last.FM's getTopTracks again without mbid when artist is not found
2021-05-27 20:53:24 -04:00
Deluan 4e0177ee53 Always update artist info, even if info is fresh 2021-05-27 20:32:26 -04:00
Deluan b398053223 Include a shared Last.FM api key, providing zero conf ArtistInfo (bio/top songs/similar artists) 2021-05-27 16:14:24 -04:00
Deluan 22ce5b6282 Removed unnecessary code 2021-05-11 18:55:58 -04:00
Deluan 7d96167abc Upgrade to go-chi 5 2021-05-11 17:21:18 -04:00
Deluan bc62efb059 More auth tests 2021-04-30 10:00:03 -04:00
Deluan bcda53f115 Less waiting for cache to be ready 2021-04-29 13:58:01 -04:00
Deluan a35de2bfd1 Allow regular users to change their info, including password.
Should fix #199
2021-04-28 22:35:25 -04:00
Deluan Quintão 2d528bbc87
Remove dependency of go-bindata (#818)
* Use new embed functionality for serving UI assets

* Use new embed functionality for serving resources. Remove dependency on go-bindata

* Remove Go 1.15
2021-03-12 11:06:51 -05:00
Deluan 157faad028 Rename ExternalInfo to ExternalMetadata 2021-02-09 15:33:33 -05:00
Deluan 5fdd8b32d7 Move utilitarian/generic packages to utils: lastfm, spotify, gravatar, cache, and pool 2021-02-09 15:33:33 -05:00
Deluan b855fe865e Add artist ID to agent's interfaces 2021-02-09 11:19:32 -05:00
Deluan 7cc026ac35 Add some info about how to create new agents 2021-02-08 17:18:43 -05:00
Deluan fefbe0b117 Cleanup, add Placeholder agent 2021-02-08 16:54:51 -05:00
Deluan e5cbfac483 Implement TopSongs 2021-02-08 16:54:51 -05:00
Deluan e1cb52689e Implement SimilarSongs 2021-02-08 16:54:51 -05:00
Deluan 84a50d5dce Use MBID in calls to Last.FM, if it is available 2021-02-08 16:54:51 -05:00
Deluan 6c1fc5f836 Clean names before calling agents 2021-02-08 16:54:51 -05:00
Deluan a76a52e99a Get MBID first, if it is not yet available 2021-02-08 16:54:51 -05:00
Deluan 52a407b84b Clean up, comments and logs 2021-02-08 16:54:51 -05:00
Deluan 365dff6435 Fix lint errors 2021-02-08 16:54:51 -05:00
Deluan 877cdf1d5c Get images 2021-02-08 16:54:51 -05:00
Deluan 28cdf1e693 Add a cached http client 2021-02-08 16:54:51 -05:00
Deluan 9d24106066 Incomplete implementation of agents 2021-02-08 16:54:51 -05:00
Deluan 6ee45a9ccc Move project to Navidrome GitHub organization 2021-02-06 21:46:35 -05:00
Deluan 2f4a5fd9ae Fix test suite name 2021-02-04 15:44:44 -05:00
Deluan 861b406575 Use new simplified `uuid.NewString()` syntax 2021-02-01 01:22:31 -05:00
Deluan 069199b2d8 Removed invalid comment 2021-01-03 18:16:37 -05:00
Deluan 29817db9f2 Simplify worker pool 2020-12-15 20:48:06 -05:00
Deluan 25ae1c6cdd Return album art as a Reader 2020-12-02 09:13:36 -05:00
Deluan 0aaa261a71 Don't show warning about image cache disabled if pre-cache warmer is disabled 2020-12-02 08:52:35 -05:00
Zane van Iperen 763a3ef267 Fix startup failure when image cache is disabled.
Fixes #655
2020-11-22 17:03:09 -05:00
Jason Walton 69b2fe92f5 Fix aspect ratio for non-square album art. 2020-11-22 15:03:41 -05:00
Deluan 3c4903bc4e No need to create a new instance of the Artwork service 2020-11-17 12:16:13 -05:00
Deluan 088af9004a Only try to check cover art file for lastUpdated if fast access is not set 2020-11-16 16:39:31 -05:00
Deluan 9d7995fd4d Redesign UserMenu, now with support for Gravatar 2020-11-13 00:40:30 -05:00
Deluan 9d2426a601 Use a better notation for exporting JS components and functions 2020-11-10 19:27:28 -05:00
Deluan 8d7931b3bc Fix "seekable" log message (was always "false") 2020-11-05 18:11:12 -05:00
Deluan a6bd9f627e Make new cache layout the default 2020-11-04 23:25:38 -05:00
Deluan 2f56f1b178 Use new fscache's SetKeyMapper
See a0daa9e527
2020-11-03 12:52:44 -05:00
Deluan cfad35544b Add artistImageUrl available in getArtists endpoint
Also cache artist info in the DB for 1 hour
2020-11-01 14:37:29 -05:00
Deluan 6c0778a867 Add log to pool 2020-10-31 01:13:36 -04:00
Deluan 58d6b0a84f Cache Warmer now waits for Cache to be available 2020-10-31 00:40:21 -04:00
Deluan ba8d2f5da8 Log when a cache has finished loading 2020-10-30 00:33:39 -04:00
Deluan f1a24b971a Use timestamp of artwork file instead of album's UpdatedAt in the cache key 2020-10-29 23:19:26 -04:00
Deluan d913108de2 Add option to disable track cover art. Should help with cloud mounting (rclone) 2020-10-29 10:57:33 -04:00
Deluan 1e57852eff Make pool's queue buffered. Workaround while we don't put the queue in disk 2020-10-27 20:12:27 -04:00
Deluan 9b756faef5 Make caches singletons 2020-10-27 18:20:50 -04:00
Deluan 515528ee6d Disable flaky test 2020-10-27 16:07:53 -04:00
Deluan 216491815c Increased pool test timeout (hate time based tests...) 2020-10-27 15:58:13 -04:00
Deluan 0f418a93cd Completely removed engine package, fewer abstraction layers \o/ 2020-10-27 15:27:37 -04:00
Deluan d0bf37a8a9 Move mock datastore to tests package 2020-10-27 15:23:49 -04:00
Deluan 313a088f86 Make mocks strongly typed 2020-10-27 15:23:49 -04:00
Deluan 6152fadd92 Removed list_generator completely 2020-10-27 15:23:48 -04:00
Deluan acba4b16ee Add test for pool 2020-10-27 15:23:48 -04:00
Deluan c1fb32cedb Replace unicode quotes and dash with simple ascii chars
External services do not use these unicode chars. Ex:
- “Weird Al” Yankovic
- Bachman–Turner Overdrive
- The Go‐Go’s
are not found in Last.FM and Spotify
2020-10-27 00:13:39 -04:00
Deluan 95cc211659 Revert "Make caches singletons" 2020-10-26 10:11:47 -04:00
Deluan bf5318d776 Add flag to enable new cache layout 2020-10-26 09:54:36 -04:00
Deluan 81d7556cdf Make caches singletons 2020-10-25 23:22:52 -04:00
Deluan 1e56f4da76 Add simple cache warmer, disabled by default 2020-10-25 23:22:52 -04:00
Deluan 197d4024f7 Add dedicated Item interface for cache items 2020-10-25 23:22:52 -04:00
Deluan 7eaa42797a Uses cached original image when requesting a resized image 2020-10-25 23:22:52 -04:00
Deluan d39bd0219a Fix cache key-mapping 2020-10-25 23:22:52 -04:00
Deluan 9f533b2108 New Cache FileSystem implementation 2020-10-25 23:22:52 -04:00
Deluan 6d08a9446d Fix test suite name 2020-10-23 21:43:33 -04:00
Deluan 1cd2f015c2 Get Similar Artists in parallel
Also don't fail `GetArtistInfo` when Last.FM is not configured
2020-10-21 21:44:03 -04:00
Deluan 69e1059705 Prefer starred and high rated versions for Top Songs 2020-10-21 15:11:26 -04:00
Deluan 075c28d2e5 Fix performance and precision of TopSongs 2020-10-21 14:07:01 -04:00
Deluan a45b5a037f Match Top Songs by mbid, add indexes to media_file 2020-10-21 10:13:03 -04:00
Deluan b93a3db267 Fix sort order for TopSongs 2020-10-21 00:10:46 -04:00
Deluan 53c1e9ec35 Include tracks in TopSongs where the requested artist is the album artist 2020-10-20 23:52:45 -04:00
Deluan 12cedee867 Prefer older versions on GetTopSongs 2020-10-20 23:46:45 -04:00
Deluan 049ac70b2b Add "real" TopSongs 2020-10-20 22:53:52 -04:00
Deluan 64ccb4d188 Add SimilarSongs functionality 2020-10-20 16:07:31 -04:00
Deluan a289a1945f Remove redundant interfaces 2020-10-20 16:07:31 -04:00
Deluan a257891b46 Get better artist images results 2020-10-20 16:07:31 -04:00
Deluan e9e09a7480 Add dedicated SimilarArtists call 2020-10-20 16:07:31 -04:00
Deluan 29d8950e5b Better ArtistInfo field names 2020-10-20 16:07:31 -04:00
Deluan 00b6f895bb Fix lint errors 2020-10-20 16:07:31 -04:00
Deluan 07d96f8308 Add missing fields to ArtistInfo 2020-10-20 16:07:31 -04:00
Deluan 07535e1518 Add ExternalInformation core service (not a great name, I know) 2020-10-20 16:07:31 -04:00
Deluan 19ead8f7e8 Add initial spotify client implementation 2020-10-20 16:07:31 -04:00
Deluan eb74dad7cd Add initial last.fm client implementation 2020-10-20 16:07:31 -04:00
Deluan fea5d23fc7 Add `ffmpeg` detection at start-up 2020-10-06 17:24:16 -04:00
Deluan 8fa5544af7 Add option to download playlist 2020-08-21 13:28:20 -04:00
Deluan 6c8535c54a Add support for reading webp artwork 2020-08-21 11:33:23 -04:00
Deluan 16397e08fc Close cache reader. Should fix #446 2020-08-17 09:14:08 -04:00
Deluan d72468003f User album or artist name as zip name in `download` endpoint 2020-08-14 12:10:37 -04:00
Deluan 0e16d7cfbb Fix regression: Show artwork in Music Stash when browsing by folder 2020-08-14 12:10:37 -04:00
Deluan 9a1133601a Store uncompressed files in zip 2020-08-04 13:38:32 -04:00
Deluan 2c370cae28 Support downloading full album and artist discography through Subsonic API 2020-08-04 12:39:13 -04:00
Deluan 2b59d4b87a Rename 'Cover' to the more generic term 'Artwork' 2020-07-31 11:38:56 -04:00
Deluan d877928f11 Add UpdatedAt to transcoding cache key 2020-07-28 17:16:01 -04:00
Deluan 0403ec2a07 Use OS-independent path separators 2020-07-28 08:49:07 -04:00
Deluan 67da83c84d Use a RWMutex instead of an AtomicBool, to reduce contention 2020-07-26 00:45:33 -04:00
Deluan f8f16d676d Fix Cached flag 2020-07-24 18:48:28 -04:00
Deluan 58b816c2ed Show `cached` in info log 2020-07-24 18:43:03 -04:00
Deluan 9b1d5c196f Load cache asynchronously 2020-07-24 16:54:04 -04:00
Deluan 9f4f2f7381 Use new FileCache in cover service 2020-07-24 13:30:27 -04:00
Deluan 433e31acc8 Refactor FileCache, allow disabling Trasncoding cache 2020-07-24 12:42:11 -04:00
Deluan 1bee98af52 Increase streamer test timeout 2020-07-21 20:43:59 -04:00
Deluan 9e35534dad Fix lint errors
New environment, forgot to setup it properly...
2020-07-10 13:11:02 -04:00
Deluan 5620c58a30 Started the big refactor to extract common logic from `engine` package (Subsonic only) to `core` package (more generic) 2020-07-10 12:53:11 -04:00