From a6ceea1ed92025e87aa3b37dd5df209e5f4ccac2 Mon Sep 17 00:00:00 2001 From: Zhuoyun Wei Date: Wed, 18 Apr 2018 05:21:44 -0400 Subject: [PATCH] Infer filenames consistently --- DeDRM_calibre_plugin/DeDRM_plugin/k4mobidedrm.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/DeDRM_calibre_plugin/DeDRM_plugin/k4mobidedrm.py b/DeDRM_calibre_plugin/DeDRM_plugin/k4mobidedrm.py index 7875d07..1ce1f35 100644 --- a/DeDRM_calibre_plugin/DeDRM_plugin/k4mobidedrm.py +++ b/DeDRM_calibre_plugin/DeDRM_plugin/k4mobidedrm.py @@ -262,12 +262,16 @@ def decryptBook(infile, outdir, kDatabaseFiles, androidFiles, serials, pids): traceback.print_exc() return 1 - # if we're saving to the same folder as the original, use file name_ - # if to a different folder, use book name - if os.path.normcase(os.path.normpath(outdir)) == os.path.normcase(os.path.normpath(os.path.dirname(infile))): - outfilename = os.path.splitext(os.path.basename(infile))[0] - else: - outfilename = cleanup_name(book.getBookTitle()) + # Try to infer a reasonable name + orig_fn_root = os.path.splitext(os.path.basename(infile))[0] + if ( + re.match('^B[A-Z0-9]{9}(_EBOK|_EBSP|_sample)?$', orig_fn_root) or + re.match('^{0-9A-F-}{36}$', orig_fn_root) + ): # Kindle for PC / Mac / Android / Fire / iOS + clean_title = cleanup_name(book.getBookTitle()) + outfilename = '{}_{}'.format(orig_fn_root, clean_title) + else: # E Ink Kindle, which already uses a reasonable name + outfilename = orig_fn_root # avoid excessively long file names if len(outfilename)>150: