From 779a251c09ea3e307c41e4958e1ad6e4d9077bd3 Mon Sep 17 00:00:00 2001 From: Theasacraft <91694323+Thesacraft@users.noreply.github.com> Date: Sat, 1 Jun 2024 01:45:13 +0200 Subject: [PATCH] Fix small bugs (#228) --- tagstudio/src/core/library.py | 36 +++++++++++++--------- tagstudio/src/qt/widgets/preview_panel.py | 16 +++++++--- tagstudio/src/qt/widgets/thumb_renderer.py | 5 ++- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/tagstudio/src/core/library.py b/tagstudio/src/core/library.py index 7bd26d11..f1536bb5 100644 --- a/tagstudio/src/core/library.py +++ b/tagstudio/src/core/library.py @@ -857,21 +857,27 @@ class Library: start_time = time.time() for f in self.library_dir.glob("**/*"): # p = Path(os.path.normpath(f)) - if ( - "$RECYCLE.BIN" not in f.parts - and TS_FOLDER_NAME not in f.parts - and "tagstudio_thumbs" not in f.parts - and not f.is_dir() - ): - if f.suffix not in self.ignored_extensions: - self.dir_file_count += 1 - file = f.relative_to(self.library_dir) - try: - _ = self.filename_to_entry_id_map[file] - except KeyError: - # print(file) - self.files_not_in_library.append(file) - + try: + if f.is_dir(): + print(f) + if ( + "$RECYCLE.BIN" not in f.parts + and TS_FOLDER_NAME not in f.parts + and "tagstudio_thumbs" not in f.parts + and not f.is_dir() + ): + if f.suffix not in self.ignored_extensions: + self.dir_file_count += 1 + file = f.relative_to(self.library_dir) + try: + _ = self.filename_to_entry_id_map[file] + except KeyError: + # print(file) + self.files_not_in_library.append(file) + except PermissionError: + logging.info( + f"The File/Folder {f} cannot be accessed, because it requires higher permission!" + ) # sys.stdout.write(f'\r[LIBRARY] {self.dir_file_count} files found in "{self.library_dir}"...') # sys.stdout.flush() end_time = time.time() diff --git a/tagstudio/src/qt/widgets/preview_panel.py b/tagstudio/src/qt/widgets/preview_panel.py index c937e269..89a001a1 100644 --- a/tagstudio/src/qt/widgets/preview_panel.py +++ b/tagstudio/src/qt/widgets/preview_panel.py @@ -515,11 +515,17 @@ class PreviewPanel(QWidget): if filepath.suffix.lower() in IMAGE_TYPES: image = Image.open(str(filepath)) elif filepath.suffix.lower() in RAW_IMAGE_TYPES: - with rawpy.imread(filepath) as raw: - rgb = raw.postprocess() - image = Image.new( - "L", (rgb.shape[1], rgb.shape[0]), color="black" - ) + try: + with rawpy.imread(filepath) as raw: + rgb = raw.postprocess() + image = Image.new( + "L", (rgb.shape[1], rgb.shape[0]), color="black" + ) + except ( + rawpy._rawpy.LibRawIOError, + rawpy._rawpy.LibRawFileUnsupportedError, + ): + pass elif filepath.suffix.lower() in VIDEO_TYPES: video = cv2.VideoCapture(str(filepath)) video.set(cv2.CAP_PROP_POS_FRAMES, 0) diff --git a/tagstudio/src/qt/widgets/thumb_renderer.py b/tagstudio/src/qt/widgets/thumb_renderer.py index 8dfa2e0d..a358237e 100644 --- a/tagstudio/src/qt/widgets/thumb_renderer.py +++ b/tagstudio/src/qt/widgets/thumb_renderer.py @@ -151,7 +151,10 @@ class ThumbRenderer(QObject): logging.info( f"[ThumbRenderer]{WARNING} Couldn't Render thumbnail for {_filepath} (because of {e})" ) - except rawpy._rawpy.LibRawIOError: + except ( + rawpy._rawpy.LibRawIOError, + rawpy._rawpy.LibRawFileUnsupportedError, + ): logging.info( f"[ThumbRenderer]{ERROR} Couldn't Render thumbnail for raw image {_filepath}" )