Add all images found for each album in the database
This commit is contained in:
@@ -108,10 +108,10 @@ func (s *TagScanner) Scan(ctx context.Context, lastModifiedSince time.Time, prog
|
||||
progress <- folderStats.AudioFilesCount
|
||||
allFSDirs[folderStats.Path] = folderStats
|
||||
|
||||
if s.folderHasChanged(ctx, folderStats, allDBDirs, lastModifiedSince) {
|
||||
if s.folderHasChanged(folderStats, allDBDirs, lastModifiedSince) {
|
||||
changedDirs = append(changedDirs, folderStats.Path)
|
||||
log.Debug("Processing changed folder", "dir", folderStats.Path)
|
||||
err := s.processChangedDir(ctx, folderStats.Path, fullScan)
|
||||
err := s.processChangedDir(ctx, allFSDirs, folderStats.Path, fullScan)
|
||||
if err != nil {
|
||||
log.Error("Error updating folder in the DB", "dir", folderStats.Path, err)
|
||||
}
|
||||
@@ -130,7 +130,7 @@ func (s *TagScanner) Scan(ctx context.Context, lastModifiedSince time.Time, prog
|
||||
}
|
||||
|
||||
for _, dir := range deletedDirs {
|
||||
err := s.processDeletedDir(ctx, dir)
|
||||
err := s.processDeletedDir(ctx, allFSDirs, dir)
|
||||
if err != nil {
|
||||
log.Error("Error removing deleted folder from DB", "dir", dir, err)
|
||||
}
|
||||
@@ -201,7 +201,7 @@ func (s *TagScanner) getDBDirTree(ctx context.Context) (map[string]struct{}, err
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (s *TagScanner) folderHasChanged(ctx context.Context, folder dirStats, dbDirs map[string]struct{}, lastModified time.Time) bool {
|
||||
func (s *TagScanner) folderHasChanged(folder dirStats, dbDirs map[string]struct{}, lastModified time.Time) bool {
|
||||
_, inDB := dbDirs[folder.Path]
|
||||
// If is a new folder with at least one song OR it was modified after lastModified
|
||||
return (!inDB && (folder.AudioFilesCount > 0)) || folder.ModTime.After(lastModified)
|
||||
@@ -223,9 +223,9 @@ func (s *TagScanner) getDeletedDirs(ctx context.Context, fsDirs dirMap, dbDirs m
|
||||
return deleted
|
||||
}
|
||||
|
||||
func (s *TagScanner) processDeletedDir(ctx context.Context, dir string) error {
|
||||
func (s *TagScanner) processDeletedDir(ctx context.Context, allFSDirs dirMap, dir string) error {
|
||||
start := time.Now()
|
||||
buffer := newRefresher(ctx, s.ds)
|
||||
buffer := newRefresher(ctx, s.ds, allFSDirs)
|
||||
|
||||
mfs, err := s.ds.MediaFile(ctx).FindAllByPath(dir)
|
||||
if err != nil {
|
||||
@@ -248,9 +248,9 @@ func (s *TagScanner) processDeletedDir(ctx context.Context, dir string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *TagScanner) processChangedDir(ctx context.Context, dir string, fullScan bool) error {
|
||||
func (s *TagScanner) processChangedDir(ctx context.Context, allFSDirs dirMap, dir string, fullScan bool) error {
|
||||
start := time.Now()
|
||||
buffer := newRefresher(ctx, s.ds)
|
||||
buffer := newRefresher(ctx, s.ds, allFSDirs)
|
||||
|
||||
// Load folder's current tracks from DB into a map
|
||||
currentTracks := map[string]model.MediaFile{}
|
||||
|
||||
Reference in New Issue
Block a user