From 9fbdcd282709a5ac7a3ff8c75efa9184f8976c7a Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Fri, 8 Jul 2022 15:09:08 +0200 Subject: [PATCH] Skip system directories (like recycle) in the filesystem scan (#401) --- music_assistant/music_providers/filesystem.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/music_assistant/music_providers/filesystem.py b/music_assistant/music_providers/filesystem.py index b347dda5..09384db6 100644 --- a/music_assistant/music_providers/filesystem.py +++ b/music_assistant/music_providers/filesystem.py @@ -56,16 +56,17 @@ async def scantree(path: str) -> AsyncGenerator[os.DirEntry, None]: return entry.is_dir(follow_symlinks=False) loop = asyncio.get_running_loop() - try: - for entry in await loop.run_in_executor(None, os.scandir, path): - if await loop.run_in_executor(None, is_dir, entry): + for entry in await loop.run_in_executor(None, os.scandir, path): + if entry.name.startswith("."): + continue + if await loop.run_in_executor(None, is_dir, entry): + try: async for subitem in scantree(entry.path): yield subitem - else: - yield entry - except (OSError, PermissionError) as err: - LOGGER.warning("Skip folder %s: %s", path, str(err)) - return + except (OSError, PermissionError) as err: + LOGGER.warning("Skip folder %s: %s", entry.path, str(err)) + else: + yield entry def get_parentdir(base_path: str, name: str) -> str | None: -- 2.34.1