Exemplo n.º 1
0
    def test_find_books_in_directory(self):
        from calibre.db.adding import find_books_in_directory, compile_rule
        strip = lambda files: frozenset({os.path.basename(x) for x in files})

        def q(one, two):
            one, two = {strip(a) for a in one}, {strip(b) for b in two}
            self.assertEqual(one, two)

        def r(action='ignore', match_type='startswith', query=''):
            return {'action': action, 'match_type': match_type, 'query': query}

        def c(*rules):
            return tuple(map(compile_rule, rules))

        files = ['added.epub', 'ignored.md', 'non-book.other']
        q(['added.epub ignored.md'.split()],
          find_books_in_directory('', True, listdir_impl=lambda x: files))
        q([['added.epub'], ['ignored.md']],
          find_books_in_directory('', False,
                                  listdir_impl=lambda x, **k: files))
        for rules in (
                c(r(query='ignored.'),
                  r(action='add', match_type='endswith', query='.OTHER')),
                c(r(match_type='glob', query='*.md'),
                  r(action='add', match_type='matches', query=r'.+\.other$')),
                c(
                    r(match_type='not_startswith',
                      query='IGnored.',
                      action='add'), r(query='ignored.md')),
        ):
            q(['added.epub non-book.other'.split()],
              find_books_in_directory('',
                                      True,
                                      compiled_rules=rules,
                                      listdir_impl=lambda x: files))
Exemplo n.º 2
0
 def find_books_in_directory(self,
                             dirpath,
                             single_book_per_directory,
                             compiled_rules=()):
     return find_books_in_directory(dirpath,
                                    single_book_per_directory,
                                    compiled_rules=compiled_rules)
Exemplo n.º 3
0
 def find_files(root):
     for dirpath, dirnames, filenames in os.walk(root):
         for files in find_books_in_directory(dirpath, self.single_book_per_directory):
             if self.abort_scan:
                 return
             if files:
                 self.file_groups[len(self.file_groups)] = files
Exemplo n.º 4
0
 def find_files(root):
     for dirpath, dirnames, filenames in os.walk(root):
         for files in find_books_in_directory(
                 dirpath, self.single_book_per_directory):
             if self.abort_scan:
                 return
             self.file_groups[len(self.file_groups)] = files
Exemplo n.º 5
0
    def test_find_books_in_directory(self):
        from calibre.db.adding import find_books_in_directory, compile_rule
        strip = lambda files: frozenset({os.path.basename(x) for x in files})
        def q(one, two):
            one, two = {strip(a) for a in one}, {strip(b) for b in two}
            self.assertEqual(one, two)
        def r(action='ignore', match_type='startswith', query=''):
            return {'action':action, 'match_type':match_type, 'query':query}
        def c(*rules):
            return tuple(map(compile_rule, rules))

        files = ['added.epub', 'ignored.md', 'non-book.other']
        q(['added.epub ignored.md'.split()], find_books_in_directory('', True, listdir_impl=lambda x: files))
        q([['added.epub'], ['ignored.md']], find_books_in_directory('', False, listdir_impl=lambda x, **k: files))
        for rules in (
                c(r(query='ignored.'), r(action='add', match_type='endswith', query='.OTHER')),
                c(r(match_type='glob', query='*.md'), r(action='add', match_type='matches', query=r'.+\.other$')),
                c(r(match_type='not_startswith', query='IGnored.', action='add'), r(query='ignored.md')),
        ):
            q(['added.epub non-book.other'.split()], find_books_in_directory('', True, compiled_rules=rules, listdir_impl=lambda x: files))
Exemplo n.º 6
0
 def find_files(root):
     if isinstance(root, type(u'')):
         root = root.encode(filesystem_encoding)
     for dirpath, dirnames, filenames in os.walk(root):
         try:
             dirpath = dirpath.decode(filesystem_encoding)
         except UnicodeDecodeError:
             prints('Ignoring non-decodable directory:', dirpath)
             continue
         for files in find_books_in_directory(dirpath, self.single_book_per_directory, compiled_rules=compiled_rules):
             if self.abort_scan:
                 return
             self.file_groups[len(self.file_groups)] = files
Exemplo n.º 7
0
 def find_files(root):
     for dirpath, dirnames, filenames in os.walk(root):
         for files in find_books_in_directory(
                 dirpath,
                 self.single_book_per_directory,
                 compiled_rules=compiled_rules):
             if self.abort_scan:
                 return
             if iswindows:
                 files = list(
                     resolve_windows_links(files, hwnd=self.win_id))
             if files:
                 self.file_groups[len(self.file_groups)] = files
Exemplo n.º 8
0
 def find_files(root):
     if isinstance(root, unicode_type):
         root = root.encode(filesystem_encoding)
     for dirpath, dirnames, filenames in os.walk(root):
         try:
             dirpath = dirpath.decode(filesystem_encoding)
         except UnicodeDecodeError:
             prints('Ignoring non-decodable directory:', dirpath)
             continue
         for files in find_books_in_directory(dirpath, self.single_book_per_directory, compiled_rules=compiled_rules):
             if self.abort_scan:
                 return
             self.file_groups[len(self.file_groups)] = files
Exemplo n.º 9
0
 def find_books_in_directory(self, dirpath, single_book_per_directory):
     return find_books_in_directory(dirpath, single_book_per_directory)
Exemplo n.º 10
0
 def find_books_in_directory(self, dirpath, single_book_per_directory):
     return find_books_in_directory(dirpath, single_book_per_directory)
Exemplo n.º 11
0
 def find_books_in_directory(self, dirpath, single_book_per_directory, compiled_rules=()):
     return find_books_in_directory(dirpath, single_book_per_directory, compiled_rules=compiled_rules)