Commit graph

209 commits

Author SHA1 Message Date
Deluan
03640ca93d Fix background images when BaseURL is specified 2022-11-29 14:48:05 -05:00
Deluan
f82df70302 Add nilerr linter 2022-09-30 20:18:14 -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
778f474d26 Use new rest lib (Update receives all columns that need to be updated) 2021-11-01 21:27:36 -04:00
Steve Richter
a56d5bc850
Listenbrainz scrobbling (#1424)
* Refactor session_keys to its own package

* Adjust play_tracker

- Don't send external NowPlaying/Scrobble for tracks with unknown artist
- Continue to the next agent on error

* Implement ListenBrainz Agent and Auth Router

* Implement frontend for ListenBrainz linking

* Update listenBrainzRequest

- Don't marshal Player to json
- Rename Track to Title

* Return ErrRetryLater on ListenBrainz server errors

* Add tests for listenBrainzAgent

* Add tests for ListenBrainz Client

* Adjust ListenBrainzTokenDialog to handle errors better

* Refactor listenbrainz.formatListen and listenBrainzRequest structs

* Refactor agent auth_routers

* Refactor session_keys to agents package

* Add test for listenBrainzResponse

* Add tests for ListenBrainz auth_router

* Update ListenBrainzTokenDialog and auth_router

* Adjust player scrobble toggle
2021-10-30 12:17:42 -04:00
certuna
ba0ee6aba4
Rename manifest.json to manifest.webmanifest (#1399)
* Rename manifest.json to manifest.webmanifest

browser consoles keep complaining that the manifest doesn't have the `.webmanifest` extension.

* FIx manifest.webmanifest references

Co-authored-by: Deluan <deluan@navidrome.org>
2021-10-12 20:06:09 -04:00
caiocotts
210dc6b12e
Add x-total-count to Subsonic API getAlbumList (#1360)
* Add x-total-count to Subsonic API getAlbumList

* Rename variable

Co-authored-by: Deluan <deluan@navidrome.org>
2021-09-21 20:40:39 -04:00
Deluan
ab2912b4fa Only import playlists from configured paths in option PlaylistsPath. Closes #1181
Syntax is Ant-style Globs, with support for '**' (any subfolder). Default: '.:**' (or '.;**' in Windows`, meaning all folders and subfolders under `MusicFolder`
2021-09-12 21:07:51 -04:00
Deluan
d481864035 Some small refactorings 2021-08-22 12:16:49 -04:00
caio
e9d0abe0bc Support local paths as urls in playlists. 2021-08-02 23:53:47 -04:00
Deluan
289da56f64 Implement Scrobble buffering/retrying 2021-07-02 10:04:41 -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
056f0b944f Refactor: Consolidate scrobbling logic in play_tracker 2021-06-23 11:01:58 -04:00
Deluan
a7509c9ff7 Send NowPlaying and Scrobbles to Last.fm 2021-06-23 11:01:58 -04:00
Deluan
143cde37e5 Implement Last.FM Web authentication flow 2021-06-21 18:14:01 -04:00
Deluan
502a719e96 Implement Last.FM Desktop Auth flow endpoints 2021-06-21 18:14:01 -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
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
ed01946ace Embed Last.FM error responses, making the tests faster 2021-05-27 21:04:03 -04:00
Deluan Quintão
89b12b34be
Retry calls to Last.FM without MBIDs when if returns artist invalid (#1138)
* Call Last.FM's getInfo again without mbid when artist is not found

* Call Last.FM's getSimilar again without mbid when artist is not found

* Call Last.FM's getTopTracks again without mbid when artist is not found
2021-05-27 20:53:24 -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
Brian Schrameck
30bb3f7b43
BPM metadata enhancement (#1087)
* BPM metadata enhancement

Related to #1036.

Adds BPM to the stored metadata about MediaFiles.

Displays BPM in the following locations:
- Listing songs in the song list (desktop, sortable)
- Listing songs in playlists (desktop, sortable)
- Listing songs in albums (desktop)
- Expanding song details

When listing, shows a blank field if no BPM is present. When showing song details, shows a question mark.

Updates test MP3 file to have BPM tag. Updated test to ensure tag is read correctly.

Updated localization files. Most languages just use "BPM" as discovered during research on Wikipedia. However, a couple use some different nomenclature. Spanish uses PPM and Japanese uses M.M.

* Enhances support for BPM metadata extraction

- Supports reading floating point BPM (still storing it as an integer) and FFmpeg as the extractor
- Replaces existing .ogg test file with one that shouldn't fail randomly
- Adds supporting tests for both FFmpeg and TagLib

* Addresses various issues with PR #1087.

- Adds index for BPM. Removes drop column as it's not supported by SQLite (duh).
- Removes localizations for BPM as those will be done in POEditor.
- Moves BPM before Comment in Song Details and removes BPM altogether if it's empty.
- Omits empty BPM in JSON responses, eliminating need for FunctionField.
- Fixes copy/paste error in ffmpeg_test.
2021-05-05 21:35:01 -04:00
Deluan
b8138ebad6 Fix create first login 2021-05-02 14:13:17 -04:00
Deluan
e3fe8399c8 Fix DevAutoCreateAdminPassword 2021-05-01 18:40:02 -04:00
whorfin
20d2726faa
Improve scanner (#1054)
* Handle subdirectories without rx permission correctly
Allow ogg files w/o metadata, having taglib behave more like ffmpeg

* Fix test for walk_dir_tree, fix full reading of files in permission-
constrained directories, allow directories with leading ellipses

* Sorted directory traversal is preferred, and cleanup tests

* Small refactoring to clean-up `loadDir` function and to remove some "warnings" from IntelliJ

Co-authored-by: Deluan <deluan@navidrome.org>
2021-04-28 19:51:02 -04:00
Deluan
6ee45a9ccc Move project to Navidrome GitHub organization 2021-02-06 21:46:35 -05:00
Deluan
aee4eb71c4 Add support for multi-line tags 2020-11-11 09:45:46 -05:00
Deluan
2f394623c8 WIP 2020-10-29 23:19:26 -04:00
Deluan
d0bf37a8a9 Move mock datastore to tests package 2020-10-27 15:23:49 -04:00
Deluan
4514a54744 Fix ignoring hidden folders when scanning 2020-10-22 13:59:54 -04:00
Deluan
049ac70b2b Add "real" TopSongs 2020-10-20 22:53:52 -04:00
Deluan
e9e09a7480 Add dedicated SimilarArtists call 2020-10-20 16:07:31 -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
8dfc259857 Serve robots.txt from root (http://server/robots.txt) 2020-10-02 10:15:19 -04:00
Deluan
a45c08f217 Ignore "hidden" files when importing a folder 2020-08-21 11:50:18 -04:00
Deluan
b836871161 Handle CR, LF and CRLF line endings when importing Playlists 2020-08-19 12:22:41 -04:00
Deluan
178e42487b Remove invalid config options 2020-07-17 23:16:04 -04:00
Deluan
17830d63b4 Ignore m3u files when scanning 2020-07-03 21:06:33 -04:00
Deluan
a65c9bbb16 Refactor and clean up 2020-07-02 17:53:51 -04:00
Deluan
5021c0fd0c Replace multiconfig with cobra+viper 2020-07-02 17:53:51 -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
Deluan
9e845cb116 Skip scanning folders if they contain a .ndignore file. Closes #297 2020-05-18 14:37:01 -04:00
Deluan
cccd0235cf Add option to specify ConfigFile path 2020-05-02 23:17:38 -04:00
Deluan
5862157a2c Move test file to fixtures folder 2020-04-28 11:59:47 -04:00
Deluan
5cd453afeb Fix all errcheck warnings 2020-04-26 15:07:36 -04:00
Deluan
d7edbf93f0 Make test more reliable
In some systems, it was detecting the `go.mod` file as an audio file, probably because of the system's mime-type configuration
2020-04-24 11:05:17 -04:00
Deluan
5a072fbd10 Follow symlinks to directories when scanning 2020-04-23 20:31:44 -04:00
Deluan
b930c7253a Fix tests in pipeline 2020-04-06 17:01:48 -04:00
Deluan
faa2a978c0 refactor: use only one DB instance for the whole application 2020-02-28 15:06:31 -05:00
Deluan
28bad95e66 test: removed unused file property 2020-02-04 19:59:04 -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
0ff741b394 fix: persistence tests were not being properly initialized 2020-01-26 17:10:13 -05:00
Deluan
bee55c04c8 Rename project to Navidrome 2020-01-23 19:44:08 -05:00
Deluan
7610b42f4b Moved package api to subsonic under server 2020-01-19 18:23:09 -05:00
Deluan
a4b75fd69d Test "Compilation" tag 2020-01-18 11:19:00 -05:00
Deluan
123f543a94 New Folder Scanner - WIP 2020-01-17 20:54:28 -05:00
Deluan
a167669717 Change default db path 2020-01-14 18:55:12 -05:00
Deluan
5acc9c7a22 Make DisableAuthentication a Dev flag 2020-01-11 15:27:32 -05:00
Deluan
ff5b91da54 Renamed DisableValidation to DisableAuthentication 2020-01-09 22:44:45 -05:00
Deluan
84d69a4f41 Replaced Beego logging 2020-01-09 22:44:45 -05:00
Deluan
e8a8313b43 Removed inject lib, only use wire for DI 2020-01-09 22:44:45 -05:00
Deluan
7202f618fe Upgrades to Beego v1.8.0 2017-04-01 10:59:31 -04:00
Deluan
c417a00e62 Renamed project to CloudSonic 2017-04-01 09:47:14 -04:00
Deluan
c2b1f9782b New configuration system 2016-03-30 00:05:57 -04:00
Deluan
83e0a7b24c Fixing some lint warnings 2016-03-26 22:43:13 -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
2437eed586 Removed unnecessary "else"s 2016-03-10 09:37:35 -05:00
Deluan
60d4cb5d9f Converted all collections from repositories to *collections 2016-03-08 20:33:09 -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
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
fc6d49d34c Introduced types for the collections 2016-03-03 21:01:55 -05:00
Deluan
c9455e1955 getCoverArt.view working 2016-03-03 12:08:44 -05:00
Deluan
012958cd08 go fmt 2016-03-03 00:46:23 -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
4f5af423a8 More getMusicDirectory 2016-03-02 21:19:32 -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
4ee840a394 Rename 2016-03-02 17:35:37 -05:00
Deluan
dde130e84e Small fixes to response marshaling, introduced tests for response formats 2016-03-02 17:23:26 -05:00
Deluan
4843ccb46c go fmt 2016-03-02 13:18:39 -05:00
Deluan
272a499c7e Refactoring to a cleaner architecture 2016-03-02 09:10:28 -05:00
Deluan
6092076fad No need to expose implementations 2016-03-01 19:17:30 -05:00
Deluan
b8948c417e Checking ifModifiedSince param 2016-03-01 16:05:49 -05:00
Deluan
841d8f457f Implemented ProperyRepository. Now the Scanner stores the LastScan timestamp 2016-03-01 14:40:26 -05:00
Deluan
b0bd0a63a7 Retrofitting with tests 2016-02-29 10:04:30 -05:00
Deluan
ce240cfeff Better tests organization 2016-02-27 18:42:08 -05:00
Deluan
ecc0df9e7c More experimenting with tiedot 2016-02-27 03:35:01 -05:00
Deluan
e760952263 go fmt 2016-02-25 18:52:07 -05:00
Deluan
39757f884a Moved Rest controllers to 'api' package. Also removed annotation routes 2016-02-25 16:35:44 -05:00
Deluan
f04ec42fdf Controller tests are in fact API tests 2016-02-25 12:41:34 -05:00
Deluan
77e01f8e7c Fixed packages in tests 2016-02-25 11:14:16 -05:00
Deluan
ee04b72db1 Implemented request validation in a filter 2016-02-24 20:21:51 -05:00
Deluan
93f115d8e4 Default mediaFolder should have Id = 0 2016-02-24 19:35:58 -05:00
Deluan
2f3c9a7603 Implemented getMediaFolders 2016-02-24 19:14:48 -05:00
Deluan
59b541e45d Polishing 2016-02-24 18:33:13 -05:00
Deluan
086d8e1578 Tests refactored 2016-02-24 18:24:06 -05:00
Deluan
975327a6cb Handling request validation/authentication 2016-02-24 18:06:49 -05:00
Deluan
c8b7695b09 Moved responses package and started getMusicFolders endpoint 2016-02-24 15:29:19 -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