From 158c33481eefe2a948602fa926ca68782b6b9f0b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 9 Mar 2014 08:03:24 +0530 Subject: [PATCH] ... --- src/calibre/utils/matcher.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/calibre/utils/matcher.py b/src/calibre/utils/matcher.py index de7ed95f4b..aa501fe4ff 100644 --- a/src/calibre/utils/matcher.py +++ b/src/calibre/utils/matcher.py @@ -111,19 +111,20 @@ class Matcher(object): raise Exception('Failed to score items: %s' % error) items = sorted(((-scores[i], item, positions[i]) for i, item in enumerate(self.items)), key=itemgetter(0)) - return OrderedDict(x[1:] for x in items) + return OrderedDict(x[1:] for x in filter(itemgetter(0), items)) -def get_items_from_dir(basedir): +def get_items_from_dir(basedir, acceptq=lambda x: True): if isinstance(basedir, bytes): basedir = basedir.decode(filesystem_encoding) relsep = os.sep != '/' for dirpath, dirnames, filenames in os.walk(basedir): for f in filenames: x = os.path.join(dirpath, f) - x = os.path.relpath(x, basedir) - if relsep: - x = x.replace(os.sep, '/') - yield x + if acceptq(x): + x = os.path.relpath(x, basedir) + if relsep: + x = x.replace(os.sep, '/') + yield x class FilesystemMatcher(Matcher):