mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-11-04 03:17:00 -05:00 
			
		
		
		
	Fix:Watcher scanner to ignore non-media files that are not inside library item folders #834
This commit is contained in:
		
							parent
							
								
									372101592c
								
							
						
					
					
						commit
						9916a1e8f6
					
				@ -512,6 +512,7 @@ class Scanner {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      var relFilePaths = folderGroups[folderId].fileUpdates.map(fileUpdate => fileUpdate.relPath)
 | 
					      var relFilePaths = folderGroups[folderId].fileUpdates.map(fileUpdate => fileUpdate.relPath)
 | 
				
			||||||
      var fileUpdateGroup = groupFilesIntoLibraryItemPaths(library.mediaType, relFilePaths)
 | 
					      var fileUpdateGroup = groupFilesIntoLibraryItemPaths(library.mediaType, relFilePaths)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!Object.keys(fileUpdateGroup).length) {
 | 
					      if (!Object.keys(fileUpdateGroup).length) {
 | 
				
			||||||
        Logger.info(`[Scanner] No important changes to scan for in folder "${folderId}"`)
 | 
					        Logger.info(`[Scanner] No important changes to scan for in folder "${folderId}"`)
 | 
				
			||||||
        continue;
 | 
					        continue;
 | 
				
			||||||
 | 
				
			|||||||
@ -20,11 +20,22 @@ function isMediaFile(mediaType, ext) {
 | 
				
			|||||||
// Output: map of files grouped into potential item dirs
 | 
					// Output: map of files grouped into potential item dirs
 | 
				
			||||||
function groupFilesIntoLibraryItemPaths(mediaType, paths) {
 | 
					function groupFilesIntoLibraryItemPaths(mediaType, paths) {
 | 
				
			||||||
  // Step 1: Clean path, Remove leading "/", Filter out non-media files in root dir
 | 
					  // Step 1: Clean path, Remove leading "/", Filter out non-media files in root dir
 | 
				
			||||||
 | 
					  var nonMediaFilePaths = []
 | 
				
			||||||
  var pathsFiltered = paths.map(path => {
 | 
					  var pathsFiltered = paths.map(path => {
 | 
				
			||||||
    return path.startsWith('/') ? path.slice(1) : path
 | 
					    return path.startsWith('/') ? path.slice(1) : path
 | 
				
			||||||
  }).filter(path => {
 | 
					  }).filter(path => {
 | 
				
			||||||
    let parsedPath = Path.parse(path)
 | 
					    let parsedPath = Path.parse(path)
 | 
				
			||||||
    return parsedPath.dir || (mediaType === 'book' && isMediaFile(mediaType, parsedPath.ext))
 | 
					    // Is not in root dir OR is a book media file
 | 
				
			||||||
 | 
					    if (parsedPath.dir) {
 | 
				
			||||||
 | 
					      if (!isMediaFile(mediaType, parsedPath.ext)) { // Seperate out non-media files
 | 
				
			||||||
 | 
					        nonMediaFilePaths.push(path)
 | 
				
			||||||
 | 
					        return false
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return true
 | 
				
			||||||
 | 
					    } else if (mediaType === 'book' && isMediaFile(mediaType, parsedPath.ext)) { // (book media type supports single file audiobooks/ebooks in root dir)
 | 
				
			||||||
 | 
					      return true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Step 2: Sort by least number of directories
 | 
					  // Step 2: Sort by least number of directories
 | 
				
			||||||
@ -64,6 +75,17 @@ function groupFilesIntoLibraryItemPaths(mediaType, paths) {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Step 4: Add in non-media files if they fit into item group
 | 
				
			||||||
 | 
					  if (nonMediaFilePaths.length) {
 | 
				
			||||||
 | 
					    for (const nonMediaFilePath of nonMediaFilePaths) {
 | 
				
			||||||
 | 
					      const pathDir = Path.dirname(nonMediaFilePath)
 | 
				
			||||||
 | 
					      if (itemGroup[pathDir]) {
 | 
				
			||||||
 | 
					        itemGroup[pathDir].push(nonMediaFilePath)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return itemGroup
 | 
					  return itemGroup
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
module.exports.groupFilesIntoLibraryItemPaths = groupFilesIntoLibraryItemPaths
 | 
					module.exports.groupFilesIntoLibraryItemPaths = groupFilesIntoLibraryItemPaths
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user