From 99607d627e3797eab9a1ce1c26c579f824045393 Mon Sep 17 00:00:00 2001 From: Nic Jansma Date: Thu, 9 Nov 2023 15:46:06 -0500 Subject: [PATCH] Metadata Provider: Check for metadata.pegasus.txt and metadata.txt first before iterating over all files --- .../providers/pegasus_metadata/PegasusFilter.cpp | 2 +- .../providers/pegasus_metadata/PegasusProvider.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/backend/providers/pegasus_metadata/PegasusFilter.cpp b/src/backend/providers/pegasus_metadata/PegasusFilter.cpp index d8e50ab3d..15ec75cb7 100644 --- a/src/backend/providers/pegasus_metadata/PegasusFilter.cpp +++ b/src/backend/providers/pegasus_metadata/PegasusFilter.cpp @@ -145,7 +145,7 @@ void apply_filter(FileFilter& filter, SearchContext& sctx) const bool has_valid_regex = !filter.include.regex.pattern().isEmpty() && filter.include.regex.isValid(); const bool needs_scan = !filter.include.extensions.empty() || has_valid_regex; - if (!needs_scan) + if (!AppSettings::general.verify_files || !needs_scan) return; constexpr auto entry_filters_files = QDir::Files | QDir::NoDotAndDotDot; diff --git a/src/backend/providers/pegasus_metadata/PegasusProvider.cpp b/src/backend/providers/pegasus_metadata/PegasusProvider.cpp index ed3b896e6..15a302dd2 100644 --- a/src/backend/providers/pegasus_metadata/PegasusProvider.cpp +++ b/src/backend/providers/pegasus_metadata/PegasusProvider.cpp @@ -44,6 +44,16 @@ std::vector find_metafiles_in(const QString& dir_path) std::vector result; + QDir dir(dir_path); + + // look for standalone files first, to avoid reading the entire directory + if (dir.exists("metadata.pegasus.txt")) { + return { QDir::cleanPath(dir_path + QDir::separator() + "metadata.pegasus.txt") }; + } else if (dir.exists("metadata.txt")) { + return { QDir::cleanPath(dir_path + QDir::separator() + "metadata.txt") }; + } + + // else look for wildcard metadata files QDirIterator dir_it(dir_path, dir_filters, dir_flags); while (dir_it.hasNext()) { dir_it.next();