From 67b72af2deca0d0196140fc9bf2e637ea18f4ea3 Mon Sep 17 00:00:00 2001 From: Terry Geng Date: Mon, 1 Jun 2020 09:36:13 +0800 Subject: [PATCH] fix: optimized rescan procedure. --- media/cache.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/media/cache.py b/media/cache.py index af0b383..7ef042a 100644 --- a/media/cache.py +++ b/media/cache.py @@ -112,9 +112,11 @@ class MusicCache(dict): # remove deleted files results = self.db.query_music(Condition().or_equal('type', 'file')) for result in results: - if not os.path.exists(os.path.join(var.music_folder, result['path'])): + if result['path'] not in files: self.log.debug("library: music file missed: %s, delete from library." % result['path']) self.db.delete_music(Condition().and_equal('id', result['id'])) + else: + files.remove(result['path']) for file in files: results = self.db.query_music(Condition().and_equal('path', file)) @@ -137,7 +139,10 @@ class CachedItemWrapper: self.version = 0 def item(self): - return self.lib[self.id] + if self.id in self.lib: + return self.lib[self.id] + else: + raise ValueError(f"Uncached item of id {self.id}.") def to_dict(self): dict = self.item().to_dict()