Deluan
5a891fda9e
Handle utf8 chars in paths
2020-07-22 09:36:22 -04:00
Deluan
b9b6ce066b
Auto-Import playlists found in the Music Folder
2020-07-17 22:55:51 -04:00
Deluan
d14a6031f0
Add test for case-sensitive DeleteByPath
2020-07-14 15:35:42 -04:00
Deluan
8b20c26e04
Make "ByPath" queries case-sensitive
2020-07-14 15:27:27 -04:00
Deluan
33d5459c20
Escape paths in "ByPath" queries
2020-07-14 07:20:27 -04:00
Deluan
dc8368c89c
Return counter from DeleteByPath
2020-07-12 11:53:07 -04:00
Deluan
f0ee52a98e
Fix album refresh query. Fixes #373
2020-06-29 14:17:28 -04:00
Deluan
c01d81802d
Fix album's songCount. Fixes #373
2020-06-29 11:35:51 -04:00
Deluan
890ca64f51
Fix `cover.jpg` discovery
2020-06-29 10:50:38 -04:00
Deluan
bcaf330233
Make sure to select cover art from media_file that has it. Fix #360
2020-06-27 22:16:07 -04:00
Deluan
5f40801a78
Add more logs to GC call
2020-06-26 10:23:05 -04:00
Deluan
eb109ebeb4
Remove duplicated helper functions, move them to `utils` package
2020-06-24 20:48:42 -04:00
Alex Palaistras
bb9a7fadc0
Add tests for external album cover processing
...
This implements basic tests for functionality related to loading and
processing external album covers, both on the scanning size, and on the
display side.
2020-06-24 20:48:42 -04:00
Alex Palaistras
ac5d99c079
Check MIME type for cover on refresh, display
...
Files that match the `CoverArtPriority` setting will now be considered
eligible only if their extensions are of an 'image/*' MIME type (e.g.
'.png' for 'image/png', '.jpg' for 'image/jpeg'). This prevents matching
files that will likely not be valid during display.
In addition to the above, code for returning the cover image file from
scanned data will also check against the MIME type for the path stored,
instead of attempting to re-trace `CoverArtPriority` matches. This
simplifies the code and bypasses a number of edge-cases related to
inconsistent matching.
2020-06-24 20:48:42 -04:00
Alex Palaistras
08cd28af2d
Load cover art from file directory
...
This commit adds support for loading cover art from media file
directories, according to configured filename priorities (of which an
additional, special choice of `embedded` is given).
Cover art paths are resolved during scanning and stored in the database
as part of the `album.cover_art_path` column; if embedded cover art is
matched, this will default to the path of the media file itself, and if
no cover art is matched at all.
Similarly, the `album.cover_art_id` column will default to a reference
to `media_file.id` if embedded cover art is wanted, but if an external
cover art file is matched, this will instead be set to a reference to
the `album.id` value itself, prefixed with the `al-` constant.
Stored cover art paths are once again resolved and matched against
configuration when covers are requested; that is, any change in
configuration between scanning and requesting cover art may not return
correct data until a re-scan is complete.
Tests will be added in future commits.
2020-06-24 20:48:42 -04:00
Deluan
2d1d992e17
Support Windows paths
2020-06-14 03:11:16 -04:00
Deluan
e73b71aaf7
Remove tracks from DB that were deleted while Navidrome was not running. Fixes #151
2020-06-14 03:11:16 -04:00
Deluan
3190611ec8
Call `ffmpeg` in batches
2020-06-14 03:11:16 -04:00
Deluan
6a3dabbb06
Optimize queries by path
2020-06-14 03:11:16 -04:00
Deluan
0033966c25
No need to delete the playlist tracks explicitly
2020-06-10 18:07:10 -04:00
Deluan
94d88395e7
Add referential integrity to player and playlist tables
2020-06-10 18:07:10 -04:00
Deluan
c9bcb333ae
Add more options to Players list
2020-06-10 18:07:10 -04:00
Deluan
29c7513879
Update `updated_at` field when modifying the playlist
2020-06-09 07:55:35 -04:00
Deluan
b4e06c416d
Allow toggling a playlist public from the Playlist list view. Closes #344
2020-06-08 18:39:31 -04:00
Deluan
c6f23139bc
Handle playlist's permissions on server
2020-06-05 11:55:29 -04:00
Deluan
331fa1d952
Add ability to reorder playlist items
2020-06-04 19:05:41 -04:00
Deluan
d8699b03bd
Fix album sort fields
2020-05-28 20:48:58 -04:00
Deluan
201a22e613
Change index in playlist to start from `1`
2020-05-26 13:50:15 -04:00
Deluan
aaa4f1531e
Ignore brackets in search
2020-05-25 11:05:30 -04:00
Deluan
e811816021
Fix pagination in Songs when filtered by starred
2020-05-23 00:43:45 -04:00
Deluan
9331be67a3
Fix pagination in Songs
2020-05-23 00:17:35 -04:00
Deluan
ec0002e77a
Add a sortable Starred column and a Starred filter to Song List
2020-05-22 23:10:58 -04:00
Deluan
8a68cecdb9
Add ToggleStar to SongContextMenu (WIP)
2020-05-22 15:23:42 -04:00
Deluan
17df63b550
Fix `child.size` and `directory.playCount` compatibility with Subsonic API. Fixes #304
2020-05-19 23:51:23 -04:00
Deluan
c2d1e9df9f
Remove orphan tracks from playlists after they are removed from library
2020-05-18 20:32:01 -04:00
Deluan
d1a0ffaaee
Check permissions in playlists
2020-05-16 23:14:28 -04:00
Deluan
12cf2f1104
Remove tracks from playlist
2020-05-16 18:35:34 -04:00
Deluan
e81a9dd1b5
Add tracks to playlist
2020-05-16 18:35:34 -04:00
Deluan
8a709c489a
Add playlist views
2020-05-16 18:35:34 -04:00
Deluan
5682d0e721
Remove tracks from Playlist's GetAll
2020-05-16 18:35:34 -04:00
Deluan
8f9601090c
Add helper functions tests
2020-05-16 18:35:34 -04:00
Deluan
aebee651ac
Add nested resource `playlist/{id}/tracks`
2020-05-16 18:35:34 -04:00
Deluan
a56e588c8e
Create relation table for playlist tracks
2020-05-16 18:35:34 -04:00
Deluan
27de18f8c9
Fix typo
2020-05-16 18:35:34 -04:00
Deluan
4e613be960
Add playlists REST endpoint
2020-05-16 18:35:34 -04:00
Deluan
f8362a4acb
Fix staticcheck's SA1029
2020-05-13 16:49:55 -04:00
Deluan
5ce3135f00
Fix gosec's G601
2020-05-13 15:32:42 -04:00
Deluan
0d9361734f
Import and display disc subtitles
2020-05-12 12:57:53 -04:00
Deluan
0d1e2a92f6
Make MediaFolder ID int32
2020-05-09 22:29:02 -04:00
Deluan
70047fe20e
Add `songCount` column to Artist table
2020-05-08 10:05:48 -04:00
Deluan
c585ca7131
Add `random` as a valid sort option for `song` resource
2020-05-05 16:17:09 -04:00
Deluan
dbde5330bd
Mark helper function as unexported
2020-05-01 09:17:21 -04:00
Deluan
5cd453afeb
Fix all `errcheck` warnings
2020-04-26 15:07:36 -04:00
Deluan
03c3c192ed
Fixing static checks about passing nil context
2020-04-26 15:07:36 -04:00
Deluan
8dcca76ec9
Fix various small sort issues
2020-04-24 17:37:28 -04:00
Deluan
e6f798811d
Generate Artist Index using the OrderArtistName
2020-04-24 15:02:20 -04:00
Deluan
69c19e946c
Add sort tags and use them in search
2020-04-24 15:02:20 -04:00
Deluan
80c8d85cb9
Fine tune search functionality
2020-04-19 23:29:07 -04:00
Deluan
69dc4d97b3
Always fill album's min_year if max_year is filled
2020-04-17 21:44:34 -04:00
Deluan
4b1c76e307
Keep the order of the playlist when adding new songs. Also allow adding a song more than once
2020-04-11 21:24:15 -04:00
Deluan
9fb4f5ef52
Removed Playlist.GetWithTracks, not needed anymore
2020-04-11 19:05:51 -04:00
Deluan
e232c5c561
Add `created` and `changed` fields to playlists responses
2020-04-11 18:58:43 -04:00
Deluan
5265d0234f
Fix tests for Cover service
2020-04-09 12:13:54 -04:00
Deluan
43ce81af67
Add all individual artists from album in searchable full text field. Should fix #94
2020-04-08 23:54:54 -04:00
Deluan
b8d1185f7f
Remove duplicated words and extra spaces from full text searchable fields
2020-04-08 23:29:28 -04:00
Deluan
46f4f63212
feat: initial implementation of album lists
2020-03-29 00:01:08 -04:00
Deluan
777231ea79
feat: expose album, song and artist annotations in the RESTful API
2020-03-28 19:22:55 -04:00
Deluan
0e36ed35a3
fix: typo
2020-03-28 18:50:18 -04:00
Deluan
0ca849a61a
feat: show year range in album view and match ranges in year filter. #118
2020-03-27 21:11:06 -04:00
Deluan
53e8a92fed
feat: rename year to max_year and add min_year to album. #118
2020-03-27 21:11:06 -04:00
Deluan
b03519b09c
fix: configured transcodings not appearing in players view
2020-03-27 19:12:11 -04:00
Deluan
dcb3b3b5d1
fix: various album_artists <-> artists mismatches
2020-03-26 09:08:53 -04:00
Deluan
5331732236
fix: remove sql injection
2020-03-25 20:40:18 -04:00
Deluan
dc973ae670
refactor: remove unused code
2020-03-25 20:40:18 -04:00
Deluan
100db2bcfd
feat: add artist filter to album view
2020-03-25 20:40:18 -04:00
Deluan
b4c7cac964
refactor: moved magic strings to consts
2020-03-24 11:59:10 -04:00
Deluan
20075ae68d
refactor: extracted restful helpers into their own composable struct
2020-03-21 20:00:46 -04:00
Deluan
f6e448c1ba
refactor: removed unused code, unnecessary typecasts and fixed small warnings
2020-03-20 00:07:36 -04:00
Deluan
8401d85f78
feat: search in WebUI now is more flexible, searching in all relevant fields in the current view
2020-03-19 22:26:18 -04:00
Deluan
32fbf2e9eb
refactor: drop search table, integrated full_text into main tables
2020-03-19 21:44:48 -04:00
Deluan
8cdd4e317d
feat: allow restful filter customization per field
2020-03-19 21:09:57 -04:00
Deluan
97d95ea794
fix: group compilations together in the restful API. fix #93
2020-03-19 15:02:11 -04:00
Deluan
811703ab60
fix: create default transcodings on existing installations
2020-03-17 16:49:37 -04:00
Deluan
68a49befc8
feat: allow regular users to change their players' configuration
2020-03-17 15:20:35 -04:00
Deluan
c8b0d2bfae
feat: select correct transcoding for streaming
2020-03-17 15:20:35 -04:00
Deluan
39993810b3
feat: add `transcodedSuffix` to Subsonic API responses
2020-03-17 15:20:35 -04:00
Deluan
8ec78900c5
feat: transcoding and player datastores and configuration
2020-03-17 15:20:35 -04:00
Deluan
9235ab6414
fix: index albumArtist as part of the album searchable fields
2020-03-07 13:10:20 -05:00
Deluan
6f5a322927
fix: login must be case-insensitive
2020-03-01 15:45:41 -05:00
Deluan
a7f8e4ee2b
fix: only set created_at when adding data to DB
2020-02-28 18:43:22 -05:00
Deluan
0850872b0f
fix: ormer.Driver() is not available when creating orms with NewOrmWithDB()
2020-02-28 16:09:27 -05:00
Deluan
faa2a978c0
refactor: use only one DB instance for the whole application
2020-02-28 15:06:31 -05:00
Deluan
65a792be3a
fix: handle nil pointer dereference
2020-02-28 11:02:38 -05:00
Deluan
33ede13eef
fix: check if album is starred before adding the starred date in the response. also return "starred" in search responses
2020-02-24 22:06:12 -05:00
Deluan
d2eea64528
fix: typo
2020-02-23 21:41:10 -05:00
Deluan
fc14e346b9
feat: store duration as float, to cater for milliseconds
2020-02-20 17:02:06 -05:00
Deluan
8a31e80b7a
fix: find songs and albums when sending an artist name search query
2020-02-09 19:52:06 -05:00
Deluan
5a95feeedc
fix: allow searches with 2 chars. closes #65
2020-02-09 12:20:34 -05:00
Deluan
029290f304
fix: set default play_count to 0
...
IncPlayCount was not incrementing when the annotation already existed with play_count = null
2020-02-08 22:55:05 -05:00
Deluan
7aab82c246
feat: enable overriding sql sorting
2020-02-06 18:41:34 -05:00
Deluan
6978790e96
feat: allow regular users to login to the UI
2020-02-05 22:22:44 -05:00
Deluan
e0308acef3
feat: add lapsed time to SQL logger, to help detect SQL bottlenecks
2020-02-05 08:47:32 -05:00
Deluan
464880dd31
refactor: use stdlib `filepath.FromSlash`
2020-02-03 17:53:59 -05:00
Deluan
ff8c18e0f4
fix: don't log empty sql responses as errors
2020-02-02 21:29:27 -05:00
Deluan
d4365b9f64
refactor: read musicFolderId from request (but still don't use it)
2020-02-01 17:23:03 -05:00
Deluan
b62b78edfe
refactor: better SQL logging
2020-02-01 17:23:03 -05:00
Deluan
7c4511e33a
refactor: consolidate query executions into two functions `queryOne` and `queryAll`
2020-02-01 17:23:03 -05:00
Deluan
7e65bb8f20
refactor: better integration between `db` and `persistence` packages
...
Will address support for different DBs in the future (+1 squashed commit)
Squashed commits:
[a014757] refactor: better integration between `db` and `persistence` packages
2020-02-01 17:23:03 -05:00
Deluan
a6b8f40ac3
refactor: remove prefix New from SQLStore
2020-02-01 17:23:03 -05:00
Deluan
0d0787e656
refactor:clean annotations in GC
2020-02-01 17:23:03 -05:00
Deluan
88e01d05f6
refactor: annotations
2020-02-01 17:23:03 -05:00
Deluan
de1fea64bc
refactor: introduce GC, to delete old data
2020-02-01 17:23:03 -05:00
Deluan
5d1df19291
fix: manually set timestamps, as we don't rely on the ORM anymore
2020-02-01 17:23:03 -05:00
Deluan
0b91d8a30e
refactor: more SQL logs
2020-02-01 17:23:03 -05:00
Deluan
cdbbb2f596
fix: Find/DeleteByPath
2020-02-01 17:23:03 -05:00
Deluan
44671c59c0
refactor: fix rest filter
2020-02-01 17:23:03 -05:00
Deluan
d9f61a278c
refactor: some clean-up
2020-02-01 17:23:03 -05:00
Deluan
a260e65307
refactor: add GetStarred to artists
2020-02-01 17:23:03 -05:00
Deluan
5a4c763510
refactor: add search back to albums and artists
2020-02-01 17:23:03 -05:00
Deluan
d755609d13
refactor: add search back to mediafiles
2020-02-01 17:23:03 -05:00
Deluan
4f4af34595
fix: DB pagination
2020-02-01 17:23:03 -05:00
Deluan
f5071d1614
refactor: adding back artist and album tables
2020-02-01 17:23:03 -05:00
Deluan
d389d40db1
feat: improve logs, remove config for disable authentication
2020-02-01 17:23:03 -05:00
Deluan
72d9ddf532
refactor: remove annotation handling from engine
2020-02-01 17:23:03 -05:00
Deluan
67ed830a68
refactor: add filters
2020-02-01 17:23:03 -05:00
Deluan
71c1844bca
refactor: new persistence, more SQL, less ORM
2020-02-01 17:23:03 -05:00
Deluan
0d2911daf9
refactor: add Context to the persistence layer
2020-01-27 09:41:33 -05:00
Deluan
0ff741b394
fix: persistence tests were not being properly initialized
2020-01-26 17:10:13 -05:00
Deluan
f9db80c409
feat: add conf for data folder, default current folder (not ./data anymore)
2020-01-26 16:42:56 -05:00
Deluan
58a7879ba8
feat: first time admin user creation through the ui
2020-01-25 17:10:16 -05:00
Deluan
bff6f3a4bd
Rename env vars prefix to ND_
2020-01-24 01:29:31 -05:00
Deluan
bee55c04c8
Rename project to Navidrome
2020-01-23 19:44:08 -05:00
Deluan
ed31b6fa31
Remove unused code
2020-01-22 15:42:29 -05:00
Deluan
1f58bf47d6
Fix GetStarred for all item types
2020-01-22 15:19:37 -05:00
Deluan
7dc3f49c1c
Initial support for artist browsing from UI. Also add linking between resources
2020-01-22 13:02:19 -05:00
Deluan
ea30b4c2d9
Initial support for album browsing from UI
2020-01-22 12:32:31 -05:00
Deluan
9557f7ceed
Initial support for song browsing from UI
2020-01-22 10:47:43 -05:00
Deluan
c73f549c83
Don't try to get albums if ids is empty
2020-01-22 01:03:49 -05:00
Deluan
c8a74881d8
Fix album lists, to use annotations
2020-01-22 01:00:00 -05:00
Deluan
d7116eebd4
Implement annotations per user
2020-01-21 23:03:37 -05:00
Deluan
d4adc784cc
Return playlist duration in getPlayList
2020-01-21 18:10:29 -05:00
Deluan
dce2a1399d
Rename for clarity
2020-01-21 17:50:56 -05:00
Deluan
57fcdac428
Initial support for playlists. Missing permissions
2020-01-21 16:39:35 -05:00
Deluan
de0816da67
Reimplemented GetAlbumList&type=random and GetRandomSongs (now with filter by genres)
2020-01-21 08:49:43 -05:00
Deluan
6cd758faa0
Removed empty clause
2020-01-21 08:48:14 -05:00
Deluan
c6ed0d5377
Remove flag to allow override media annotation
2020-01-20 18:19:16 -05:00
Deluan
99c28731d4
Authenticate Subsonic API calls using the DB
2020-01-20 13:42:43 -05:00
Deluan
e717d99780
Authenticate UI
2020-01-20 10:25:35 -05:00
Deluan
6785d616d0
Remove unused PurgeInactive methods
2020-01-20 08:16:22 -05:00
Deluan
491bfb1f69
Create initial user if User table is empty. Also make model.QueryOptions compatible with rest.QueryOptions
2020-01-19 22:47:22 -05:00