Commit graph

526 commits

Author SHA1 Message Date
Deluan
b0e58cb885 Use Navidrome's own public images endpoint for getAlbumInfo's imageURLs 2023-02-08 20:03:31 -05:00
Deluan
806713719f Add lastUpdated to coverArt ids. Helps with invalidating art cache client-side. 2023-02-08 20:03:31 -05:00
Deluan
759ff844e2 Make ffmpeg path configurable, also finds it automatically in current folder. Fixes #1932 2023-02-07 13:46:09 -05:00
Deluan
b8c5e49dd3 Close stream when downloading files, fix fd leak 2023-02-07 09:58:50 -05:00
Deluan
dad4949a6d Refactor Subsonic search to make it a bit more readable 2023-02-05 00:58:34 -05:00
Deluan
eba70ab826 Change throttling log messages 2023-02-04 12:37:47 -05:00
Deluan
d9d0a97674 Better log message 2023-02-03 11:35:10 -05:00
Deluan
ad2ad514b3 Add dev option to increase external metadata cache expiration. More logs 2023-02-02 16:55:12 -05:00
Deluan
588ee94f7c Discard request for image canceled by the client before any further processing 2023-02-02 14:55:07 -05:00
Deluan
bcab3cc0f9 Add throttling to /share/img endpoint.
See: https://github.com/navidrome/navidrome/issues/2130#issuecomment-1414152343
2023-02-02 13:59:04 -05:00
Deluan
0ce750d469 Update golangci-lint and fix lint errors 2023-02-02 11:10:28 -05:00
Deluan
d8e794317f Return 404 when artwork is not available in /share/img endpoint 2023-02-01 10:34:02 -05:00
Deluan
128b626ec9 Add option to change max playlists shown in UI's sidebar, MaxSidebarPlaylists. Fix #2077 2023-02-01 10:25:25 -05:00
Deluan
68e6115789 Rename DevEnableShare to EnableSharing 2023-01-29 20:33:10 -05:00
Deluan
e2ea5eba8c Disable creation of shares when feature is disabled.
Fix https://github.com/navidrome/navidrome/pull/2106#issuecomment-1404731388
2023-01-26 10:12:52 -05:00
Deluan
1950c07b1d Disable external links when EnableExternalServices is false. Fix #2022 2023-01-25 10:28:03 -05:00
selfhoster1312
1e24809ed6
Create accounts automatically when authenticating from HTTP header (#2087)
* Create accounts automatically when authenticating from HTTP header

* Disable password check when header auth is enabled

* Formatting

* Password change is valid when no password (old or new) is provided

* Test suite runs with header auth disabled (mock config)
Prevents nil pointer access (panic) while testing password validating logic

* Use a constant prefix for autogenerated passwords (header auth case)

* Add tests

* Add context to log messages

Co-authored-by: Deluan <deluan@navidrome.org>
2023-01-24 20:18:10 -05:00
Deluan
39dc9c4310 Disable Subsonic Share endpoints if feature is disabled 2023-01-24 18:36:47 -05:00
Deluan
69b36c75a5 Add meta tags to show cover and share description in social platforms 2023-01-24 18:36:47 -05:00
Deluan
cab43c89e6 Mark Share.LastVisited optional in Subsonic API 2023-01-24 18:36:47 -05:00
Deluan
c770229154 Add Share capability to Subsonic user's info 2023-01-24 18:36:47 -05:00
Deluan
ef4765c768 Fix getShares sort order 2023-01-24 18:36:47 -05:00
Deluan
6c05fcb699 Create contents label for group of shared mediafiles 2023-01-24 18:36:47 -05:00
Deluan
e34f26588e Fix empty entry collection in Shares 2023-01-24 18:36:47 -05:00
Deluan
d5df102f9f Implement updateShare and deleteShare Subsonic endpoints 2023-01-24 18:36:46 -05:00
Deluan
d4c1d2ece4 Handle expired shares 2023-01-24 18:36:46 -05:00
Deluan
d0dceae094 Add getShares and createShare Subsonic endpoints 2023-01-24 18:36:46 -05:00
Deluan
94cc2b2ac5 Fix tests and lint errors, plus a bit of refactor 2023-01-24 18:36:46 -05:00
Deluan
12bb6c3847 Don't expose empty dates in share info 2023-01-24 18:36:46 -05:00
Deluan
364fdfbd8d Use defaultDownsamplingFormat in share options 2023-01-24 18:36:45 -05:00
Deluan
84aa094e56 More work on Shares 2023-01-24 18:36:45 -05:00
Deluan
ab04e33da6 Initial work on Shares 2023-01-24 18:36:45 -05:00
Deluan
136d5f9a83 Add config option to show album participations under artists in Subsonic clients 2023-01-18 14:20:06 -05:00
Deluan
701e301d48 Increase timeout for obtaining login background image list 2023-01-17 22:57:14 -05:00
Kendall Garner
93adda66d9
Get album info (when available) from Last.fm, add getAlbumInfo endpoint (#2061)
* lastfm album.getInfo, getAlbuminfo(2) endpoints

* ... for description and reduce not found log level

* address first comments

* return all images

* Update migration timestamp

* Handle a few edge cases

* Add CoverArtPriority option to retrieve albumart from external sources

* Make agents methods more descriptive

* Use Last.fm name consistently

Co-authored-by: Deluan <deluan@navidrome.org>
2023-01-17 20:22:54 -05:00
Kendall Garner
1324a16fc5 ReplayGain support + audio normalization (web player) (#1988)
* ReplayGain support

- extract ReplayGain tags from files, expose via native api
- use metadata to normalize audio in web player

* make pre-push happy

* remove unnecessary prints

* remove another unnecessary print

* add tooltips, see metadata

* address comments, use settings instead

* remove console.log

* use better language for gain modes
2023-01-17 15:57:19 -05:00
Deluan
e40da183bb Move artwork id encoding to public package 2023-01-16 15:24:25 -05:00
Deluan
c748d669d6 Sort radio stations by name 2023-01-15 16:12:22 -05:00
Deluan
a8478ca74c Fix Subsonic XML Internet Radio response 2023-01-15 15:38:38 -05:00
Kendall Garner
8877b1695a
Add Internet Radio support (#2063)
* add internet radio support

* Add dynamic sidebar icon to Radios

* Fix typos

* Make URL suffix consistent

* Fix typo

* address feedback

* Don't need to preload when playing Internet Radios

* Reorder migration, or else it won't be applied

* Make Radio list view responsive

Also added filter by name, removed RadioActions and RadioContextMenu, and added a default radio icon, in case of favicon is not available.

* Simplify StreamField usage

* fix button, hide progress on mobile

* use js styles over index.css

Co-authored-by: Deluan <deluan@navidrome.org>
2023-01-15 15:11:37 -05:00
Deluan
dfbf86c577 Allow any HTTP methods for public images endpoint. Fix artist covers in Subtracks 2023-01-14 10:17:21 -05:00
Deluan
16c869ec86 Optimize playlist cover generation 2023-01-13 22:18:34 -05:00
Deluan
c46a2a5f5f New dev options to control getCoverArt throttling 2023-01-13 22:18:34 -05:00
Deluan
69e0a266f4 Remove size from public image ID JWT 2023-01-13 22:18:34 -05:00
Deluan
77a99a735b Always access artist images through Navidrome (proxy calls to external URLs) 2023-01-13 22:18:34 -05:00
Deluan
918fee3ea3 Artwork reader for Artist 2023-01-13 22:18:34 -05:00
Deluan
bf461473ef Add local agent, only for images 2023-01-13 22:18:34 -05:00
Deluan
387acc5f63 Add public endpoint to expose images 2023-01-13 22:18:34 -05:00
Deluan
7fbcb2904a Add function number.RandomInt64 2023-01-13 21:40:24 -05:00
Deluan
fdbece5c92 Use custom sanitize package, fix #2070 2023-01-12 13:39:05 -05:00
Deluan
df0f140f9f Don't refresh smart playlists when generating covers 2023-01-01 20:28:03 -05:00
Deluan
950cc28e67 Add coverArt to Subsonic playlist response 2023-01-01 19:35:19 -05:00
Deluan
6260927074 Serve artist placeholder directly, instead of using LastFM's CDN 2022-12-30 20:14:03 -05:00
Deluan
61e5523457 Handle "naked" CoverArtIDs (IDs of album, mediafiles and playlists) 2022-12-28 15:31:56 -05:00
Deluan
332900774d Rename DevFastAccessCoverArt to EnableMediaFileCoverArt 2022-12-28 15:31:56 -05:00
Deluan
722a00cacf Fix artwork caching 2022-12-28 15:31:56 -05:00
Deluan
c1c4645501 Move artwork handling to its own package 2022-12-28 15:31:56 -05:00
Deluan
045b023b35 Fix DevFastAccessCoverArt flag 2022-12-28 15:31:56 -05:00
Deluan
a087f57d2d Handle request (context) cancellation 2022-12-28 15:31:56 -05:00
Deluan
9fcd1c9354 Make internal method unexported 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
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
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
6c4a0be6ff Add endpoints in Subsonic API logs 2022-12-14 10:52:46 -05:00
Deluan
982b604500 Add username to authenticated log messages 2022-12-14 09:35:30 -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
Deluan
0cc1db54d4 Bump github.com/bradleyjkemp/cupaloy to v2.8.0 2022-12-05 22:45:02 -05:00
Deluan
03640ca93d Fix background images when BaseURL is specified 2022-11-29 14:48:05 -05:00
Deluan
950b5dc1ce Remove math/rand and only use crypto/rand 2022-11-27 21:53:13 -05:00
Deluan
195f39182d Host default login background images in Navidrome's own website 2022-11-27 21:37:33 -05:00
Deluan
1b5f855bff Compress more http content-types.
Also, some minor refactoring
2022-11-26 13:13:05 -05:00
Deluan
19af11efbe Simplify Subsonic API handler implementation 2022-11-21 12:57:56 -05:00
Deluan
cd41d9a419 Shutdown gracefully, close DB connection 2022-11-21 12:28:09 -05:00
Deluan
1467036efd Add DefaultUIVolume option. Closes #1679 2022-11-11 16:31:28 -05:00
Deluan
9c433b5d68 Add missing context to logger calls 2022-11-04 11:30:12 -04:00
Deluan
76517cab12 Fix potential nil pointer dereference 2022-11-04 10:39:25 -04:00
Deluan
8f02daf337 Reduce spurious error/warn messages, if loglevel != debug 2022-11-03 12:38:05 -04:00
Deluan
80b7311453 Add TrackNumber to "fake" generated filenames. Fixes #1912 2022-11-02 12:11:01 -04:00
Deluan
ca2cb26d8e Add played field to Subsonic API responses. Fix #1971
This is not an "official" field in the specification, but I guess it does not hurt to expose this ;)
2022-11-02 11:20:51 -04:00
Deluan
aab4925dfc Restore DefaultLanguage case-sensitiveness by reverting commit bfeb8ef6b3.
Language code should be case-sensitive. Fix #1946. Supersedes #1947.
2022-10-19 09:14:02 -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
Deluan
7b0a8f47de Add exportloopref linter 2022-09-30 18:23:47 -04:00
Deluan
bfeb8ef6b3 DefaultLanguage is now case-insensitive 2022-09-28 11:30:22 -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
cb3ba23fce New config DefaultLanguage. Closes #1561 2022-09-27 19:31:09 -04:00
Manuel
72cde6dfde
fix:(middlewares.go) - Set Cookie SameSite mode to Strict - 1776 (#1777)
* None is deprecated and will fallback to Lax in the future.
* Using Strict is future proof and provides additional CSR protection

Signed-off-by: Manuel Kroeber <manuel.kroeber@gmail.com>

Signed-off-by: Manuel Kroeber <manuel.kroeber@gmail.com>
2022-09-27 17:58:47 -04:00
Kendall Garner
751e42c705
Fix creating server (#1894) 2022-09-27 16:53:40 -04:00
Deluan
2a3cd08f20 Fix GO-S2114 security issue
See https://deepsource.io/directory/analyzers/go/issues/GO-S2114
2022-09-26 22:33:42 -04:00
Deluan
4cf43ed735 Only compute version once 2022-09-14 21:09:39 -04:00
Deluan
16afd3a490 Remove //+build tags, as the code does not compile on older versions of Go anymore 2022-07-29 08:41:28 -04:00
Deluan
ebf7354df4 Add more info in search log message 2022-07-27 14:59:01 -04:00
Deluan
c0066ebd85 Add log warn when request is cancelled/interrupted 2022-07-27 14:27:18 -04:00