Commit Graph

275 Commits

Author SHA1 Message Date
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