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
Deluan
779d4a1c85
Revert "Process empty folders as changed folders"
...
This reverts commit e07152b695
.
2020-11-02 07:57:47 -05:00
Deluan
e07152b695
Process empty folders as changed folders
...
This is a workaround for rclone not changing the directory modtime when you delete all folders from it (happens when you are moveing things around with beets)
2020-11-01 23:25:34 -05:00
Deluan
ee5a0698c0
Simplify scanner utilization
2020-11-01 18:37:17 -05:00
Deluan
8e584ee020
Update count on `getScanStatus`
2020-11-01 16:54:33 -05:00
Deluan
145a5708ca
Stop tag_scanner when waltDirTree is interrupted by errors
...
Otherwise, tag_scanner remove tracks from folders that would come after the error
2020-10-31 00:06:28 -04:00
Deluan
84384da8d1
Better naming for function
2020-10-30 13:14:53 -04:00
Deluan
4d6c9482ff
Recover from panic when reading invalid id2 tags
...
Workaround for #596
2020-10-30 09:53:38 -04:00
Deluan
cdd44a2830
Abort scan when media folder is empty
...
This is to prevent all data being deleted in the case where a mount is not available
2020-10-30 09:39:36 -04:00
Deluan
00ec6cf042
Process changed folders as they are discovered
2020-10-29 23:47:43 -04:00
Deluan
2f394623c8
WIP
2020-10-29 23:19:26 -04:00
Deluan
464e251d19
Only start the cache warming after all folders were scanned
2020-10-27 20:11:25 -04:00
Deluan
d0bf37a8a9
Move mock datastore to tests package
2020-10-27 15:23:49 -04:00
Deluan
1e56f4da76
Add simple cache warmer, disabled by default
2020-10-25 23:22:52 -04:00
Deluan
1cfa7b2272
Change MediaFolder.ID type to int32
2020-10-25 23:22:52 -04:00
Deluan
af7eaa2b7a
Add scanner status
2020-10-25 23:22:52 -04:00
Deluan
4514a54744
Fix ignoring hidden folders when scanning
2020-10-22 13:59:54 -04:00
Deluan
b5e20c1934
Ignore invalid MBIDs (ex: discogs IDs)
2020-10-20 17:45:32 -04:00
Deluan
6663c079e0
Add MBIDs to media_file, album and artist
2020-10-20 16:27:22 -04:00
Deluan
26d2af17a3
Fix read `DISCNUMBER` as a DiscNumber tag in ffmpeg extractor
2020-10-06 17:06:47 -04:00
Deluan
665b1f6898
Fix auto-imported playlists losing the "Public" status. Fix #479
2020-10-05 12:40:44 -04:00
Deluan
f859772723
Remove dangling tracks after changing MusicFolder. Fix #445
2020-10-02 16:18:45 -04:00
Fernando Rios
80b8b69cee
Fix compilation of C++ code on certain linux systems
2020-09-26 13:08:28 -04:00
Deluan
afe5a5b32a
Fix extracting tags with spaces in the tagname ("Ex: Album Artist")
2020-09-22 14:42:36 -04:00
Deluan
caeff2862a
Remove dependency on C++17
2020-09-10 15:16:47 -04:00
Deluan
a3ecc41e47
Change taglib extractor log level to trace
2020-09-08 13:33:07 -04:00
Deluan
4d18212f5d
Extract all id3 frames from file
2020-09-08 13:33:07 -04:00
Deluan
5dea258058
Extract basic tags, as a fallback
2020-09-08 13:33:07 -04:00
Deluan
0802ab73d7
Trim tag value, not tag key
2020-09-08 13:33:07 -04:00
Deluan
865b9cd545
Trim spaces from tags
2020-09-08 13:33:07 -04:00
Deluan
e70ec53983
Rewrite taglib integration, now with TCMP
2020-09-08 13:33:07 -04:00
Deluan
2d0031f709
Parse more date formats
2020-09-08 13:33:07 -04:00
Deluan
78ecda5239
Get the first occurrence of multi-valued tags
2020-09-08 13:33:07 -04:00
Deluan
a1879ff871
Reorganize tests
2020-09-08 13:33:07 -04:00
Deluan
34eda3c8fc
Add config option to select tag extractor (taglib, ffmpeg)
2020-09-08 13:33:07 -04:00
Deluan
506899b083
Add more fallback options for main tags
2020-09-08 13:33:07 -04:00
Deluan
3a4e2523dd
Fix possible concurrency issue
2020-09-08 13:33:07 -04:00
Deluan
58a0c44600
Embed audiotags lib, to make it static compilable
2020-09-08 13:33:07 -04:00
Deluan
df4328819d
Initial implementation of `taglib` MetadataExtractor
2020-09-08 13:33:07 -04:00
Deluan
1187ee7cc1
Moved Metadata Extraction to its own package
2020-09-08 13:33:07 -04:00
Deluan
0beec552b1
Introduce Metadata and MetadataExtractor interfaces
2020-09-08 13:33:07 -04:00
Deluan
6820e120cb
Test for accented article sanitization
2020-09-08 09:40:41 -04:00
Deluan
28aefb4858
Fix sanitizing accented articles
2020-09-08 09:36:08 -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
28d1428c90
Add option to disable .m3u auto-import
2020-08-02 23:17:13 -04:00
Deluan
f29e1eb248
Remove repeated call
2020-08-02 15:19:42 -04:00
Deluan
f992b5663f
Remove old scanner
2020-07-27 12:34:44 -04:00
Deluan
4e4fcb2304
Small refactorings, better var/function names
2020-07-27 10:51:50 -04:00
Deluan
60178c264d
Keep annotations if tracks were already in DB
2020-07-23 03:26:39 -04:00
Deluan
040c7f1e7d
Add missing call to refresh artists
2020-07-22 15:37:24 -04:00
Deluan
036f9d6730
Flush albums and artists after each folder added/updated/deleted
2020-07-22 12:56:50 -04:00
Deluan
f96e2f6c4f
Process deleted folders even if there are no changed folders
2020-07-22 01:29:44 -04:00
Deluan
7a5285ae47
When deleting folders, only flush artists/albums after deleting the mediaFiles
2020-07-22 01:00:16 -04:00
Deluan
ba347bc0b1
Detect moved folders
2020-07-22 00:42:12 -04:00
Deluan
d268075046
Change the default scanner to use new implementation
2020-07-19 21:39:06 -04:00
Deluan
feca030c6d
Give warning when playlists are not imported due to not having an admin user
2020-07-19 13:58:46 -04:00
Deluan
6adba03868
Renamed misleading function name
2020-07-17 22:55:51 -04:00
Deluan
609d172259
Use first admin user for all scan operations
2020-07-17 22:55:51 -04:00
Deluan
9cf8c92cae
Break up processChangedDir into smaller functions
2020-07-17 22:55:51 -04:00
Deluan
8f512a40f7
Refactored playlist auto-import support
2020-07-17 22:55:51 -04:00
Deluan
b9b6ce066b
Auto-Import playlists found in the Music Folder
2020-07-17 22:55:51 -04:00
Deluan
3239be4a4d
Change log level of some scanner operations
2020-07-17 12:49:37 -04:00
Deluan
51c295d1de
Add new scanner algorithm, can be enabled with DevNewScanner config option
2020-07-17 12:06:49 -04:00
Deluan
de0cc1f268
Move LoadAllAudioFiles tests to the proper test file
2020-07-16 18:18:48 -04:00
Deluan
e7f6ba8f35
Move LoadAllAudioFiles function to the right file
2020-07-16 17:42:26 -04:00
Deluan
aae43f4452
Remove unneeded `\n`
2020-07-13 11:49:06 -04:00
Deluan
d4347f20ae
Remove redundant log message
2020-07-12 20:42:38 -04:00
Deluan
ee0ae0a06c
Fix lint errors
2020-07-12 13:36:22 -04:00
Deluan
064da8e034
Add more trace logging to scanner
2020-07-12 13:30:03 -04:00
Deluan
c2f40ea8a3
Show totals at the end of scan
2020-07-12 12:35:23 -04:00
Deluan
f694e471fb
Make private types unexported
2020-07-12 11:55:19 -04:00
Deluan
dc8368c89c
Return counter from DeleteByPath
2020-07-12 11:53:07 -04:00
Deluan
2f8b01015d
Change log level for "path unavailable"
2020-07-04 11:36:57 -04:00
Deluan
17830d63b4
Ignore m3u files when scanning
2020-07-03 21:06:33 -04:00
Deluan
bcaf330233
Make sure to select cover art from media_file that has it. Fix #360
2020-06-27 22:16:07 -04:00
Deluan
ab1c943d1f
Force album/artist refresh when folder changes, to cater for cover art files
2020-06-27 18:41:55 -04:00
Deluan
eb109ebeb4
Remove duplicated helper functions, move them to `utils` package
2020-06-24 20:48:42 -04:00
Deluan
653b5ea9d3
Replace map[string]bool with map[string]struct{}
2020-06-14 03:11:16 -04:00
Deluan
e73b71aaf7
Remove tracks from DB that were deleted while Navidrome was not running. Fixes #151
2020-06-14 03:11:16 -04:00
Deluan
01919661e9
Skip unreadable directories. Fixes #328
2020-06-14 03:11:16 -04:00
Deluan
3190611ec8
Call `ffmpeg` in batches
2020-06-14 03:11:16 -04:00
Deluan
238020c839
Handle folders with lots of albums and/or artists
2020-06-14 03:11:16 -04:00
Deluan
17df63b550
Fix `child.size` and `directory.playCount` compatibility with Subsonic API. Fixes #304
2020-05-19 23:51:23 -04:00
Deluan
a4183aea8c
Unexport private functions
2020-05-18 15:06:33 -04:00
Deluan
9e845cb116
Skip scanning folders if they contain a `.ndignore` file. Closes #297
2020-05-18 14:37:01 -04:00
Deluan
5ce3135f00
Fix gosec's G601
2020-05-13 15:32:42 -04:00
Deluan
0d9361734f
Import and display disc subtitles
2020-05-12 12:57:53 -04:00
Deluan
5862157a2c
Move test file to fixtures folder
2020-04-28 11:59:47 -04:00
Deluan
ddeefad501
Fix `goimport` and `gosec` warnings
2020-04-26 15:07:36 -04:00
Deluan
5cd453afeb
Fix all `errcheck` warnings
2020-04-26 15:07:36 -04:00
Deluan
03c3c192ed
Fixing static checks about passing nil context
2020-04-26 15:07:36 -04:00
Deluan
1dd3a794f8
Reduce level of "invalid year" log message
2020-04-24 16:00:14 -04:00
Deluan
6c5dd245fe
Parse TSO2 (seems that ffmpeg does not process this tag in some situations)
2020-04-24 15:02:20 -04:00
Deluan
371e8ab6ca
Generate Order Fields based on sanitized version of original fields
2020-04-24 15:02:20 -04:00
Deluan
69c19e946c
Add sort tags and use them in search
2020-04-24 15:02:20 -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
jvoisin
2ab647efe1
Add a test
2020-04-11 13:08:21 -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
7bc3dace4c
Revert "Improve ffmpeg's error diagnostic"
...
This reverts commit 4fc88f23
2020-04-09 14:26:42 -04:00
jvoisin
4fc88f23e9
Improve ffmpeg's error diagnostic
...
This should close #155
2020-04-09 10:40:16 -04:00
Deluan
9b272c8021
Small log tweak
2020-04-06 14:02:50 -04:00
Deluan
59707b3a8f
Detect embedded art in ogg containers
2020-04-05 23:41:10 -04:00
Deluan
9b461735f4
Add comments to createXxxxCommand functions to clarify about the filepaths arguments being absolute paths
2020-04-03 14:49:35 -04:00
Deluan
3d6ce8a77f
Skip calling `ffmpeg` if there are no files to probe
2020-04-02 17:38:20 -04:00
Deluan
dcb3b3b5d1
fix: various album_artists <-> artists mismatches
2020-03-26 09:08:53 -04:00
Deluan
100db2bcfd
feat: add artist filter to album view
2020-03-25 20:40:18 -04:00
Deluan
b4c7cac964
refactor: moved magic strings to consts
2020-03-24 11:59:10 -04:00
Deluan
f6e448c1ba
refactor: removed unused code, unnecessary typecasts and fixed small warnings
2020-03-20 00:07:36 -04:00
Deluan
fc14e346b9
feat: store duration as float, to cater for milliseconds
2020-02-20 17:02:06 -05:00
Deluan
5525145906
fix: audio stream's bitrate has precedence over container's bitrate
2020-02-20 13:56:45 -05:00
Deluan
74d87790b8
refactor: better ffmpeg output metadata parsing
2020-02-20 10:41:16 -05:00
Deluan
ae02dc203e
chore: remove unused code
2020-02-19 09:08:05 -05:00
Deluan
fc7595a464
fix: cover art detection regex
2020-02-18 11:19:22 -05:00
Deluan
4ceaea7732
fix: extract stream level metadata
2020-02-18 10:00:05 -05:00
Deluan
894536c8ec
Revert "fix: extract stream level metadata"
...
This reverts commit 92f6e55821
.
2020-02-15 23:18:37 -05:00
Deluan
92f6e55821
fix: extract stream level metadata
2020-02-15 20:47:06 -05:00
Deluan
b2d022b823
fix: ignore environment dependant test
2020-02-13 20:19:51 -05:00
Deluan
ba08f00c20
feat: make rescan faster, only loading metadata from changed files
2020-02-13 20:18:17 -05:00
Deluan
d9993c5877
refactor: separate metadata extraction from audio files scanning
2020-02-13 10:03:52 -05:00
Deluan
edb839a41d
fix: only update artists and albums if there were any changes in files
2020-02-12 23:05:10 -05:00
Deluan
400fa65326
feat: better scanner logging when level = info
2020-02-08 23:36:09 -05:00
Deluan
ab10719d27
fix: use a regex to match year in ffmpeg date field. close #63
2020-02-08 23:17:12 -05:00
Deluan
e33d2305a1
feat: support multiple year formats in the `date` tag ( #63 )
2020-02-06 14:44:50 -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
4d06d250e6
fix: relative path was not working for rootFolder started with '.'
2020-02-03 17:53:59 -05:00
Deluan
694b5d1d39
tests: change test folder permissions
2020-02-03 17:53:59 -05:00
Deluan
5329ac7b72
refactor: better format for list of folders
2020-02-03 17:53:59 -05:00
Deluan
464880dd31
refactor: use stdlib `filepath.FromSlash`
2020-02-03 17:53:59 -05:00
Deluan
0e01f9a0f9
fix: use filepath.Join instead of path.Join
2020-02-03 17:53:59 -05:00
Deluan
de1fea64bc
refactor: introduce GC, to delete old data
2020-02-01 17:23:03 -05:00
Deluan
71c1844bca
refactor: new persistence, more SQL, less ORM
2020-02-01 17:23:03 -05:00
Deluan
c9f5625abf
fix: skip files with errors during scan
2020-02-01 11:25:31 -05:00
Deluan
0d2911daf9
refactor: add Context to the persistence layer
2020-01-27 09:41:33 -05:00
Deluan
0ff741b394
fix: persistence tests were not being properly initialized
2020-01-26 17:10:13 -05:00
Deluan
461b7424e9
Ignore case in extracted tags
2020-01-24 09:46:59 -05:00
Deluan
bff6f3a4bd
Rename env vars prefix to ND_
2020-01-24 01:29:31 -05:00
Deluan
bee55c04c8
Rename project to Navidrome
2020-01-23 19:44:08 -05:00
Deluan
9557f7ceed
Initial support for song browsing from UI
2020-01-22 10:47:43 -05:00
Deluan
e03304650d
Fix compilation tag, again
2020-01-21 22:41:18 -05:00
Deluan
654831f79d
Fix bug in `compilation` tag parsing
2020-01-21 17:31:24 -05:00
Deluan
3a44f37622
Add comment tag, still missing multiline comments
2020-01-21 10:05:00 -05:00
Deluan
22a0b7e170
Don't override input tags with stream tags
2020-01-21 09:52:34 -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
c6ed0d5377
Remove flag to allow override media annotation
2020-01-20 18:19:16 -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
fe058aa4a1
Don't override media annotations when scanning/importing
2020-01-18 21:45:44 -05:00
Deluan
a4b75fd69d
Test "Compilation" tag
2020-01-18 11:19:00 -05:00
Deluan
58a080eded
Handle folder moves in Scanner
2020-01-18 11:00:20 -05:00
Deluan
ccbdf688ea
Reduced size of batches, to not break SQLite
2020-01-18 01:49:08 -05:00
Deluan
1929aaec1a
Disabling tests that are not multi-platform, for now
2020-01-18 00:08:00 -05:00
Deluan
73597b22b4
Rewrite description of folder scan algorithm
2020-01-17 23:55:58 -05:00
Deluan
54d13d2022
Purge empty albums/artists
2020-01-17 23:28:11 -05:00
Deluan
ea9ed4a287
Fix ChangeDetector to keep the dirMap from last scan
2020-01-17 22:41:10 -05:00
Deluan
e55dfff485
Fix file descriptor leak
2020-01-17 21:23:26 -05:00
Deluan
c0beaa6377
Integrate ArtistIndex logic into Artist
2020-01-17 20:54:28 -05:00
Deluan
123f543a94
New Folder Scanner - WIP
2020-01-17 20:54:28 -05:00
Deluan
25686c1742
Preparing for new scanner
2020-01-14 21:51:35 -05:00
Deluan
a99c3a8af3
Another big refactor: Back to a single folder for persistence implementation
2020-01-14 18:47:57 -05:00
Deluan
614f4afe28
Implement Artist search with SQL, removed old search/indexer code
2020-01-13 16:06:30 -05:00
Deluan
28ee1f195c
More logging in the Importer
2020-01-11 15:27:32 -05:00
Deluan
c9be5f7201
Storm ChecksumsRepository complete.
2020-01-11 15:27:32 -05:00
Deluan
11f4505925
Renamed persistence packages
2020-01-11 15:27:32 -05:00
Deluan
0ca691b37f
Storm ArtistRepository and PropertyRepository complete.
2020-01-11 15:27:32 -05:00
Deluan
40904b220e
Renamed Id to ID, following GoLang convention
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
24cbf766a3
Removed dependency on `engine` from `persistence`
2020-01-09 22:44:45 -05:00
Deluan
84d69a4f41
Replaced Beego logging
2020-01-09 22:44:45 -05:00
Deluan
3af9972b41
Remove Beego tasks, make Importer available through DI
2020-01-09 22:44:45 -05:00
Deluan
4c61ac3272
Fix default PlsIgnoredPatterns configuration
2020-01-06 15:17:44 -05:00
Deluan
9260a8b9ed
Changes to itl were merged, reverting to the original repo
2017-04-01 09:51:25 -04:00
Deluan
c417a00e62
Renamed project to CloudSonic
2017-04-01 09:47:14 -04:00
Deluan
a7ccd76d54
Allowing album cover ids with prefix (al-)
2016-03-30 10:01:37 -04:00
Deluan
c2b1f9782b
New configuration system
2016-03-30 00:05:57 -04:00
Deluan
3cc92a32bd
Adding song and album counts
2016-03-27 20:13:00 -04:00
Deluan
9099e24413
Polishing
2016-03-26 22:34:20 -04:00
Deluan
0e20910061
Cleaning old data from artists indexes
2016-03-26 22:29:26 -04:00
Deluan
107321219a
Trying to make code more manageable, before a big rewrite
2016-03-26 22:22:34 -04:00
Deluan
06828d8738
Polishing
2016-03-24 23:31:54 -04:00
Deluan
db8c09d503
Better log messages
2016-03-24 13:53:52 -04:00
Deluan
b9952bc3de
Playlists support (99%) complete!
2016-03-24 13:28:20 -04:00
Deluan
b3215f057f
Setting Album/Artist names to [Unknown} if missing
2016-03-23 12:00:40 -04:00
Deluan
0e1618a6ac
Using PersistentIDs instead of "Database" IDs
2016-03-23 11:43:20 -04:00
Deluan
59a0ab3793
Fixed bug with StarredAt
2016-03-22 21:32:22 -04:00
Deluan
db992a9941
Small changes regarding StarredAt.
...
Making StarredAt more "precise", setting it to the time the change was detected.
getStarred.view now returns albums ordered by StarredAt.
loadRange method now take QueryOptions.Desc into account
2016-03-22 19:00:18 -04:00
Deluan
2a2af2f57a
Adding Album total time (Duration)
2016-03-21 21:14:04 -04:00
Deluan
a9d7d4d242
Even more metadata for playlists
2016-03-21 12:26:55 -04:00
Deluan
0b286afa08
UserRatings for Albums and MediaFiles
2016-03-21 10:24:40 -04:00
Deluan
5fd9da505e
More metadata for children (albums/mediafiles)
2016-03-21 09:52:32 -04:00
Deluan
508bf7152f
Removing purged ids from the search index
2016-03-18 19:50:21 -04:00
Deluan
3790aa45e4
Refactored PurgeInactive as a "generic" function.
...
Also delete indexes when removing records
2016-03-18 19:32:49 -04:00
Deluan
c90a50827a
Get() methods from all repositories now return a ErrNotFound when the id is nonexistent
2016-03-18 11:33:50 -04:00
Deluan
a3238ce17b
Cannot clear the index for now.
...
Have to come up with a solution to partially update the search index
2016-03-16 23:44:24 -04:00