Deluan
798b03eabd
Add "inspect" command to CLI
2023-12-27 12:41:28 -05:00
Deluan
ea7ba22699
Discard duplicated tags
2023-12-26 19:35:14 -05:00
Andrew Katsikas
b4815ecee5
Add TAK support ( #2745 )
...
* bug(consts/mime_types): tak-support - 2514
Add tak to mime_types audioFormats
Signed-off-by: apkatsikas <apkatsikas@gmail.com>
* bug(scanner): tak-support - 2514
Add tak test fixture file and add fixes for tag_scanner and walk_dir_tree tests
Signed-off-by: apkatsikas <apkatsikas@gmail.com>
* Remove comment
---------
Signed-off-by: apkatsikas <apkatsikas@gmail.com>
2023-12-26 18:39:15 -05:00
Deluan
51e07d4cb5
Add log.IsGreaterOrEqualTo, that take into consideration path-scoped log levels
2023-12-25 16:35:16 -05:00
Deluan
03119e5ccf
Add more trace log to TagLib Wrapper
2023-12-23 14:10:38 -05:00
Deluan
a6ed0442f2
Name mapDates return values
2023-12-20 16:29:39 -05:00
Deluan
0e3175ea17
Better workaround for Go 1.20 missing context.WithoutCancel
2023-12-16 13:33:03 -05:00
Deluan
d3f6b4692d
Temporary fix for scan context cancellation for Go 1.20
2023-12-15 07:59:34 -05:00
Deluan
70effa09e8
Don't cancel Scan on context cancellation
2023-12-14 22:52:48 -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
caiocotts
2f2fbeb009
Fix ld warnings on taglib_wrapper.
2023-12-04 15:19:12 -05:00
Kendall Garner
742fd16a01
Parse more itunes keys, optimize taglib wrapper ( #2680 )
...
* parse more itunes keys
* Move special iTunes M4A logic to Go code
* Simplify ASF/WMA tags handling
* Simplify ASF/WMA tags handling even more, moving compilation logic to `metadata` normalizer
* Remove strdups from C++ code, `C.GoString` already duplicates the strings
* reduced set
* remove strdup
* Small nitpick
---------
Co-authored-by: Deluan <deluan@navidrome.org>
2023-12-03 14:19:16 -05:00
Deluan
9aa7b80d0d
Generalize BreakUp/RangByChunks functions
2023-11-25 12:13:36 -05:00
caiocotts
eebfbc5381
Revert walk_dir_tree.go back to using the os package.
2023-11-21 07:17:22 -05:00
Kendall Garner
79870b1090
Do not empty old artist metadata ( #2423 )
2023-11-16 19:20:37 -05:00
Kendall Garner
3debd31b12
Add more replaygain tests, fix wma ( #2356 )
...
* add more replaygain tests, fix wma
* Convert individual specs to a table spec
* Fix pipeline, by commenting incompatible tests
---------
Co-authored-by: Deluan <deluan@navidrome.org>
2023-11-14 20:25:18 -05:00
certuna
40841ab917
Small date mapping fix ( #2584 )
...
* Update mapping.go
fallback in the case there's no Date tagged but Original Date or Release Date are tagged
* Add tests
---------
Co-authored-by: Deluan <deluan@navidrome.org>
2023-11-11 17:13:07 -05:00
certuna
03175e1a9d
Use file creation date for Date Added/CreatedAt ( #2553 )
...
* Update mapping.go
CreatedAt = BirthTime
* Update metadata.go
Add BirthTime() function
* Update spread_fs.go
Replacing djherbis/atime package with djherbis/times, as times includes the functionality of atime
* Update go.mod
remove djherbis/atime, add djherbis/times
* Update mapping.go
time package not used anymore
* Update go.sum
removed djherbis/atime, added djherbis/times
* Update spread_fs.go
revert to previous, cannot get rid of /atime after all since it's a dependency of /fscache
* Update go.mod
djherbis/times 1.6.0 now released
* Update go.sum
new sums
* Update metadata.go
Inverted if statement, more readable
* Update go.mod
format fix
* Update go.sum
format fix
* Update go.sum
format fix
* Update go.sum
format fix
* Update metadata.go
variable name times -> fileProperties
check for errors
* Update metadata.go
reverse order of error check
* Update metadata.go
typo
* Update metadata.go
https://github.com/navidrome/navidrome/pull/2553#issuecomment-1787967615
2023-11-01 16:41:07 -04:00
Sam Watson
26472f46fe
POST endpoint for importing m3u playlists - #2078 ( #2273 )
...
* wip: API endpoint for creating playlists from m3u files
* wip: get user id from context
* temporarily disable failing test
* custom logic for playlist route to accomodate m3u content type
* incorporate playlist parsing into existing logic in core
* re-enable test
* fix locally failing test
* Address requested changes.
* Improve ImportFile tests.
* Remove ownerID as a parameter of ImportM3U.
* Write tests for ImportM3U.
* Separate ImportM3U test into two.
* Test OwnerID and playlist Name.
---------
Co-authored-by: Sam Watson <SwatsonCodes@users.noreply.github.com>
Co-authored-by: caiocotts <caio@cotts.com.br>
2023-11-01 14:59:47 -04:00
BenzLeung
3e14c3c4f8
Add support for lyrics tag unsynced lyrics ( #2391 )
...
* Add support for lyrics tag `unsynced_lyrics`
* Update metadata.go
* Update metadata.go
resolve lint issue
* format the code with `goimports`
format the code with `goimports`
2023-06-20 09:32:49 -04:00
Philipp Wolfer
c8608956be
Fix listenbrainz submission and clarify MusicBrainz recording ID field ( #2279 )
...
* Fix MB recording ID parameter name for ListenBrainz submission
This follows the ListenBrainz API documentation.
Fixes #1657
* Rename MediaFile.MbzTrackID to MbzRecordingID
This better reflects the actual data. That the MusicBrainz
recording ID is stored in file metadata as musicbrainz_trackid
is a historical artifact.
* Rename database column mbz_track_id to mbz_recording_id
2023-06-16 18:00:01 -04:00
David Casado
7c92a73208
Ignore playlists starting with a dot - #2367 ( #2390 )
2023-06-16 15:55:17 -04:00
Deluan
f5d97823e8
Fix original date (TDOR) mapping for ffmpeg extractor
2023-06-06 19:13:45 -04:00
Deluan
d6083dab6e
Re-apply "Refactor walkDirTree to use fs.FS" but remove context cancelation logic.
...
This reverts commit 6b3b4d83ff .
2023-06-04 15:06:19 -04:00
Deluan
6b3b4d83ff
Revert "Refactor walkDirTree to use fs.FS"
...
This reverts commit 3853c3318f .
2023-06-04 14:13:33 -04:00
Deluan
3853c3318f
Refactor walkDirTree to use fs.FS
2023-06-03 22:25:19 -04:00
Deluan
8faaa3cf91
Use table specs in getDate tests
2023-05-19 17:03:14 -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
010ba0d15c
Use table specs in ReplayGain tests.
...
Also use test.mp3 file from Release Date PR, trying to fix a conflict.
2023-05-19 14:49:15 -04:00
Kendall Garner
a19a643c65
Manually add replaygain tags for m4a ( #2346 )
...
* manually add replaygain tags for m4a
* Add replaygain tests for m4a, mp4, ogg
* add new valye for bitrate
2023-05-17 16:00:16 -04:00
Deluan
61dd8d55ca
Fix data race in scanner
2023-04-04 10:51:43 -04:00
Deluan
c3cc7dee01
Enable SQL migrations
2023-04-04 10:30:28 -04:00
Deluan
83ae2ba3e6
Fix race condition
2023-04-01 18:40:37 -04:00
Joakim Repomaa
2ccc5bc941
Implement artist art priority ( #2266 )
...
* implement artist art priority
* add tests
2023-03-30 18:28:05 -04:00
Deluan
339a6239fd
Ignore Recycle Bins in Windows. Fix #1074
2023-03-09 22:14:58 -05:00
Deluan
0c3ac906b8
Enable ReplayGain by default and always import RG tags
2023-02-09 17:45: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
Deluan
3ce3185118
Don't retrieve Various Artists and Unknown Artist info from Last.fm
2023-02-04 21:18:51 -05:00
Deluan
9b81aa4403
Fix artwork resolution when paths contains :. Fix #2137
2023-02-02 12:18:55 -05:00
Deluan
aaf58bbd32
Handle nil pointer dereference. Fix #2133
2023-01-31 20:54:15 -05:00
Aleksey Lobanov
457e1fc97b
Base SQL metrics in MetricsWorker ( #2002 )
...
* feat: Add metrics worker
* refactor: Add todos for useful for metrics methods
* feat: Run MetricsWorker is Prometheus is Enabled
* refactor: Unused low-level variable was removed in metrics
* feat: No worker for metrics, add more
* refactor: Unnecessary todo removed
* refactor: Remove dead unused constant
* Reduce metrics public interface
Co-authored-by: Deluan <deluan@navidrome.org>
2023-01-24 19:26:07 -05:00
Corrado Primier
0c27e7a43b
Fix Illumos build - #2067 ( #2069 )
...
Build currently fails on Illumos with error `Undefined symbol sendfile`. Fix it by linking `sendfile` explicitly.
2023-01-19 12:52:01 -05:00
Deluan
5564f00838
Some refactor, log message changes
2023-01-17 17:26:48 -05:00
Kendall Garner
1324a16fc5
ReplayGain support + audio normalization (web player) ( #1988 )
...
* ReplayGain support
- extract ReplayGain tags from files, expose via native api
- use metadata to normalize audio in web player
* make pre-push happy
* remove unnecessary prints
* remove another unnecessary print
* add tooltips, see metadata
* address comments, use settings instead
* remove console.log
* use better language for gain modes
2023-01-17 15:57:19 -05:00
Deluan
0ffef05cc3
Remove "Biography not available" when agents are not available
2023-01-13 22:18:34 -05:00
Deluan
3f2d24695e
PreCache artist images
2023-01-13 22:18:34 -05:00
Deluan
cbe3adf987
Don't show error when it is nil
2023-01-13 22:18:34 -05:00
Deluan
fdbece5c92
Use custom sanitize package, fix #2070
2023-01-12 13:39:05 -05:00
Deluan
80ded63d35
Add test for mapTrackTitle
2022-12-30 15:13:04 -05:00
Deluan
0c7c6ba020
PreCache Playlists CoverArt
2022-12-28 15:31:56 -05:00
Deluan
c1c4645501
Move artwork handling to its own package
2022-12-28 15:31:56 -05:00
Deluan
b6eb60f019
Add new Artwork Cache Warmer
2022-12-28 15:31:56 -05:00
Deluan
8c1cd9c273
Refactor file type functions
2022-12-28 15:31:56 -05:00
Deluan
9ec349dce0
Make sure album is updated if external cover changes
2022-12-28 15:31:56 -05:00
Deluan
8e640bb858
Implement new Artist refresh
2022-12-28 15:31:56 -05:00
Deluan
73719c3abd
Fix cover detection on M4A containers
2022-12-28 15:31:56 -05:00
Deluan
213ceeca78
Resize if requested
2022-12-28 15:31:56 -05:00
Deluan
38bde0ddba
Remove current Image Cache implementation
2022-12-28 15:31:56 -05:00
Deluan
0130c6dc13
Add all images found for each album in the database
2022-12-28 15:31:56 -05:00
Deluan
2f90fc9bd4
Move album refresh to scanner
2022-12-28 15:31:56 -05:00
Deluan
6f5aaa1ec4
Move alternative tag names mapping to metadata
2022-12-28 15:31:56 -05:00
Deluan
0c22af3585
Invert dependency of metadata and extractors
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
28389fb05e
Add command line M3U exporter. Closes #1914
2022-12-21 14:39:40 -05:00
Deluan
f206d81afd
Some cleanup, fixes typos and grammar errors
2022-12-06 20:09:03 -05:00
Reo
4489c34757
Fix Misleading Error Message on unreadable Media due to Permission ( #1873 )
...
* fix(taglib): Fix misleading error message on unreadable media - #1576
Signed-off-by: reo <reo_999@proton.me>
* fix(taglib): Add unit test and exclude scan for only unreadable file - #1576
Signed-off-by: reo <reo_999@proton.me>
* fix(taglib): Add unit test and exclude scan for only unreadable file - #1576
Signed-off-by: reo <reo_999@proton.me>
* fix(taglib): Add unit test and exclude scan for only unreadable file - #1576
Signed-off-by: reo <reo_999@proton.me>
* fix(taglib): Add unit test and exclude scan for only unreadable file - #1576
Signed-off-by: reo <reo_999@proton.me>
* fix(taglib): Add unit test and exclude scan for only unreadable file - #1576
Signed-off-by: reo <reo_999@proton.me>
* Fix test and simplify code a bit
We don't need to expose the type of error: `taglib.Parse()` always return nil
* Fix comment
Signed-off-by: reo <reo_999@proton.me>
Co-authored-by: Deluan <deluan@navidrome.org>
2022-12-04 12:48:21 -05:00
Deluan
d8c5944ef1
Fix race condition in scanner
2022-11-29 11:08:47 -05:00
Garvit Galgat
676de79fb3
Don't abort scan if all audio files are in the MediaFolder's root. Fix #868 ( #893 )
...
* fixed #868
* Make sure we only abort scanning if it is not a fullScan
Co-authored-by: Deluan <deluan@navidrome.org>
2022-11-27 11:45:37 -05:00
Deluan
88823fca76
Fix race conditions in tests
2022-11-26 15:07:53 -05:00
Zane van Iperen
c7ef4bd803
Capture "musicbrainz_releasetrackid" tag ( #1827 )
...
* db/migration: typo fix
* model: add MbzReleaseTrackID field
* scanner: capture the musicbrainz_releasetrackid tag
2022-10-01 12:13:47 -04:00
Deluan
a7a0e23956
Fix formatting
2022-09-26 21:28:10 -04:00
Deluan
ebad96b8a4
Fix warning about mixing value and pointer receivers
2022-08-21 14:42:17 -04:00
Deluan
695f82a1a0
Upgrade to Beego 2's orm
2022-07-30 12:43:48 -04:00
Deluan
16afd3a490
Remove //+build tags, as the code does not compile on older versions of Go anymore
2022-07-29 08:41:28 -04:00
Deluan
31882abf6f
Upgrade Ginkgo to V2
2022-07-26 16:53:17 -04:00
Deluan
9e79b5cbf2
Fix potential SQL injection in Smart Playlists
2022-01-18 21:36:29 -05:00
Deluan
0714f08274
Recover from SIGSEGVs in taglib's code
2021-11-20 12:33:06 -05:00
Deluan
cbeaadf8e2
Fix logging smart playlist's song count
2021-11-20 12:29:09 -05:00
Deluan
48a627885c
Simplify prototype definition for taglib_read
2021-11-13 12:18:42 -05:00
Deluan
f645c4769c
Fix double escaped lyrics and comments
2021-10-26 19:33:21 -04:00
Deluan
cc1659aa73
Better way to match top songs from external sources (Last.fm)
2021-10-23 20:26:30 -04:00
Deluan
2c860edeb5
Don't import invalid .nsp files
2021-10-23 20:25:28 -04:00
Deluan
1a96e9fe65
Import smart playlists (extension .nsp)
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
174ad9e9da
Fix ffmpeg bitrate parsing for flac files
2021-10-12 22:02:24 -04:00
Deluan
f0c11916ca
Revert: Small optimization in genre mapping
2021-10-04 17:28:45 -04:00
Deluan
73a2271cdd
Small optimization in genre mapping
2021-09-21 13:37:44 -04:00
Samarjeet
0c0bd2967d
Replace expanded with a dialog ( #1258 )
...
* Replace expanded with a dialog
* Change `info` label to "Get Info"
* Rename things for consistency
Co-authored-by: Deluan <deluan@navidrome.org>
2021-09-20 20:30:43 -04:00
Deluan
15ae3d47cf
Only apply audioStreamRx once
2021-09-20 19:33:50 -04:00
Deluan
1365adbb39
Support 7.1 (8) channels
2021-09-20 19:33:50 -04:00
Miguel A. Arroyo
e12a14a87d
feat: Adds Audio Channel Metadata - #1036
2021-09-20 19:33:50 -04:00
Deluan
86479a6d06
More info when recovering from panic
2021-09-20 18:16:22 -04:00
Deluan
76bd20e8ff
Recover from any possible taglib panics. Fixes #1343
2021-09-20 18:09: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
caiocotts
54f98497c2
Use wchar_t for TagLib filenames on Windows ( #1310 )
...
* Use wchar_t for tagLib filenames on Windows
* Make TagLib default extractor for all platforms.
* Organize imports
Co-authored-by: Deluan <deluan@navidrome.org>
2021-08-28 19:35:54 -04:00
Deluan
d481864035
Some small refactorings
2021-08-22 12:16:49 -04:00
Deluan
143f5ba9d5
Import song duration with hundredths when using TagLib
...
This is how ffmpeg extractor currently works, and it makes album durations more precise.
2021-08-20 21:42:01 -04:00
caio
e9d0abe0bc
Support local paths as urls in playlists.
2021-08-02 23:53:47 -04:00
Deluan
b66c39451f
Fix build
2021-07-24 11:45:46 -04:00
Deluan
4ed01bad86
Use ffmpeg extractor by default on Windows
...
This is to avoid issue with unicode chars in filenames. See #810
2021-07-24 11:35:49 -04:00
Deluan
d3975d206a
Reorganize metadata extractors code
2021-07-24 11:10:19 -04:00
Deluan
6c550819fd
Use TagLib to detect whether a media file has embedded cover or not
2021-07-24 01:59:53 -04:00
Deluan
91325071a6
Change fallback extractor to taglib, the default option
2021-07-22 23:08:47 -04:00
Deluan
876dda83f2
Reduce number of calls to lstat.
...
Should make the scanner a bit faster, specially in networked filesystems
2021-07-21 22:17:37 -04:00
Deluan
8afa2cd833
Remove dependency of deprecated ioutil package
2021-07-20 20:12:28 -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
3a356499ae
Fix lint error
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
882b02c747
Fix forceRescan not re-importing all tracks
2021-07-19 10:32:33 -04:00
Deluan
e61cf3217d
Reapply the fix from #1054 , but without getting into an infinite look in case of SMB fs errors. See #1164
2021-07-17 21:06:53 -04:00
Deluan
eb8ffc6f76
Fix infinite loop when the fs fails. Closes #1164
2021-07-16 09:38:58 -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
5bd33455a1
Fix deadlock situation when events are sent too fast to the broker
2021-07-01 10:42:00 -04:00
Deluan
b65e76293a
Only send events to clients who need it
...
- User events (star, rating, plays) only sent to same user
- Don't send to the client (browser window) that originated the event
2021-06-15 18:59:26 -04:00
Deluan
667701be02
Less warning messages when first running it.
...
They are actually `info` messages
2021-06-13 19:27:01 -04:00
Deluan
7f85ecd515
Trigger a UI refresh when the scanner finds changes.
...
Closes #1025
2021-06-09 21:02:20 -04:00
Deluan
9da9d73c1d
Don't panic when taglib returns an error
2021-05-31 18:26:46 -04:00
Deluan
cd242695ba
Foundational work to enable multi-valued tags
2021-05-31 18:08:12 -04:00
Deluan
fa0e6dda5b
Remove C++11 warning in macOS
2021-05-14 16:03:11 -04:00
Deluan
e047008f7d
Fix test
2021-05-14 15:38:28 -04:00
Deluan
3cac00ad13
Upgrade TagLib to 1.12
2021-05-14 14:31:07 -04:00
Deluan
f8dbc41b6d
Breaking change: Add ScanSchedule, allows interval and cron based configurations.
...
See https://pkg.go.dev/github.com/robfig/cron#hdr-CRON_Expression_Format for expression syntax.
`ScanInterval` will still work for the time being. The only situation it does not work is when you want to disable periodic scanning by setting `ScanInterval=0`. If you want to disable it, please set `ScanSchedule=""`
Closes #1085
2021-05-06 17:56:10 -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
b478b0af02
FIx ffmpeg output regex too rigid
2021-05-03 21:26:44 -04:00
Deluan
c3316e201e
Fix cover art detection with ffmpeg 4.4
2021-05-03 20:25:31 -04:00
Deluan
8a07bac2a2
Fix SIGUSR1 work when ScanInterval=0
2021-04-29 13:10:10 -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
0142352280
Fix build tag
2021-04-23 21:42:22 -04:00
Deluan
d5c7a81888
Disable SIGUSR1 handler for Windows (not available)
2021-04-23 21:22:04 -04:00
Deluan
1e539f4e54
Add trigger scan when receiving SIGUSR1 signal
2021-04-23 20:40:28 -04:00
Deluan
c33c71ae6d
Comment out flaky tests
2021-03-22 09:52:29 -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
c5686c4884
Replace periodic scanner cancellation channel with a context
2021-01-31 17:37:54 -05:00
Deluan
7c23bd0890
Fix log message, as it is also used for taglib
2020-12-25 12:45:38 -05:00
Deluan
ea2f94658a
Error should always be nil
2020-12-20 13:28:33 -05:00
Deluan
a241865209
Add elapsed time when scanner does not detect any new changes
2020-12-13 20:48:16 -05:00
Deluan
8b92796a5c
Disconnect the client if the output buffer fills up
2020-12-12 18:26:30 -05:00
Deluan
0cde8cbf2e
Fix logging field case
2020-12-11 11:26:06 -05:00
Deluan
f29bb211d1
Better termination handling in Scanner's progress
2020-11-25 19:05:36 -05:00
Deluan
a1dcb9a4e3
Show folders scanned instead of files scanned
2020-11-16 00:36:12 -05:00
Deluan
7efc32d136
Ignore "Cover (front)" tag when using ffmpeg extractor
2020-11-12 23:17:06 -05:00
Deluan
c09ba509b2
Fine tune scan status behaviour
2020-11-12 16:12:31 -05:00
Deluan
0e7163eb2c
Sanitize comments and lyrics on import, as they are rendered as HTML on the UI
2020-11-11 12:26:47 -05:00
Deluan
98af68ac99
Import comments and lyrics
2020-11-11 10:43:17 -05:00
Deluan
aee4eb71c4
Add support for multi-line tags
2020-11-11 09:45:46 -05:00
Deluan
714100e24b
Remove old TODO
2020-11-09 19:50:14 -05:00
Deluan
2b1a5f579a
Adding a communication channel between server and clients using SSE
2020-11-09 16:12:50 -05:00