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