Deluan
8cf78efb9c
Add timeout for artwork extraction
2022-12-28 15:31:56 -05:00
Deluan
e89d99aee0
Also caches resized images
2022-12-28 15:31:56 -05:00
Deluan
b6eb60f019
Add new Artwork Cache Warmer
2022-12-28 15:31:56 -05:00
Deluan
8c1cd9c273
Refactor file type functions
2022-12-28 15:31:56 -05:00
Deluan
9ec349dce0
Make sure album is updated if external cover changes
2022-12-28 15:31:56 -05:00
Deluan
f5719a7571
Fix spaces in CoverArtPriority, more trace logs in artwork resolution
2022-12-28 15:31:56 -05:00
Deluan
73bb0104f0
Cache original images
2022-12-28 15:31:56 -05:00
Deluan
26a7adae5f
Change Image cache key format
2022-12-28 15:31:56 -05:00
Deluan
04eab5666a
Add back CoverArtPriority
2022-12-28 15:31:56 -05:00
Deluan
045b023b35
Fix `DevFastAccessCoverArt` flag
2022-12-28 15:31:56 -05:00
Deluan
847a0432ea
If resize fails, send the artwork as is. Closes #1102
2022-12-28 15:31:56 -05:00
Deluan
bce7b163ba
Skip trying to read cover art from mediafile if it does not have one
2022-12-28 15:31:56 -05:00
Deluan
a087f57d2d
Handle request (context) cancellation
2022-12-28 15:31:56 -05:00
Deluan
e0da1d1589
Log artwork origin (tag, file, etc...)
2022-12-28 15:31:56 -05:00
Deluan
92b42b35b3
Fallback extracting tags using ffmpeg
2022-12-28 15:31:56 -05:00
Deluan
abd3274250
Handle empty cover art ID in subsonic API
2022-12-28 15:31:56 -05:00
Deluan
0da27e8a3f
Add image cache back
2022-12-28 15:31:56 -05:00
Deluan
40bb211b39
Small test refactor
2022-12-28 15:31:56 -05:00
Deluan
87d4db7638
Handle mediafile covers
2022-12-28 15:31:56 -05:00
Deluan
213ceeca78
Resize if requested
2022-12-28 15:31:56 -05:00
Deluan
7b87386089
Load artwork from embedded
2022-12-28 15:31:56 -05:00
Deluan
c36e77d41f
Remove CoverArtID, fix tests
2022-12-28 15:31:56 -05:00
Deluan
38bde0ddba
Remove current Image Cache implementation
2022-12-28 15:31:56 -05:00
Deluan
c430401ea9
Remove current artwork implementation
2022-12-28 15:31:56 -05:00
Deluan
28e7371d93
Moved logic of collapsing songs into albums to model package
...
(it should really be called domain.... maybe will rename it later)
2022-12-28 15:31:56 -05:00
Deluan
e03ccb3166
Replace MinInt/MaxInt with generic versions
2022-12-28 15:31:56 -05:00
Deluan
5943e8f953
Rename log.LevelCritical to log.LevelFatal
2022-12-21 14:53:36 -05:00
Deluan
28389fb05e
Add command line M3U exporter. Closes #1914
2022-12-21 14:39:40 -05:00
Deluan Quintão
24d520882e
Don't cache transcoded files if the request was cancelled ( #2041 )
...
* Don't cache transcoded files if the request was cancelled (or there was a transcoding error)
* Add context to logs
* Simplify Wait error handling
* Fix flaky test
* Change log level for "populating cache" error message
* Small cleanups
2022-12-18 12:22:12 -05:00
Kendall Garner
54395e7e6a
Enable transcoding of downlods ( #1667 )
...
* feat(download): Enable transcoding of downlods - #573
Signed-off-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
* feat(download): Make automatic transcoding of downloads optional
Signed-off-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
* Fix spelling
* address changes
* prettier
* fix config
* use previous name
Signed-off-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
2022-12-18 12:12:37 -05:00
Deluan
6489dd4478
Fix overriding previous logger in context
2022-12-14 11:50:16 -05:00
Deluan
f206d81afd
Some cleanup, fixes typos and grammar errors
2022-12-06 20:09:03 -05:00
Deluan
c5f7cf97f4
Some cleanup, adding missing context handling
2022-12-06 19:57:47 -05:00
gauth-fr
55ba39cb79
Add global Downsampling feature ( #1575 )
...
* Add global downsampling feature
* Default to Opus & consider player transcoder
* Add a test case for DefaultDownsamplingFormat
Co-authored-by: Deluan <deluan@navidrome.org>
2022-12-06 19:41:16 -05:00
Deluan
00c6545cb1
Bump github.com/go-chi/jwtauth/v5 from 5.0.2 to 5.1.0
2022-12-02 17:58:53 -05:00
Deluan
2c214154dc
Add nakedret linter
2022-11-30 14:16:30 -05:00
Raghd Hamzeh
d5fe0f214c
fix: send content type header in listenbrainz requests - #1944 ( #1994 )
...
fixes #1944
Signed-off-by: Raghd Hamzeh <raghd@rhamzeh.com>
Signed-off-by: Raghd Hamzeh <raghd@rhamzeh.com>
2022-11-27 09:47:13 -05:00
Deluan
a69a31a3bf
Use custom atomic.Bool, as it is not supported in Go 1.18
2022-11-26 15:14:19 -05:00
Deluan
88823fca76
Fix race conditions in tests
2022-11-26 15:07:53 -05:00
Deluan
0bb133a6ac
Kill ffmpeg if context is cancelled
2022-11-26 15:06:59 -05:00
jan666
ab6be8d2dc
Listenbrainz Scrobble ( #2009 )
...
- send SubmissionClient and SubmissionClientVersion
2022-11-22 09:32:46 -05:00
Deluan
9c433b5d68
Add missing context to logger calls
2022-11-04 11:30:12 -04:00
Deluan
f82df70302
Add nilerr linter
2022-09-30 20:18:14 -04:00
Deluan
77dbafff0f
Add errorlint linter
2022-09-30 19:33:39 -04:00
Deluan
db67c1277e
Fix error comparisons
2022-09-30 18:54:25 -04:00
Andy Klimczak
2f7a3c5eda
feat: Add listenbrainz base url configuration ( #1774 )
...
* feat: Add listenbrainz base url configuration
- ListenBrainz.BaseURL config value
* Don't need to store baseUrl
* Use `url.JoinPath` to concatenate url paths
* Replace url.JoinPath (Go 1.19 only) with custom function
Co-authored-by: Deluan <deluan@navidrome.org>
2022-09-27 21:06:28 -04:00
Deluan
d613b19306
Simplify Singleton usage by leveraging Go 1.18's generics
2022-07-27 12:15:05 -04:00
Deluan
31882abf6f
Upgrade Ginkgo to V2
2022-07-26 16:53:17 -04:00
Deluan
028723f721
Fix loading overridden translations from ${DataFolder}/resources/i18n
2022-02-10 14:56:39 -05:00
Deluan
20cdd38fc4
Better logging for agents configuration
2021-11-25 15:48:32 -05:00
Deluan
ce7940bbfc
Allow overriding `name` and `comment` when importing NSP playlists
2021-11-19 19:14:38 -05:00
Steve Richter
3bd6f82c80
Rename ListenBrainz config flag and enable by default ( #1443 )
2021-11-17 21:11:53 -05:00
Deluan
0d9dcebf32
Fix playlist cannot be empty via Subsonic API
2021-11-05 10:23:45 -04:00
Deluan
d3a2f769b7
Better logging of GetSimilar call
2021-11-03 15:59:16 -04:00
Deluan
68a84ec832
Smarter cache of external info calls (last.fm / spotify)
2021-11-03 14:13:50 -04:00
Deluan
053909196c
More info in scrobbling logs
2021-11-02 12:25:29 -04:00
Deluan
778f474d26
Use new `rest` lib (Update receives all columns that need to be updated)
2021-11-01 21:27:36 -04:00
Deluan
e7202339af
Ignore empty lines in M3U files
2021-10-31 20:43:30 -04:00
Deluan
133fed344f
Add `owner_id` to `playlist`
2021-10-31 15:08:06 -04:00
Steve Richter
a56d5bc850
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
2021-10-30 12:17:42 -04:00
Deluan
66a9cbb7d9
Remove temp folders after tests
2021-10-28 10:40:31 -04:00
Deluan
f645c4769c
Fix double escaped lyrics and comments
2021-10-26 19:33:21 -04:00
Deluan
63b5191ea7
Fix lint
2021-10-26 10:57:59 -04:00
Deluan
af00503b77
Optimize playlist updates
2021-10-26 10:45:14 -04:00
Deluan
76fdcd112b
Tweak SimilarSongs algorithm to prioritize the requested main artist
2021-10-24 18:04:40 -04:00
Deluan
18e1c169f9
Don't read the whole smart playlist file in memory
2021-10-24 14:41:08 -04:00
Deluan
cc1659aa73
Better way to match top songs from external sources (Last.fm)
2021-10-23 20:26:30 -04:00
Deluan
c73f64ee3a
Removed unused code
2021-10-23 20:25:28 -04:00
Deluan
806b13cf42
Update stats of Smart Playlist when it is created
...
Also fix loadTracks
2021-10-23 20:25:28 -04:00
Deluan
2c860edeb5
Don't import invalid `.nsp` files
2021-10-23 20:25:28 -04:00
Deluan
6a550dab77
Use new Criteria and remove SmartPlaylist struct
2021-10-23 20:25:28 -04:00
Deluan
1a96e9fe65
Import smart playlists (extension .nsp)
2021-10-23 20:25:28 -04:00
Deluan
c72add516a
Add methods to Playlist model
...
Also, don't load genres for Playlists tracks (not necessary for now)
2021-10-23 20:25:28 -04:00
Deluan
d200933b68
Reduce number of queries for some playlists operations.
...
Also allow admins to update/delete playlists from other users in the Subsonic API. Closes #1366
2021-10-23 20:25:28 -04:00
Tucker Kern
fb11080545
Improve performance of placeholder images ( #1325 )
...
* Don't include updatedAt field when fetching album art placeholder. This will allow browers to cache the place holder
* Apply resizing to placeholder image
* Fix issues discovered by CI linter and prettier
* Updates from PR review
2021-09-06 22:34:37 -04:00
Deluan
c2927e105b
Fix loadSimilar method, was causing "internal error". Fix #1293
2021-08-21 19:37:00 -04:00
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