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();