diff --git a/kcc/cbxarchive.py b/kcc/cbxarchive.py index 0a10b92..823a4c8 100644 --- a/kcc/cbxarchive.py +++ b/kcc/cbxarchive.py @@ -22,6 +22,7 @@ from zipfile import is_zipfile, ZipFile from subprocess import STDOUT, PIPE from psutil import Popen from shutil import move, copy +from scandir import walk from . import rarfile from .shared import check7ZFile as is_7zfile, saferReplace @@ -45,7 +46,7 @@ class CBxArchive: cbzFile = ZipFile(self.origFileName) filelist = [] for f in cbzFile.namelist(): - if f.startswith('__MACOSX') or f.endswith('.DS_Store') or f.endswith('thumbs.db'): + if f.startswith('__MACOSX') or f.endswith('.DS_Store') or f.endswith('humbs.db'): pass # skip MacOS special files elif f.endswith('/'): try: @@ -58,25 +59,18 @@ class CBxArchive: def extractCBR(self, targetdir): cbrFile = rarfile.RarFile(self.origFileName) - filelist = [] - for f in cbrFile.namelist(): - if f.startswith('__MACOSX') or f.endswith('.DS_Store') or f.endswith('thumbs.db'): - pass # skip MacOS special files - elif f.endswith('/'): - try: - os.makedirs(os.path.join(targetdir, f)) - except Exception: - pass # the dir exists so we are going to extract the images only. - else: - filelist.append(f) - cbrFile.extractall(targetdir, filelist) + cbrFile.extractall(targetdir) + for root, dirnames, filenames in walk(targetdir): + for filename in filenames: + if filename.startswith('__MACOSX') or filename.endswith('.DS_Store') or filename.endswith('humbs.db'): + os.remove(os.path.join(root, filename)) def extractCB7(self, targetdir): # Workaround for some wide UTF-8 + Popen abnormalities if sys.platform.startswith('darwin'): copy(self.origFileName, os.path.join(os.path.dirname(self.origFileName), 'TMP_KCC_TMP')) self.origFileName = os.path.join(os.path.dirname(self.origFileName), 'TMP_KCC_TMP') - output = Popen('7za x "' + self.origFileName + '" -xr!__MACOSX -xr!.DS_Store -xr!thumbs.db -o"' + output = Popen('7za x "' + self.origFileName + '" -xr!__MACOSX -xr!.DS_Store -xr!thumbs.db -xr!Thumbs.db -o"' + targetdir + '"', stdout=PIPE, stderr=STDOUT, shell=True) extracted = False for line in output.stdout: diff --git a/kcc/comic2ebook.py b/kcc/comic2ebook.py index c1f4074..ce2e175 100755 --- a/kcc/comic2ebook.py +++ b/kcc/comic2ebook.py @@ -579,7 +579,7 @@ def getWorkFolder(afile): if len(afile) > 240: raise UserWarning("Path is too long.") if os.path.isdir(afile): - workdir = mkdtemp('', 'KCC-TMP-') + workdir = mkdtemp('', 'KCC-') try: os.rmdir(workdir) fullPath = os.path.join(workdir, 'OEBPS', 'Images') @@ -598,7 +598,7 @@ def getWorkFolder(afile): rmtree(path, True) raise UserWarning("Failed to extract images.") else: - workdir = mkdtemp('', 'KCC-TMP-') + workdir = mkdtemp('', 'KCC-') cbx = cbxarchive.CBxArchive(afile) if cbx.isCbxFile(): try: @@ -935,7 +935,7 @@ def detectMargins(path): def createNewTome(): - tomePathRoot = mkdtemp('', 'KCC-TMP-') + tomePathRoot = mkdtemp('', 'KCC-') tomePath = os.path.join(tomePathRoot, 'OEBPS', 'Images') os.makedirs(tomePath) return tomePath, tomePathRoot diff --git a/kcc/metadata.py b/kcc/metadata.py index 697a554..5e08d43 100644 --- a/kcc/metadata.py +++ b/kcc/metadata.py @@ -64,7 +64,7 @@ class MetadataParser: self.rawdata = parse(xml_file) elif is_7zfile(self.source): self.compressor = '7z' - workdir = mkdtemp('', 'KCC-TMP-') + workdir = mkdtemp('', 'KCC-') tmpXML = os.path.join(workdir, 'ComicInfo.xml') output = Popen('7za e "' + self.source + '" ComicInfo.xml -o"' + workdir + '"', stdout=PIPE, stderr=STDOUT, shell=True) @@ -147,7 +147,7 @@ class MetadataParser: with open(self.source, 'w', encoding='utf-8') as f: self.rawdata.writexml(f, encoding='utf-8') else: - workdir = mkdtemp('', 'KCC-TMP-') + workdir = mkdtemp('', 'KCC-') tmpXML = os.path.join(workdir, 'ComicInfo.xml') with open(tmpXML, 'w', encoding='utf-8') as f: self.rawdata.writexml(f, encoding='utf-8') diff --git a/kcc/pdfjpgextract.py b/kcc/pdfjpgextract.py index a4c0203..8cd9d6d 100644 --- a/kcc/pdfjpgextract.py +++ b/kcc/pdfjpgextract.py @@ -29,7 +29,7 @@ class PdfJpgExtract: self.origFileName = origFileName self.filename = os.path.splitext(origFileName) # noinspection PyUnusedLocal - self.path = self.filename[0] + "-KCC-TMP-" + ''.join(choice(ascii_uppercase + digits) for x in range(3)) + self.path = self.filename[0] + "-KCC-" + ''.join(choice(ascii_uppercase + digits) for x in range(3)) def getPath(self): return self.path diff --git a/kcc/shared.py b/kcc/shared.py index 1789749..eee3e51 100644 --- a/kcc/shared.py +++ b/kcc/shared.py @@ -104,9 +104,9 @@ def saferReplace(old, new): def removeFromZIP(zipfname, *filenames): - tempdir = mkdtemp('', 'KCC-TMP-') + tempdir = mkdtemp('', 'KCC-') try: - tempname = os.path.join(tempdir, 'KCC-TMP.zip') + tempname = os.path.join(tempdir, 'KCC.zip') with ZipFile(zipfname, 'r') as zipread: with ZipFile(tempname, 'w', compression=ZIP_DEFLATED) as zipwrite: for item in zipread.infolist():