Commit graph

376 commits

Author SHA1 Message Date
Deluan
a6bd9f627e Make new cache layout the default 2020-11-04 23:25:38 -05: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
bf5318d776 Add flag to enable new cache layout 2020-10-26 09:54:36 -04:00
Deluan
1e56f4da76 Add simple cache warmer, disabled by default 2020-10-25 23:22:52 -04:00
Deluan
f3bb51f01b Add formatting to config dump 2020-10-25 23:22:52 -04:00
Deluan
f9e0de31b8 Fix missing last.fm and spotify config keys. Closes #589 2020-10-22 08:31:47 -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
af55b93ac8 Make taglib the default metadata extractor 2020-10-05 21:01:03 -04:00
Deluan
34eda3c8fc Add config option to select tag extractor (taglib, ffmpeg) 2020-09-08 13:33:07 -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
28d1428c90 Add option to disable .m3u auto-import 2020-08-02 23:17:13 -04:00
Deluan
0403ec2a07 Use OS-independent path separators 2020-07-28 08:49:07 -04:00
Deluan
f992b5663f Remove old scanner 2020-07-27 12:34:44 -04:00
Deluan
d46a8cf89f Allows config file to be specified with env var ND_CONFIGFILE. Fixes #415 2020-07-20 18:36:12 -04:00
Deluan
7e81a3b895 Fix default background image for login 2020-07-20 14:34:02 -04:00
Deluan
d268075046 Change the default scanner to use new implementation 2020-07-19 21:39:06 -04:00
Deluan
f0160f5d2a Rate limit login attempts using a Sliding Window counter rate-limiter 2020-07-19 14:45:05 -04:00
Deluan
51c295d1de Add new scanner algorithm, can be enabled with DevNewScanner config option 2020-07-17 12:06:49 -04:00
Deluan
74cf0ee1c1 Create Data Folder if it does not exist 2020-07-12 12:36:08 -04:00
Deluan
7c3fd38559 Add option to change IP address to bind 2020-07-08 20:54:56 -04:00
Deluan
1cc03fdd8c Add initial support for Google Analytics 2020-07-03 13:51:31 -04:00
Deluan
dd91f983b5 Add new config option to show a custom welcome message in the login screen 2020-07-03 11:51:15 -04:00
Deluan
8181aba61f Clean up a bit 2020-07-03 10:19:44 -04:00
Deluan
2d0539300d Exit if specified config file is not present 2020-07-03 10:10:49 -04:00
Deluan
6954e1b4eb Fix linting error 2020-07-03 09:46:58 -04:00
Deluan
ef9af6ed1a Don't fail if config file isnot found 2020-07-03 09:39:28 -04:00
Deluan
99e269208e Fix lint errors 2020-07-02 18:17:31 -04:00
Deluan
a65c9bbb16 Refactor and clean up 2020-07-02 17:53:51 -04:00
Deluan
d2e4cade62 Change duration config types 2020-07-02 17:53:51 -04:00
Deluan
5021c0fd0c Replace multiconfig with cobra+viper 2020-07-02 17:53:51 -04:00
Deluan
2371e9b943 Add option to set jpeg quality level. Closes #371 2020-06-29 17:20:38 -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
c742ae0843 Remove unused feature toggles 2020-06-11 22:11:59 -04:00
Deluan
7547888f10 Change default session timeout to 24h 2020-05-30 10:34:16 -04:00
Deluan
1bca8fca97 Enable UI starred by default 2020-05-23 01:07:34 -04:00
Deluan
8a68cecdb9 Add ToggleStar to SongContextMenu (WIP) 2020-05-22 15:23:42 -04:00
Deluan
41010515ee Enable Playlist Management in the UI by default 2020-05-16 19:16:48 -04:00
Deluan
f881e2a54b Add option to enable (experimental) playlists in UI 2020-05-16 18:35:34 -04:00
Deluan
4b70cc52d6 Reduce log level of config file being used 2020-05-03 14:09:31 -04:00
Deluan
cccd0235cf Add option to specify ConfigFile path 2020-05-02 23:17:38 -04:00
Deluan
c816ca4525 Add config option to enable/disable Transcoding configuration 2020-04-29 21:59:05 -04:00
jvoisin
04eb421186 Refactor a bit how ffmpeg is used to get metadata
- createProbeCommand returns a []string instead of (string, string[])
- Simplify the loop of createProbeCommand
2020-04-11 13:08:21 -04:00
Deluan
db246900a6 Introduce a new configuration to select the login background image URL 2020-04-08 09:07:15 -04:00
Deluan
1bc68c20fc Create and configure image cache 2020-04-05 22:02:06 -04:00
Deluan
75cd21da1f Add BaseURL configuration (fixes #103) 2020-04-03 19:05:38 -04:00
Deluan
15606770ca chore: removed non-working config flag 2020-03-22 01:13:55 -04:00
Deluan
0d8a2b310f fix: the default session timeout must be 30 minutes, not seconds! 2020-03-21 12:17:20 -04:00
Deluan
c8cd755451 feat: use human readable sizes in cache size configuration 2020-03-18 20:39:10 -04:00
Deluan
faac303eff feat: allow session timeout to be configurable. closes #101 2020-03-18 20:16:18 -04:00
Deluan
e02f3d3ec9 refactor: clean up unused config options 2020-03-17 15:20:35 -04:00
Deluan
1d886156d5 feat: better SQLite3 configuration, to avoid DB contention 2020-02-28 15:06:31 -05:00
Deluan
876354e58e feat: MaxTranscodingCacheSize is now specified in MB 2020-02-26 14:08:14 -05:00
Deluan
a6b0c57ce0 feat: add a proper caching system to the transcoding functionality 2020-02-20 19:25:39 -05:00
Deluan
2c146ea1fe feat: add option to auto-create admin user on first start-up
Useful for development purposes
2020-02-08 14:50:33 -05:00
Deluan
6e2454f6cc refactor: add -i to ffmpeg ProbeCommand. make it more consistent with the DownsampleCommand 2020-02-03 23:04:58 -05:00
Deluan
8372dee000 feat: experimental downsampling support 2020-02-03 22:53:57 -05:00
Deluan
d389d40db1 feat: improve logs, remove config for disable authentication 2020-02-01 17:23:03 -05:00
Deluan
90a1e6d213 feat: add server name and version to all responses
This is inline with other Subsonic compatible servers, like funkwhale, madsonic, ampache...
2020-01-30 14:43:24 -05:00
Deluan
ac4aa1ebe2 feat: PORT env var can override configured port 2020-01-26 22:18:30 -05:00
Deluan
4e3b13050b fix: tests 2020-01-26 18:25:12 -05:00
Deluan
cc6eacd608 fix: option to skip flags, to avoid breaking the tests 2020-01-26 18:00:10 -05:00
Deluan
7c2728aadc fix: only try to load config file if it exists, or else it would not load any config at all... 2020-01-26 17:09:08 -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
828dc8f0f4 feat: add -help, simplified config loading 2020-01-26 16:21:07 -05:00
Deluan
684932217e Disable loading config from flags, as it was not behaving correctly 2020-01-24 01:36:22 -05:00
Deluan
bff6f3a4bd Rename env vars prefix to ND_ 2020-01-24 01:29:31 -05:00
Deluan
137a20dd9e Change default scan interval to 1 minute 2020-01-23 22:53:19 -05:00
Deluan
bee55c04c8 Rename project to Navidrome 2020-01-23 19:44:08 -05:00
Deluan
182c0b5d5e Add configuration for scan interval. Default 5 mins 2020-01-22 08:48:02 -05:00
Deluan
f0ee41a8af Add context to all methods in engine layer 2020-01-22 08:39:57 -05:00
Deluan
c42e1bd2f5 Extract metadata from files in a directory in batch (one call to ffmpeg for all files) 2020-01-21 07:50:30 -05:00
Deluan
7529ae3752 Extract metadata with ffmpeg 2020-01-20 22:32:40 -05:00
Deluan
28cd3ec3e4 Fix startup order, setting LogLevel 2020-01-20 17:35:04 -05:00
Deluan
99c28731d4 Authenticate Subsonic API calls using the DB 2020-01-20 13:42:43 -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
Deluan
67eeb218c4 Big Refactor:
- Create model.DataStore, with provision for transactions
- Change all layers dependencies on repositories to use DataStore
- Implemented persistence.SQLStore
- Removed iTunes Bridge/Importer support
2020-01-19 16:28:09 -05:00
Deluan
123f543a94 New Folder Scanner - WIP 2020-01-17 20:54:28 -05:00
Deluan
ca2c897340 Add flag to disable startup banner 2020-01-15 17:51:52 -05:00
Deluan
5240d83fcf Replace fmt.Print with log.Error 2020-01-15 11:02:27 -05:00
Deluan
a167669717 Change default db path 2020-01-14 18:55:12 -05:00
Deluan
a99c3a8af3 Another big refactor: Back to a single folder for persistence implementation 2020-01-14 18:47:57 -05:00
Deluan
3d76144f82 Allow LogLevel to be configurable. Also add filename and line number when LogLevel>=debug 2020-01-13 19:57:36 -05:00
Deluan
536244bc44 Removed LedisDB persistence layer. May reimplement in the future (not likely thou) 2020-01-13 16:37:24 -05:00
Deluan
4b1c909a4d Make persistence provider pluggable at runtime 2020-01-11 15:27:32 -05:00
Deluan
5acc9c7a22 Make DisableAuthentication a Dev flag 2020-01-11 15:27:32 -05:00
Deluan
a4a8360a94 Add Dev flag to disable file presence verification 2020-01-11 15:27:32 -05:00
Deluan
ff5b91da54 Renamed DisableValidation to DisableAuthentication 2020-01-09 22:44:45 -05:00
Deluan
23e38ec82f Removed (almost) all remaining init() 2020-01-09 22:44:45 -05:00
Deluan
79701caca3 Removed Beego routing/controllers, converted to Chi.
Also introduced Wire for dependency injection
2020-01-09 22:44:45 -05:00
Deluan
4c61ac3272 Fix default PlsIgnoredPatterns configuration 2020-01-06 15:17:44 -05:00
Deluan
c417a00e62 Renamed project to CloudSonic 2017-04-01 09:47:14 -04:00
Deluan
62bfc85b07 Changed default port to 4533 2016-03-30 12:57:44 -04:00
Deluan
132fe06950 Cleaned default PlaylistIgnoredPatterns 2016-03-30 00:28:52 -04:00
Deluan
c2b1f9782b New configuration system 2016-03-30 00:05:57 -04:00
Deluan
9049d97820 Moving code away from conf package.
This is necessary, as the conf package will hold only configuration, and cannot have dependencies on other packages
2016-03-29 18:27:14 -04:00
Deluan
768764bea7 getRandomSongs.view (partially) implemented 2016-03-29 00:01:27 -04:00
Deluan
2319454997 search3.view implemented 2016-03-28 10:01:43 -04:00
Deluan
a562bfd17e getStarred2.view implemented 2016-03-28 09:46:16 -04:00
Deluan
615dc862af getAlbum.view implemented 2016-03-28 09:23:44 -04:00
Deluan
82576223dc getAlbumList2.view done 2016-03-27 23:04:05 -04:00
Deluan
94d76cb212 getArtist.view implemented 2016-03-27 21:27:45 -04:00
Deluan
0a137657fe getArtists.view implemented 2016-03-27 20:35:10 -04:00
Deluan
1610b2180b Removed stutter 2016-03-27 17:24:59 -04:00
Deluan
5a0864769b Isolated ledis gomate implementation in its own package 2016-03-27 17:20:46 -04:00
Deluan
ee8e9864ea Added getSong.view 2016-03-25 00:04:22 -04:00
Deluan
ea4d94fa84 Enabling CORS 2016-03-24 20:00:35 -04:00
Deluan
ea46c0a427 Put Unknown Artist in the end of the index 2016-03-24 17:52:27 -04:00
Deluan
3c8f6e9a65 Polishing 2016-03-24 14:44:21 -04:00
Deluan
b9952bc3de Playlists support (99%) complete! 2016-03-24 13:28:20 -04:00
Deluan
a27803a4d1 deletePlaylist 2016-03-24 12:17:35 -04:00
Deluan
52850c6ef0 createPlaylist 2016-03-24 12:06:39 -04:00
Deluan
fc8bb34ae3 setRating.view implemented 2016-03-23 19:37:48 -04:00
Deluan
c50b0bdc48 star/unstar implemented 2016-03-23 17:46:54 -04:00
Deluan
cdcb5c6f49 Implemented getAvatar 2016-03-21 20:31:28 -04:00
Deluan
5dd4b15079 Moving up: API level 1.8.0 2016-03-21 17:36:09 -04:00
Deluan
68c456e188 Halfway of getNowPlaying implementation 2016-03-17 10:08:47 -04:00
Deluan
4748ce142f Introduced NowPlayingRepository. Don't do anything for now 2016-03-16 20:27:48 -04:00
Deluan
b660a70688 Introduced engine.Scrobbler
Also refactored mocks into their original packages, to avoid cyclic references. Is there a better way to have mocks in GoLang tests?
2016-03-16 17:59:28 -04:00
Deluan
cdefabf760 Better log and less noise in prod mode 2016-03-15 17:31:35 -04:00
Deluan
12aedc0996 Using checksums to detect modified stats in the iTunes Library 2016-03-15 11:04:17 -04:00
Deluan
e36a4201db implemented getStarred (just for albums, for now) 2016-03-14 11:35:48 -04:00
Deluan
4d7f9ee012 Fixed iTunes location decoding 2016-03-12 11:36:24 -05:00
Deluan
4b09eeccc2 Configuring "prod" 2016-03-11 21:14:32 -05:00
Deluan
d23f5ca635 Scrobble working!!! I mean, iTunes scrobble, not Last.FM (for now) 2016-03-11 20:49:01 -05:00
Deluan
e9861e1b26 New target API version: 1.5.0 2016-03-11 15:08:37 -05:00
Deluan
ef31d1aca0 Searching by artists, spike mode 2016-03-11 00:37:07 -05:00
Deluan
29c2925a1c New API level target: 1.4.0 2016-03-11 00:35:13 -05:00
Deluan
df957814a0 Implemented artists indexing, with Gomate 2016-03-10 23:19:13 -05:00
Deluan
42f3279aaf Hack to make streaming work, but with wrong content-length 2016-03-10 11:16:28 -05:00
Deluan
de6bd1eb17 option to disable downsampling 2016-03-09 22:21:11 -05:00
Deluan
61d96421dd Fix ignore pattern 2016-03-09 19:57:22 -05:00
Deluan
fc625ac70e Options to ignore patterns in playlists full path 2016-03-09 19:50:02 -05:00
Deluan
a4e9d9da14 Option to ignore folder playlists 2016-03-09 19:06:50 -05:00
Deluan
2214e4bd4f Playlists working 2016-03-09 18:28:11 -05:00
Deluan
0d8c6b58db Grouped some API controllers by functionality 2016-03-09 10:22:10 -05:00
Deluan
7161325716 Initial wiring for getPlaylists endpoint 2016-03-09 10:09:15 -05:00
Deluan
00b4c44010 Refactored coverart logic to engine layer 2016-03-08 23:05:54 -05:00
Deluan
5be236515d Moved getAlbumList logic to engine layer 2016-03-08 19:13:36 -05:00
Deluan
8607e25c90 Moved properties to engine layer 2016-03-08 18:40:16 -05:00
Deluan
067517a916 Fixed problem with DI 2016-03-08 18:33:35 -05:00
Deluan
e10e730af1 Refactored logic from getMusicDirectory.view to the new engine layer.
This reveled a nasty bug in the DI code. Tests are broken
2016-03-08 14:19:27 -05:00
Deluan
91c660c746 Added a new layer: engine (equivalent to use cases in Clean Architecture). Should make testing things easier 2016-03-07 10:57:32 -05:00
Deluan
9783db1781 Aiming at 1.2.0 API version for first release 2016-03-04 17:05:15 -05:00
Deluan
7225807bad Initial work on downsampling
The http connection is being closed before sending all data. May have something to do with the Range header
2016-03-04 13:33:09 -05:00
Deluan
9a246b5432 First version of getAlbumList.view working.
- It still misses almost all type options
- Introduced "parent" in Child subresponse, as it was breaking DSub
2016-03-04 09:09:16 -05:00
Deluan
3b60b62aa1 Adding a "placeholder" to getUser.view endpoint 2016-03-03 18:44:39 -05:00
Deluan
c990073fc7 Cleaning up configuration file 2016-03-03 17:36:27 -05:00
Deluan
cc31366cc1 For now, download.view and stream.view are the same, as we don't have transcoding configuration on the server side 2016-03-03 15:00:58 -05:00
Deluan
29b34968eb Implemented stream 2016-03-03 14:46:19 -05:00
Deluan
053f4b72ba Adding big list of mime types, and adding support for contenty-type in
getMusicDirectory.view
2016-03-03 13:47:47 -05:00
Deluan
c9455e1955 getCoverArt.view working 2016-03-03 12:08:44 -05:00
Deluan
1b945831cc Implementing coverArt 2016-03-03 10:34:17 -05:00
Deluan
757e1992d7 Bare bones getMusicDirectory for albums! 2016-03-02 23:15:17 -05:00
Deluan
838d4bf38f getMusicDirectory bare bones for artists working 2016-03-02 22:22:31 -05:00
Deluan
9577d9ae87 Started the implementation of getMusicDirectory. Probably will need to introduce a new 'service' layer... 2016-03-02 20:00:55 -05:00
Deluan
4843ccb46c go fmt 2016-03-02 13:18:39 -05:00
Deluan
9d41f5a39f Supporting json output (except for errors) 2016-03-02 13:14:44 -05:00
Deluan
77e3aa7620 More DI 2016-03-02 10:48:30 -05:00
Deluan
272a499c7e Refactoring to a cleaner architecture 2016-03-02 09:10:28 -05:00
Deluan
c64a0f8242 Implemented proper index grouping 2016-03-01 17:54:13 -05:00
Deluan
841d8f457f Implemented ProperyRepository. Now the Scanner stores the LastScan timestamp 2016-03-01 14:40:26 -05:00
Deluan
2bb4c74ba6 Started implementing getIndex, now with TDD (brought to you by DI)! 2016-03-01 12:36:15 -05:00
Deluan
b2cdf8cadb Clearer way to create definitions 2016-03-01 10:18:02 -05:00
Deluan
4df6c43be8 Basic DI (dependency injection) working! Yay!! 2016-03-01 09:38:43 -05:00
Deluan
4efb8ab031 Moved router to conf package 2016-03-01 09:23:40 -05:00
Deluan
b0bd0a63a7 Retrofitting with tests 2016-02-29 10:04:30 -05:00
Deluan
49b512fc9c Big LedisDB refactoring 2016-02-29 01:06:42 -05:00
Deluan
ecc0df9e7c More experimenting with tiedot 2016-02-27 03:35:01 -05:00
Deluan
85ddd19c3d Implemented first repository using tiedot 2016-02-26 01:32:31 -05:00
Deluan
975327a6cb Handling request validation/authentication 2016-02-24 18:06:49 -05:00
Deluan
9a55fa1c64 Experiments with bleve, repositories and parsing itunes 2016-02-24 15:30:28 -05:00
Deluan
1a3f370ea6 Refactored responses, implemented getLicense 2016-02-24 11:40:58 -05:00
Deluan
ed1a132d8e Better Ping implementation 2016-02-24 00:29:27 -05:00
Deluan
b9e9d38a9a First endpoint: Ping 2016-02-24 00:07:57 -05:00
Deluan
5d6fd4ee6b Initial project skeleton 2016-02-23 18:41:35 -05:00