Deluan
478c709a64
Associate main entities with library
2024-05-12 21:37:42 -04:00
Deluan
477bcaee58
Store MusicFolder as a library in DB
2024-05-12 21:37:42 -04:00
Deluan
081ef85db6
Rename MediaFolder to Library
2024-05-12 21:37:42 -04:00
Deluan
ed83c22632
Do not panic if when updatePlaylist is called with a non-existent ID.
...
Fix #2876
2024-05-11 15:37:50 -04:00
Deluan
09d1fd0658
Simplify normalized AlbumPlayCountMode calc
2024-05-09 08:13:42 -04:00
Deluan
885cd345ab
Clean up runNavidrome function
2024-05-09 07:44:08 -04:00
Deluan Quintão
c4b05dac28
Make sorting lists by name/title case-insensitive ( #2993 )
...
* Make sort by order_* fields case-insensitive.
* Sort internet radios by name case-insensitive
2024-05-09 07:08:15 -04:00
Deluan
62cc8a2d4b
Fix ambiguous column when sorting media_files by created_at.
...
Fix #3006
2024-05-08 08:24:26 -04:00
Deluan
d4a9a9e555
Fix PlaylistTracks's loadAllGenres. Fix #2988
2024-05-01 20:17:42 -04:00
Deluan
a8955f24e0
Fix AlbumPlayCountMode. Closes #2984
2024-05-01 20:05:36 -04:00
Deluan
31fcab07d2
Refactor loadGenres, remove duplication
2024-04-28 17:04:12 -04:00
Deluan
de90152a71
Refactor DB Album mapping to model.Album
2024-04-28 13:51:57 -04:00
Deluan
92a98cd558
Add tests for AlbumPlayCountMode, change the calc to match the request from #1032
2024-04-27 15:20:46 -04:00
Deluan
5d50558610
Add tests for AlbumPlayCountMode
2024-04-27 15:07:50 -04:00
vvdveen
8bff1ad512
Add AlbumPlayCountMode config option ( #2803 )
...
Closes #1032
* feat(album_repository.go): add kodi-style album playcount option - #1032
Signed-off-by: Victor van der Veen <vvdveen@gmail.com>
* fix format issue and remove reference to kodi (now normalized)
Signed-off-by: Victor van der Veen <vvdveen@gmail.com>
* reduced complexity but added rounding
Signed-off-by: Victor van der Veen <vvdveen@gmail.com>
* Use constants for AlbumPlayCountMode values
---------
Signed-off-by: Victor van der Veen <vvdveen@gmail.com>
Co-authored-by: Deluan <deluan@navidrome.org>
2024-04-27 14:10:40 -04:00
Deluan
f5df948eb1
Fix scrobble error spam in the logs.
...
Relates to #2831 and #2975
2024-04-26 16:59:14 -04:00
Deluan
78182f40d6
Block regular users from changing their own playlists ownership
2024-04-20 12:08:07 -04:00
looklose
22cc9e0cd5
Fix function name in comment ( #2947 )
...
Signed-off-by: looklose <shishuaiqun@yeah.net>
2024-04-10 12:53:21 -04:00
Deluan
176329343a
Send Subsonic formatted response on marshalling errors
2024-02-17 10:39:29 -05:00
Deluan
6d253225de
Use order/sort album/artist when sorting tracks in playlists. Fixes #2819
2024-02-15 21:52:00 -05:00
Deluan
fa7cc40d23
Add tests for toSQL
2024-01-27 12:16:38 -05:00
caiocotts
58218e6dc4
Fix fields not being sent on getPlaylist.view responses.
2024-01-26 12:41:55 -05:00
Deluan
2b33ef72e3
Remove offset and limit from count queries. Fixes #2443
2024-01-20 22:02:05 -05:00
Deluan
2fb913f5c9
Add log message to try to capture error in #2735
2024-01-20 20:18:59 -05:00
Deluan
e50382e3bf
Fix ReplayGain values not being retrieved from DB
2023-12-27 21:14:54 -05:00
Deluan
7ccf685973
Fix PreferSortTags
2023-12-14 21:45:47 -05:00
Deluan
2aef227572
Add context to SQL queries, enabling cancellation
2023-12-14 17:13:09 -05:00
Deluan Quintão
ab53313273
Add new PrefSortTags option ( #2696 )
2023-12-11 20:37:11 -05:00
Deluan
465cc091b0
Convert internal disc number representation to int
2023-12-09 13:53:38 -05:00
Deluan
af7eead037
Add discs to album
2023-12-09 13:53:38 -05:00
Deluan Quintão
0ca0d5da22
Replace beego/orm with dbx ( #2693 )
...
* Start migration to dbx package
* Fix annotations and bookmarks bindings
* Fix tests
* Fix more tests
* Remove remaining references to beego/orm
* Add PostScanner/PostMapper interfaces
* Fix importing SmartPlaylists
* Renaming
* More renaming
* Fix artist DB mapping
* Fix playlist updates
* Remove bookmarks at the end of the test
* Remove remaining `orm` struct tags
* Fix user timestamps DB access
* Fix smart playlist evaluated_at DB access
* Fix search3
2023-12-09 13:52:17 -05:00
Deluan
a9cf54afef
Return genres in bookmark endpoints (OpenSubsonic)
2023-12-02 11:36:16 -05:00
Deluan
595186b1b2
Coalesce null annotation values, to better rank them against annotations with value 0
2023-12-02 11:35:54 -05:00
Deluan Quintão
60a5fbe1fe
Optimize search3, by removing OFFSET when paginating ( #2655 )
...
* Optimize pagination, removing offset
* For search, don't add `where` clause for empty queries
* Revert "Replace `COUNT(DISTINCT primary_key)` with `COUNT(*)`"
Genres are required as part of the count queries, so filter by genres work
* Optimize search3 query, using order by id if it is a "" query.
Also fix the optimizePagination query logic
* Allow offset optimizer threshold to be configured
2023-11-27 13:06:23 -05:00
Deluan
28dc98dec4
Revert "Replace COUNT(DISTINCT primary_key) with COUNT(*)"
...
Genres are required as part of the count queries, so filter by genres work
2023-11-25 23:08:20 -05:00
Deluan
8c8e1ea701
Replace COUNT(DISTINCT primary_key) with COUNT(*)
2023-11-25 22:46:15 -05:00
Deluan
b964018cd7
Show SQL errors in queryAll
2023-11-25 13:54:38 -05:00
Deluan
9aa7b80d0d
Generalize BreakUp/RangByChunks functions
2023-11-25 12:13:36 -05:00
Caio Cotts
f69c27d146
Return genres in search3 endpoint.
2023-11-21 21:34:03 -05:00
Kendall Garner
79870b1090
Do not empty old artist metadata ( #2423 )
2023-11-16 19:20:37 -05:00
Deluan
3fc4313e89
Move string slice functions to slice package as generic functions
2023-06-02 16:30:20 -04:00
Deluan
e38a690632
Order albums by full original date (this time is for real). Fixes #1452
2023-05-23 09:51:02 -04:00
Deluan
7d0656f44a
Order albums by full original date. Fixes #1452
2023-05-22 23:50:16 -04:00
certuna
52b77e4194
Support for Original Date, Release Date & splitting/grouping of album editions ( #2162 )
...
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update AlbumDetails.js
* Create DoubleRangeField.js
* Update and rename DoubleRangeField.js to RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update index.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update en.json
* Update en.json
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update ContextMenus.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongList.js
* Update playlist_track_repository.go
* Update 20230113000000_release_year.go
* Update PlayButton.js
* Update mediafile_repository.go
* Update album.go
* Update playlist_track_repository.go
* Update playlist_track_repository.go
* Update SongDatagrid.js
* Update 20230113000000_release_year.go
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update AlbumSongs.js
* Update RangeFieldDouble.js
* Update SongDatagrid.js
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update AlbumSongs.js
* Update AlbumSongs.js
* Update mapping.go
* Update RangeFieldDouble.js
* Update AlbumGridView.js
* Update AlbumSongs.js
* Update en.json
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update metadata.go
* Update mapping.go
* Update AlbumDetails.js
* Update AlbumGridView.js
* Update RangeFieldDouble.js
* Update mapping.go
* Update metadata.go
* Update mapping.go
* Update AlbumDetails.js
* Update 20230113000000_release_year.go
* Update AlbumDetails.js
* Update en.json
* Update configuration.go
* Update mapping.go
* Update configuration.go
* Update mediafile.go
* Update metadata.go
* Update RangeFieldDouble.js
* Update 20230113000000_release_year.go
* Update configuration.go
* Update mapping.go
* Update mediafile.go
* Update mapping.go
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update 20230113000000_release_year.go
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update mapping.go
* Update metadata.go
* Update album.go
* Update mediafile.go
* Update mediafile.go
* Update album.go
* Update fields.go
* Update mediafile_repository.go
* Update playlist_track_repository.go
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update PlayButton.js
* Update SongList.js
* Update ContextMenus.js
* Update SongDatagrid.js
* Update metadata.go
* Update ArtistShow.js
* Update mapping.go
* Update configuration.go
* Update mapping.go
* Update metadata.go
* Update metadata.go
* Update mapping.go
* Update metadata.go
* Update metadata.go
* Update mapping.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update mapping.go
* Update metadata.go
* Update metadata.go
* Update album.go
* Update mediafile.go
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update album.go
* Update mediafile.go
* Update metadata.go
* Update mediafile.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update album.go
* Update mediafile.go
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update AlbumGridView.js
* Update en.json
* Update AlbumGridView.js
* Update RangeFieldDouble.js
* Update and rename 20230113000000_release_year.go to 20230113000000_release_date.go
* Update album.go
* Update mediafile.go
* Update fields.go
* Update playlist_track_repository.go
* Update mediafile_repository.go
* Update mapping.go
* Update metadata.go
* Update mapping.go
* Update SongDatagrid.js
* Update RangeFieldDouble.js
* Update index.js
* Update ContextMenus.js
* Update PlayButton.js
* Create FormatDate.js
* Update SongList.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update AlbumSongs.js
* Update en.json
* Update AlbumDetails.js
* Update album.go
fixed conflict I think?
* Update mediafile.go
fixed conflict
* Format with goimports
* Update SongDatagrid.js
only show Cat # in desktop view
* Update metadata_internal_test.go
* Update metadata_test.go
* Delete test.mp3
* Add files via upload
mp3 test file with Date, Original Date and Release Date
* Update metadata_test.go
* Update metadata_test.go
* Update metadata_test.go
* Update metadata_test.go
* Update taglib_test.go
* Delete test.mp3
* Add files via upload
file with replaygain & dates
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update ContextMenus.js
* Update FormatDate.js
* Update PlayButton.js
* Update RangeFieldDouble.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Fix formatting
* Update mapping.go
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update SongDatagrid.js
prettier
* Create RangeDoubleField.js
rename of RangeFieldDouble.js
* Update AlbumGridView.js
RangeFieldDouble -> RangeDoubleField
* Update mediafile.go
AllOrNothing() -> allOrNothing()
* Update metadata_internal_test.go
getYear -> getDate
* Update AlbumDetails.js
wrote suggested changes
* Update en.json
Editions -> Releases & fixed the field name
* Update configuration.go
Rename Editions -> Releases
* Update 20230113000000_release_date.go
Editions -> Releases
* Update album.go
Editions -> Releases
* Update mediafile.go
Editions -> Releases
* Update AlbumDetails.js
Editions -> Releases
* Update AlbumSongs.js
Editions -> Releases
* Update RangeDoubleField.js
Editions -> Releases
* Update SongDatagrid.js
Editions -> Releases
* Update index.js
FormatFullDate and RangeDoubleField
* Rename FormatDate.js to FormatFullDate.js
* Delete RangeFieldDouble.js
* Update mediafile.go
AllOrNothing -> allOrNothing
* Update mapping.go
Editions -> Releases
* Update AlbumDetails.js
prettier
* Update SongDatagrid.js
showReleaseRow -> showReleaseDivider
* Update AlbumSongs.js
showReleaseRow -> showReleaseDivider for clarity
* Update and rename 20230113000000_release_date.go to 20230515184510_add_release_date.go
- rename the migration file
- fixed the import to goose/v3
- additional db fields for original date & year
* Update 20230515184510_add_release_date.go
* Update fields.go
* Update album.go
* Update mediafile.go
* Update mapping.go
* Update AlbumDetails.js
* Update en.json
* Update AlbumDetails.js
* Update AlbumDetails.js
now hopefully prettier
* Update mapping.go
---------
Co-authored-by: Deluan <deluan@navidrome.org>
2023-05-19 15:27:47 -04:00
Deluan
c3cc7dee01
Enable SQL migrations
2023-04-04 10:30:28 -04:00
Xidorn Quan
1430aa108d
Update play_date on scrobble only when newer - #2262 ( #2263 )
...
* fix(persistence): Update play_date on scrobble only when newer - #2262
Signed-off-by: Xidorn Quan <me@upsuper.org>
* expand iff
---------
Signed-off-by: Xidorn Quan <me@upsuper.org>
2023-03-18 18:28:01 -04:00
Deluan
c88e1baa7c
Make playlist tracks match case-insensitive. Fix #1720
2023-03-10 12:29:38 -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
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
433da37982
Add Share to Context menus, also share artist
2023-01-24 18:36:47 -05:00
Deluan
26be5b8396
Keep order of shared mediafiles
2023-01-24 18:36:47 -05:00
Deluan
d639da9eb5
Enable sharing only selected songs with the Subsonic API
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
d0dceae094
Add getShares and createShare Subsonic endpoints
2023-01-24 18:36:46 -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
Zane van Iperen
feb774a149
Change genre.Put() to upsert. Fix #1918 and #1564 ( #1920 )
...
* persistence/genre: change Put() to upsert
Absolutely disgusting hack to work around [1]. Try to insert the genre,
but if it conflicts, ignore it and update the genre with the existing
ID.
[1]: https://github.com/navidrome/navidrome/issues/1918 .
* scanner: remove cached genre repository
Not needed anytmore. And remember:
"Many Small Queries Are Efficient In SQLite" [1].
[1]: https://www.sqlite.org/np1queryprob.html
* Revert "scanner: remove cached genre repository"
This reverts commit c5d900aa43e1c86b69f923b408e11ab8df8d815c.
* Use squirrel to build SQL, to reduce risk of SQL injection
Co-authored-by: Deluan <deluan@navidrome.org>
2023-01-17 21:04:18 -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
16c869ec86
Optimize playlist cover generation
2023-01-13 22:18:34 -05:00
Deluan
df0f140f9f
Don't refresh smart playlists when generating covers
2023-01-01 20:28:03 -05:00
Deluan
8e640bb858
Implement new Artist refresh
2022-12-28 15:31:56 -05:00
Deluan
c36e77d41f
Remove CoverArtID, fix tests
2022-12-28 15:31:56 -05:00
Deluan
c430401ea9
Remove current artwork implementation
2022-12-28 15:31:56 -05:00
Deluan
2f90fc9bd4
Move album refresh to scanner
2022-12-28 15:31:56 -05:00
Deluan
566ae93950
Remove old refresh code
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
5943e8f953
Rename log.LevelCritical to log.LevelFatal
2022-12-21 14:53:36 -05:00
Deluan
9c433b5d68
Add missing context to logger calls
2022-11-04 11:30:12 -04:00
Deluan
fa5dc5af10
Fix adding songs to plain playlists
2022-10-06 19:45:31 -04:00
Deluan
3d5a1cef92
Don't allow adding songs to smart playlists
2022-10-02 20:14:15 -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
Deluan
e981ee27c0
Add test for WithTx
2022-07-30 13:07:38 -04:00
Deluan
695f82a1a0
Upgrade to Beego 2's orm
2022-07-30 12:43:48 -04:00
Deluan
31882abf6f
Upgrade Ginkgo to V2
2022-07-26 16:53:17 -04:00
Deluan
cbeaadf8e2
Fix logging smart playlist's song count
2021-11-20 12:29:09 -05:00
Deluan
1c82bf5179
Remove non-album artist_ids from the DB
2021-11-05 20:24:50 -04:00
Deluan
0d9dcebf32
Fix playlist cannot be empty via Subsonic API
2021-11-05 10:23:45 -04:00
Deluan
9422373be0
Optimize AlbumRepository.GetAll and add a GetAllWithoutGenres method specifically for Subsonic API, where multiple-genres are not required
2021-11-02 21:19:49 -04:00
Deluan
12818fb590
Make song/album/artist endpoints read-only
2021-11-02 14:44:50 -04:00
Deluan
aaeaa3c590
Fix playlist filter
2021-11-02 12:56:43 -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
133fed344f
Add owner_id to playlist
2021-10-31 15:08:06 -04:00
Deluan
a42aeff88d
Optimize queries by path, should speed up the scanner a bit
2021-10-29 13:11:51 -04:00
Deluan
f3fae7e233
Optimize basic media_file query, avoiding adding "group by" or joining with genres if not required
2021-10-29 09:50:22 -04:00
Deluan
074732b1dc
Filter playlists by names and comments
2021-10-28 13:58:06 -04:00
Deluan
66a9cbb7d9
Remove temp folders after tests
2021-10-28 10:40:31 -04:00
Deluan
ea435d0f60
Fix error on empty playlists. Simplify code for some operations
2021-10-27 09:50:24 -04:00
Deluan
5e87280750
Load playlist track genres
2021-10-26 18:46:08 -04:00
Deluan
526b6597c8
Remove duplication for loading tracks
2021-10-26 18:34:21 -04:00
Deluan
5dce499d6d
Fix/Optimized Playlist tracks deletion
2021-10-26 14:05:28 -04:00
Deluan
af00503b77
Optimize playlist updates
2021-10-26 10:45:14 -04:00
Deluan
93ce0b5683
Fix Genre field and Contains/NotContains/StartsWith/EndsWith in Criteria (Smart Playlists)
2021-10-25 16:17:03 -04:00
Deluan
47549ecfc1
Increase updatePlaylist chunk to 100 tracks
2021-10-25 13:00:46 -04:00
Deluan
8d6b5f9d02
Speed up Subsonic GetPlaylist (by optimizing loadTracks)
2021-10-25 11:14:20 -04:00
Deluan
2e2a647e67
Make SmartPlaylists read-only
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
947353610c
Include never played songs in the "not in the last" operator
2021-10-23 20:25:28 -04:00
Deluan
2b57b98a4b
Fix smart playlist refreshing only after the tracks were loaded
2021-10-23 20:25:28 -04:00
Deluan
21da1df4ea
Cache smart playlist refreshes for 5 seconds
2021-10-23 20:25:28 -04:00
Deluan
d21932bd1b
First version of SmartPlaylists being generated on demand
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
Deluan
943082ef4e
Fix time-based tests (again)
2021-10-23 20:25:28 -04:00
Deluan
c3fb4e1282
Fix rules serialization
2021-10-23 20:25:28 -04:00
Deluan
9c8f779f42
Fix time-based tests
2021-10-23 20:25:28 -04:00
Deluan
815623715e
Load SmartPlaylists rules from DB
2021-10-23 20:25:28 -04:00
Deluan
7221b49b98
More tests
2021-10-23 20:25:28 -04:00
Deluan
cf8d08ec26
Initial drafts for Smart Playlists
2021-10-23 20:25:28 -04:00
Deluan
fba733708c
Sort songs by artist/album/disc/track_number before adding to playlist
2021-10-02 21:55:45 -04:00
Deluan
6c3e45de41
Add songs to playlists with drag and drop
2021-10-02 13:14:33 -04:00
Deluan
ad45ab4a04
Fix genre update chunking
2021-10-01 08:43:59 -04:00
Deluan
e17d436902
Do not attach Genres to the "Various Artists" artist
2021-09-27 21:55:33 -04:00
Deluan
5680e53949
Update genres in chunks. Should fix #1368
2021-09-26 15:55:52 -04:00
Deluan
d481864035
Some small refactorings
2021-08-22 12:16:49 -04:00
Deluan
c831dc4cdf
Use structs lib to map models to DB. Fix #1266
2021-08-01 12:04:45 -04:00
Deluan
344d7a4392
Inject DB into DataStore, instead of hardcode the dependency
2021-07-31 20:15:20 -04:00
Deluan
5b81f7a73a
Fix get song by id
2021-07-24 18:54:22 -04:00
Deluan
1cef44a543
Show in the logs which mbid will be used if multiple mbids are found for album/artist
2021-07-21 11:12:03 -04:00
Deluan
4fcb238295
Fix "too many SQL variables" error in GetStarred endpoint
2021-07-21 10:45:52 -04:00
Deluan
8afa2cd833
Remove dependency of deprecated ioutil package
2021-07-20 20:12:28 -04:00
Deluan
08840f6170
Simplify cover detection in roll-up code by left-joining synthesized table
2021-07-20 17:45:08 -04:00
Deluan
cddd1b3f6b
Simplify genre roll-up code by left-joining synthesized tables
2021-07-20 17:45:08 -04:00
Deluan
b6e9ec4db4
Optimize GetAll genres query
2021-07-20 17:45:08 -04:00
Deluan
95181d748d
Fix rollup of track genres to albums and artists.
...
See: https://github.com/navidrome/navidrome/pull/1251#issuecomment-882343022
2021-07-20 17:45:08 -04:00
Deluan
254e5673e1
Fix log message about artist with Various Artists' mbid
2021-07-20 17:45:08 -04:00
Deluan
00e418cb2a
Fix log message about multiple MBIDs
2021-07-20 17:45:08 -04:00
Deluan
2742977c63
Fix multiple id3v2.4 genres appearing as one big concatenated genre
2021-07-20 17:45:08 -04:00
Deluan
69f71be98a
Add more tests
2021-07-20 17:45:08 -04:00
Deluan
21cd50d81c
Fix aggregated values (count, size, duration) in roll-up queries
2021-07-20 17:45:08 -04:00
Deluan
a0cd585401
Fix Count methods
2021-07-20 17:45:08 -04:00
Deluan
20b7e5c49b
Add Genre filters to UI
2021-07-20 17:45:08 -04:00
Deluan
c56c7c865e
Purge unused genres at the end of the scan
2021-07-20 17:45:08 -04:00
Deluan
b56e034ce3
Add multiple genres to Artists
2021-07-20 17:45:08 -04:00
Deluan
1d8607ef6a
Remove unnecessary repositories methods
2021-07-20 17:45:08 -04:00
Deluan
5e54925520
Add multiple genres to Albums
2021-07-20 17:45:08 -04:00
Deluan
39da741a80
Add multiple genres to MediaFile
2021-07-20 17:45:08 -04:00
Deluan
7cd3a8ba67
Add genre tables, read multiple-genres from tags
2021-07-20 17:45:08 -04:00
Deluan
44e7502aef
Log warning when artist has a MBID of Various Artists
2021-07-18 18:28:51 -04:00
Deluan
b0fc684cb6
Fix small lint errors found by gocritic
2021-07-15 13:43:03 -04:00
Deluan
8d56ec898e
Use AlbumArtist tag even for compilations, when it is specified.
...
If the tracks' AlbumArtists are different, then use "Various Artists"
2021-07-15 11:53:08 -04:00
Deluan
289da56f64
Implement Scrobble buffering/retrying
2021-07-02 10:04:41 -04:00
Deluan
fb183e58e9
Only encrypts NewPassword if it is not empty, when updating the user details. Fixes #1222
2021-07-01 16:09:49 -04:00
Brian Schrameck
167fe46288
Addresses a bug that would prevent users from changing their own passwords, introduced as part of #1187 . ( #1214 )
2021-06-28 16:36:14 -04:00
Deluan
ee21f3957e
Pass userId explicitly to UserPropsRepository methods
2021-06-25 22:21:37 -04:00
Deluan
5001518260
Move user properties (like session keys) to their own table
2021-06-23 17:49:32 -04:00
Deluan
502a719e96
Implement Last.FM Desktop Auth flow endpoints
2021-06-21 18:14:01 -04:00
Deluan
97434c1789
Fix GetNowPlaying endpoint showing only the last play
2021-06-20 10:39:19 -04:00
Deluan Quintão
66b74c81f1
Encrypt passwords in DB ( #1187 )
...
* Encode/Encrypt passwords in DB
* Only decrypts passwords if it is necessary
* Add tests for encryption functions
2021-06-18 18:38:38 -04:00
Deluan
110e17b004
Make MockRepo names more consistent
2021-06-08 16:30:19 -04:00
Deluan
bebfe296a5
Allow updating only specific columns
2021-06-02 18:40:29 -04:00
Yash Jipkate
327c259a3d
Create share table and repository. ( #930 )
...
* Add share table and repository
* Add datastore mock
* Try fixing indent
* Try fixing indent - 2
* Try fixing indent - 3
* Implement rest.Repository and rest.Persistance
* Renew date
* Better error handling
* Improve field name
* Fix json name conventionally
2021-05-30 11:50:35 -04:00
Deluan
1940267a18
Handle functions with params in sort order.
...
Related to #1023
2021-05-28 17:35:32 -04:00
Steve Richter
e60f2bfa3d
User management improvements ( #1101 )
...
* Show more descriptive success messages for User actions
* Check username uniqueness when creating/updating User
* Adjust translations
* Add tests for `validateUsernameUnique()`
Co-authored-by: Deluan <deluan@navidrome.org>
2021-05-16 13:25:38 -04:00
Deluan
874b17b8f6
Require user to provide current password to be able to change it
...
Admins can change other users' password without providing the current one, but not when changing their own
2021-05-03 15:03:34 -04:00
Deluan
7feda4bea4
Add EnableUserEditing, to control whether a regular user can change their own details (default true)
2021-05-02 17:11:12 -04:00
Deluan
e3fe8399c8
Fix DevAutoCreateAdminPassword
2021-05-01 18:40:02 -04:00
Deluan
a35de2bfd1
Allow regular users to change their info, including password.
...
Should fix #199
2021-04-28 22:35:25 -04:00
caiocotts
b671d0ff7b
Better handling of album comments ( #1013 )
...
* Change album comment behaviour
* Don't check first item
* Fix previously imported album comments.
* Remove song comments if album comment is present
2021-04-24 21:40:55 -04:00
Deluan
5178f44094
Add has_rating filter to albums
2021-04-07 11:04:36 -04:00
Deluan
720e2357b7
Add option to sort Recently Added by file's mtime instead of time of import.
2021-03-12 18:18:35 -05:00
Deluan
6ee45a9ccc
Move project to Navidrome GitHub organization
2021-02-06 21:46:35 -05:00
Deluan
22145e070f
Replace custom chunking logic with a utils.BreakUpStringSlice call
2021-02-03 17:26:03 -05:00
Deluan
861b406575
Use new simplified uuid.NewString() syntax
2021-02-01 01:22:31 -05:00
Deluan
7cc9fbaaf9
Revert: Use modified time as updated_at and created_at when refreshing/creating albums
2021-02-01 00:30:45 -05:00
Deluan
9807b0b6c0
Use modified time as updated_at and created_at when refreshing/creating albums. Closes #717
2021-01-31 22:17:40 -05:00
Deluan
10e52bdd3f
Use order_* fields for sorting by album and artist
2020-12-25 12:37:16 -05:00
Deluan
9e84ce42b5
Use same album songs order for UI and Subsonic API
2020-12-25 12:37:16 -05:00
lbonn
15b289201a
Fall back to media file path when sorting
...
If files cannot be sorted by disc and track id, try by artist then
title.
One use case is a loose compilation of files with same album, album
artist, and no track numbers. File order was then undetermined, in
practice depended on insertion order in the database.
2020-12-25 12:37:16 -05:00
Deluan
db5b9246dd
Handle more sort/order cases
2020-12-23 11:37:38 -05:00
Deluan
4f90fa9924
Add denormalized list of artist_ids to album, to speed-up artist's albums queries
...
This will be removed once we have a proper many-to-many relationship between album and artist
2020-12-13 14:05:48 -05:00
Deluan
8bfaa0ad9d
Better detection of ID fields, to use = instead of LIKE
2020-11-15 18:24:13 -05:00
Deluan
98af68ac99
Import comments and lyrics
2020-11-11 10:43:17 -05:00
Deluan
9bcd606fe8
Fix Artist full_text refresh
2020-11-02 10:27:01 -05:00
Deluan
7819e834c8
Fix Artist filtering
2020-11-02 09:58:51 -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
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
1cfa7b2272
Change MediaFolder.ID type to int32
2020-10-25 23:22:52 -04:00
Deluan
173dd52fe1
Use MBID with most occurrences
2020-10-20 17:16:24 -04:00
Deluan
6663c079e0
Add MBIDs to media_file, album and artist
2020-10-20 16:27:22 -04:00
Deluan
40fd5bab34
Search for artists case-insensitive
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
2f8dc794de
Add and show Playlists sizes
2020-10-12 22:31:01 -04:00
Deluan
68a9be5e86
Add Artist (discography) size, and show sizes in Download caption
2020-10-12 22:31:01 -04:00
Jay R. Wren
fd6edf967f
Add size to album details ( #561 )
...
* add size to album details
for #534
* addressing review comments:
* create index album(size)
* remove unneeded Size field from refresh struct
* add whitespace to album details
* add size to album list view
* prettier
2020-10-12 11:10:07 -04:00
Deluan
21f7c1906d
Fix ByPath queries should not match partial filenames
2020-10-06 08:13:25 -04:00
Deluan
abd51b2156
Use Subsonic API to star/unstar
...
This removes the need to update the annotations on Put(model), removing complexity and making it less buggy
2020-10-03 20:08:51 -04:00
Deluan
f859772723
Remove dangling tracks after changing MusicFolder. Fix #445
2020-10-02 16:18:45 -04:00
Deluan
841c1129ff
Break-up album/artist refresh in chunks
2020-09-09 08:57:59 -04:00
Deluan
e50a720818
Sort by album name, then artist name
2020-09-07 16:21:29 -04:00
Deluan
596a4897a3
Do not force username to always be lowercase in the DB
2020-09-01 18:00:19 -04:00
Deluan
76e522710a
New option: SearchFullString, to match query strings anywhere in searchable fields, not only in word boundaries
...
Based on feedback from @orlea, in https://github.com/deluan/navidrome/issues/255#issuecomment-683427754
2020-08-30 13:08:10 -04:00
Deluan
a2e0acd6a2
Fix starring albums. Seems I may have lost a commit?
2020-08-15 15:03:03 -04:00
Deluan
c2e03c8162
Add stars to Albums
2020-08-14 13:35:28 -04:00
Deluan
f2ebbd26fa
Add stars to Artist
2020-08-14 13:19:32 -04:00
Deluan
ed726c2126
Better implementation of Bookmarks, using its own table
2020-08-01 12:17:15 -04:00