mirror of
https://github.com/ciromattia/kcc
synced 2025-12-22 06:01:49 +00:00
Attempt to fix access denied errors
This commit is contained in:
@@ -331,7 +331,7 @@ def dirImgProcess(path):
|
|||||||
pass
|
pass
|
||||||
if not GUI.conversionAlive:
|
if not GUI.conversionAlive:
|
||||||
pool.terminate()
|
pool.terminate()
|
||||||
rmtree(os.path.join(path, '..', '..'))
|
rmtree(os.path.join(path, '..', '..'), onerror=fixReadOnly)
|
||||||
raise UserWarning("Conversion interrupted.")
|
raise UserWarning("Conversion interrupted.")
|
||||||
GUI.emit(QtCore.SIGNAL("progressBarTick"))
|
GUI.emit(QtCore.SIGNAL("progressBarTick"))
|
||||||
pool.join()
|
pool.join()
|
||||||
@@ -339,7 +339,7 @@ def dirImgProcess(path):
|
|||||||
try:
|
try:
|
||||||
splitpages = splitpages.get()
|
splitpages = splitpages.get()
|
||||||
except:
|
except:
|
||||||
rmtree(os.path.join(path, '..', '..'))
|
rmtree(os.path.join(path, '..', '..'), onerror=fixReadOnly)
|
||||||
raise RuntimeError("One of workers crashed. Cause: " + str(sys.exc_info()[1]))
|
raise RuntimeError("One of workers crashed. Cause: " + str(sys.exc_info()[1]))
|
||||||
splitpages = filter(None, splitpages)
|
splitpages = filter(None, splitpages)
|
||||||
splitpages.sort()
|
splitpages.sort()
|
||||||
@@ -348,7 +348,7 @@ def dirImgProcess(path):
|
|||||||
pagenumbermodifier += 1
|
pagenumbermodifier += 1
|
||||||
pagenumbermodifier += 1
|
pagenumbermodifier += 1
|
||||||
else:
|
else:
|
||||||
rmtree(os.path.join(path, '..', '..'))
|
rmtree(os.path.join(path, '..', '..'), onerror=fixReadOnly)
|
||||||
raise UserWarning("Source directory is empty.")
|
raise UserWarning("Source directory is empty.")
|
||||||
|
|
||||||
|
|
||||||
@@ -556,13 +556,13 @@ def getWorkFolder(afile):
|
|||||||
sanitizeTreeBeforeConversion(fullPath)
|
sanitizeTreeBeforeConversion(fullPath)
|
||||||
return workdir
|
return workdir
|
||||||
except OSError:
|
except OSError:
|
||||||
rmtree(workdir)
|
rmtree(workdir, onerror=fixReadOnly)
|
||||||
raise
|
raise
|
||||||
elif afile.lower().endswith('.pdf'):
|
elif afile.lower().endswith('.pdf'):
|
||||||
pdf = pdfjpgextract.PdfJpgExtract(afile)
|
pdf = pdfjpgextract.PdfJpgExtract(afile)
|
||||||
path, njpg = pdf.extract()
|
path, njpg = pdf.extract()
|
||||||
if njpg == 0:
|
if njpg == 0:
|
||||||
rmtree(path)
|
rmtree(path, onerror=fixReadOnly)
|
||||||
raise UserWarning("Failed to extract images.")
|
raise UserWarning("Failed to extract images.")
|
||||||
else:
|
else:
|
||||||
workdir = tempfile.mkdtemp('', 'KCC-TMP-')
|
workdir = tempfile.mkdtemp('', 'KCC-TMP-')
|
||||||
@@ -572,11 +572,11 @@ def getWorkFolder(afile):
|
|||||||
try:
|
try:
|
||||||
path = cbx.extract(workdir)
|
path = cbx.extract(workdir)
|
||||||
except OSError:
|
except OSError:
|
||||||
rmtree(workdir)
|
rmtree(workdir, onerror=fixReadOnly)
|
||||||
print 'UnRAR/7za not found or file failed to extract!'
|
print 'UnRAR/7za not found or file failed to extract!'
|
||||||
sys.exit(21)
|
sys.exit(21)
|
||||||
else:
|
else:
|
||||||
rmtree(workdir)
|
rmtree(workdir, onerror=fixReadOnly)
|
||||||
raise TypeError
|
raise TypeError
|
||||||
move(path, path + "_temp")
|
move(path, path + "_temp")
|
||||||
move(path + "_temp", os.path.join(path, 'OEBPS', 'Images'))
|
move(path + "_temp", os.path.join(path, 'OEBPS', 'Images'))
|
||||||
@@ -907,7 +907,7 @@ def main(argv=None, qtGUI=None):
|
|||||||
filepath.append(getOutputFilename(args[0], options.output, '.epub', ''))
|
filepath.append(getOutputFilename(args[0], options.output, '.epub', ''))
|
||||||
make_archive(tome + '_comic', 'zip', tome)
|
make_archive(tome + '_comic', 'zip', tome)
|
||||||
move(tome + '_comic.zip', filepath[-1])
|
move(tome + '_comic.zip', filepath[-1])
|
||||||
rmtree(tome)
|
rmtree(tome, onerror=fixReadOnly)
|
||||||
return filepath
|
return filepath
|
||||||
|
|
||||||
|
|
||||||
@@ -976,6 +976,14 @@ def checkOptions():
|
|||||||
options.profileData = image.ProfileData.Profiles[options.profile]
|
options.profileData = image.ProfileData.Profiles[options.profile]
|
||||||
|
|
||||||
|
|
||||||
|
#noinspection PyUnusedLocal
|
||||||
|
def fixReadOnly(func, path, exc_info):
|
||||||
|
if not os.access(path, os.W_OK):
|
||||||
|
os.chmod(path, stat.S_IWUSR)
|
||||||
|
func(path)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
freeze_support()
|
freeze_support()
|
||||||
Copyright()
|
Copyright()
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ __docformat__ = 'restructuredtext en'
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import stat
|
||||||
from shutil import rmtree, copytree, move
|
from shutil import rmtree, copytree, move
|
||||||
from optparse import OptionParser, OptionGroup
|
from optparse import OptionParser, OptionGroup
|
||||||
from multiprocessing import Pool, Queue, freeze_support
|
from multiprocessing import Pool, Queue, freeze_support
|
||||||
@@ -223,7 +224,7 @@ def main(argv=None, qtGUI=None):
|
|||||||
options.targetDir = args[0] + "-Splitted"
|
options.targetDir = args[0] + "-Splitted"
|
||||||
print "\nSplitting images..."
|
print "\nSplitting images..."
|
||||||
if os.path.isdir(options.sourceDir):
|
if os.path.isdir(options.sourceDir):
|
||||||
rmtree(options.targetDir, True)
|
rmtree(options.targetDir, onerror=fixReadOnly)
|
||||||
copytree(options.sourceDir, options.targetDir)
|
copytree(options.sourceDir, options.targetDir)
|
||||||
work = []
|
work = []
|
||||||
pagenumber = 0
|
pagenumber = 0
|
||||||
@@ -254,15 +255,15 @@ def main(argv=None, qtGUI=None):
|
|||||||
try:
|
try:
|
||||||
workers.get()
|
workers.get()
|
||||||
except:
|
except:
|
||||||
rmtree(options.targetDir, True)
|
rmtree(options.targetDir, onerror=fixReadOnly)
|
||||||
raise RuntimeError("One of workers crashed. Cause: " + str(sys.exc_info()[1]))
|
raise RuntimeError("One of workers crashed. Cause: " + str(sys.exc_info()[1]))
|
||||||
if GUI:
|
if GUI:
|
||||||
GUI.emit(QtCore.SIGNAL("progressBarTick"), 1)
|
GUI.emit(QtCore.SIGNAL("progressBarTick"), 1)
|
||||||
if options.inPlace:
|
if options.inPlace:
|
||||||
rmtree(options.sourceDir, True)
|
rmtree(options.sourceDir, onerror=fixReadOnly)
|
||||||
move(options.targetDir, options.sourceDir)
|
move(options.targetDir, options.sourceDir)
|
||||||
else:
|
else:
|
||||||
rmtree(options.targetDir)
|
rmtree(options.targetDir, onerror=fixReadOnly)
|
||||||
raise UserWarning("Source directory is empty.")
|
raise UserWarning("Source directory is empty.")
|
||||||
else:
|
else:
|
||||||
raise UserWarning("Provided path is not a directory.")
|
raise UserWarning("Provided path is not a directory.")
|
||||||
@@ -270,6 +271,14 @@ def main(argv=None, qtGUI=None):
|
|||||||
raise UserWarning("Target height is not set.")
|
raise UserWarning("Target height is not set.")
|
||||||
|
|
||||||
|
|
||||||
|
#noinspection PyUnusedLocal
|
||||||
|
def fixReadOnly(func, path, exc_info):
|
||||||
|
if not os.access(path, os.W_OK):
|
||||||
|
os.chmod(path, stat.S_IWUSR)
|
||||||
|
func(path)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
freeze_support()
|
freeze_support()
|
||||||
Copyright()
|
Copyright()
|
||||||
|
|||||||
Reference in New Issue
Block a user