Fixes for windows (moving files not allowed -> Close pdf after metadata extracting, add os.path.normcase to path while renaming folders, as thi caused also trouble

Added hint for missing ghostcript on cover extraction
pull/1540/head
Ozzie Isaacs 4 years ago
parent 66acd1821d
commit 0ccc3f7252

@ -340,13 +340,13 @@ def update_dir_structure_file(book_id, calibrepath, first_author):
new_title_path = os.path.join(os.path.dirname(path), new_titledir) new_title_path = os.path.join(os.path.dirname(path), new_titledir)
try: try:
if not os.path.exists(new_title_path): if not os.path.exists(new_title_path):
os.renames(path, new_title_path) os.renames(os.path.normcase(path), os.path.normcase(new_title_path))
else: else:
log.info("Copying title: %s into existing: %s", path, new_title_path) log.info("Copying title: %s into existing: %s", path, new_title_path)
for dir_name, __, file_list in os.walk(path): for dir_name, __, file_list in os.walk(path):
for file in file_list: for file in file_list:
os.renames(os.path.join(dir_name, file), os.renames(os.path.normcase(os.path.join(dir_name, file)),
os.path.join(new_title_path + dir_name[len(path):], file)) os.path.normcase(os.path.join(new_title_path + dir_name[len(path):], file)))
path = new_title_path path = new_title_path
localbook.path = localbook.path.split('/')[0] + '/' + new_titledir localbook.path = localbook.path.split('/')[0] + '/' + new_titledir
except OSError as ex: except OSError as ex:
@ -357,7 +357,7 @@ def update_dir_structure_file(book_id, calibrepath, first_author):
if authordir != new_authordir: if authordir != new_authordir:
new_author_path = os.path.join(calibrepath, new_authordir, os.path.basename(path)) new_author_path = os.path.join(calibrepath, new_authordir, os.path.basename(path))
try: try:
os.renames(path, new_author_path) os.renames(os.path.normcase(path), os.path.normcase(new_author_path))
localbook.path = new_authordir + '/' + localbook.path.split('/')[1] localbook.path = new_authordir + '/' + localbook.path.split('/')[1]
except OSError as ex: except OSError as ex:
log.error("Rename author from: %s to %s: %s", path, new_author_path, ex) log.error("Rename author from: %s to %s: %s", path, new_author_path, ex)
@ -370,8 +370,9 @@ def update_dir_structure_file(book_id, calibrepath, first_author):
new_name = get_valid_filename(localbook.title) + ' - ' + get_valid_filename(new_authordir) new_name = get_valid_filename(localbook.title) + ' - ' + get_valid_filename(new_authordir)
path_name = os.path.join(calibrepath, new_authordir, os.path.basename(path)) path_name = os.path.join(calibrepath, new_authordir, os.path.basename(path))
for file_format in localbook.data: for file_format in localbook.data:
os.renames(os.path.join(path_name, file_format.name + '.' + file_format.format.lower()), os.renames(os.path.normcase(
os.path.join(path_name, new_name + '.' + file_format.format.lower())) os.path.join(path_name, file_format.name + '.' + file_format.format.lower())),
os.path.normcase(os.path.join(path_name, new_name + '.' + file_format.format.lower())))
file_format.name = new_name file_format.name = new_name
except OSError as ex: except OSError as ex:
log.error("Rename file in path %s to %s: %s", path, new_name, ex) log.error("Rename file in path %s to %s: %s", path, new_name, ex)

@ -116,8 +116,8 @@ def default_meta(tmp_file_path, original_file_name, original_file_extension):
def pdf_meta(tmp_file_path, original_file_name, original_file_extension): def pdf_meta(tmp_file_path, original_file_name, original_file_extension):
doc_info = None doc_info = None
if use_pdf_meta: if use_pdf_meta:
doc_info = PdfFileReader(open(tmp_file_path, 'rb')).getDocumentInfo() with open(tmp_file_path, 'rb') as f:
doc_info = PdfFileReader(f).getDocumentInfo()
if doc_info: if doc_info:
author = doc_info.author if doc_info.author else u'Unknown' author = doc_info.author if doc_info.author else u'Unknown'
title = doc_info.title if doc_info.title else original_file_name title = doc_info.title if doc_info.title else original_file_name
@ -156,6 +156,7 @@ def pdf_preview(tmp_file_path, tmp_dir):
return None return None
except Exception as ex: except Exception as ex:
log.warning('Cannot extract cover image, using default: %s', ex) log.warning('Cannot extract cover image, using default: %s', ex)
log.warning('On Windows this error could be caused by missing ghostscript')
return None return None

Loading…
Cancel
Save