Also make recursing through directories work with long paths

This commit is contained in:
Kovid Goyal 2020-10-23 20:31:16 +05:30
parent d2624dedb8
commit 748152cd7a
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -5,15 +5,18 @@
__license__ = 'GPL v3'
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
import os, time, re
import os
import re
import time
from collections import defaultdict
from polyglot.builtins import itervalues, map as it_map, unicode_type
from contextlib import contextmanager
from functools import partial
from calibre import prints
from calibre.constants import iswindows, ismacos, filesystem_encoding
from calibre.constants import filesystem_encoding, ismacos, iswindows
from calibre.ebooks import BOOK_EXTENSIONS
from calibre.utils.filenames import make_long_path_useable
from polyglot.builtins import itervalues, map as it_map, unicode_type
def splitext(path):
@ -85,7 +88,7 @@ else:
def listdir(root, sort_by_mtime=False):
items = (os.path.join(root, x) for x in unicode_listdir(root))
items = (make_long_path_useable(os.path.join(root, x)) for x in unicode_listdir(root))
if sort_by_mtime:
def safe_mtime(x):
try:
@ -123,12 +126,13 @@ def run_import_plugins(formats):
ans = run_import_plugins(formats, import_ctx['group_id'], import_ctx['tdir'])
fm = import_ctx['format_map']
for old_path, new_path in zip(formats, ans):
new_path = make_long_path_useable(new_path)
fm[new_path] = old_path
return ans
def find_books_in_directory(dirpath, single_book_per_directory, compiled_rules=(), listdir_impl=listdir):
dirpath = os.path.abspath(dirpath)
dirpath = make_long_path_useable(os.path.abspath(dirpath))
if single_book_per_directory:
formats = {}
for path in listdir_impl(dirpath):