mirror of
https://github.com/ciromattia/kcc
synced 2026-04-22 17:08:57 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6f491d27e | ||
|
|
c9ed3feef1 | ||
|
|
be147fe7e5 | ||
|
|
62ffa2bc80 | ||
|
|
11186d07c0 |
@@ -1,4 +1,4 @@
|
|||||||
__version__ = '7.2.2'
|
__version__ = '7.2.3'
|
||||||
__license__ = 'ISC'
|
__license__ = 'ISC'
|
||||||
__copyright__ = '2012-2022, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>, darodi'
|
__copyright__ = '2012-2022, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>, darodi'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|||||||
@@ -657,16 +657,14 @@ def getWorkFolder(afile):
|
|||||||
path = cbx.extract(workdir)
|
path = cbx.extract(workdir)
|
||||||
sanitizePermissions(path)
|
sanitizePermissions(path)
|
||||||
tdir = os.listdir(workdir)
|
tdir = os.listdir(workdir)
|
||||||
is_nested_single_dir = False
|
|
||||||
if len(tdir) == 2 and 'ComicInfo.xml' in tdir:
|
if len(tdir) == 2 and 'ComicInfo.xml' in tdir:
|
||||||
tdir.remove('ComicInfo.xml')
|
tdir.remove('ComicInfo.xml')
|
||||||
is_nested_single_dir = os.path.isdir(os.path.join(workdir, tdir[0]))
|
if os.path.isdir(os.path.join(workdir, tdir[0])):
|
||||||
if is_nested_single_dir:
|
|
||||||
os.replace(
|
os.replace(
|
||||||
os.path.join(workdir, 'ComicInfo.xml'),
|
os.path.join(workdir, 'ComicInfo.xml'),
|
||||||
os.path.join(workdir, tdir[0], 'ComicInfo.xml')
|
os.path.join(workdir, tdir[0], 'ComicInfo.xml')
|
||||||
)
|
)
|
||||||
if len(tdir) == 1 and is_nested_single_dir:
|
if len(tdir) == 1 and os.path.isdir(os.path.join(workdir, tdir[0])):
|
||||||
path = os.path.join(workdir, tdir[0])
|
path = os.path.join(workdir, tdir[0])
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
rmtree(workdir, True)
|
rmtree(workdir, True)
|
||||||
@@ -674,8 +672,7 @@ def getWorkFolder(afile):
|
|||||||
else:
|
else:
|
||||||
raise UserWarning("Failed to open source file/directory.")
|
raise UserWarning("Failed to open source file/directory.")
|
||||||
newpath = mkdtemp('', 'KCC-', os.path.dirname(afile))
|
newpath = mkdtemp('', 'KCC-', os.path.dirname(afile))
|
||||||
copytree(path, os.path.join(newpath, 'OEBPS', 'Images'))
|
os.renames(path, os.path.join(newpath, 'OEBPS', 'Images'))
|
||||||
rmtree(workdir, True)
|
|
||||||
return newpath
|
return newpath
|
||||||
|
|
||||||
|
|
||||||
@@ -890,8 +887,7 @@ def chunk_process(path, mode, parent):
|
|||||||
firstTome = False
|
firstTome = False
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
def detectSuboptimalProcessing(tmppath, orgpath):
|
||||||
def detectCorruption(tmppath, orgpath):
|
|
||||||
imageNumber = 0
|
imageNumber = 0
|
||||||
imageSmaller = 0
|
imageSmaller = 0
|
||||||
alreadyProcessed = False
|
alreadyProcessed = False
|
||||||
@@ -907,9 +903,6 @@ def detectCorruption(tmppath, orgpath):
|
|||||||
raise RuntimeError('Image file %s is corrupted.' % pathOrg)
|
raise RuntimeError('Image file %s is corrupted.' % pathOrg)
|
||||||
try:
|
try:
|
||||||
img = Image.open(path)
|
img = Image.open(path)
|
||||||
img.verify()
|
|
||||||
img = Image.open(path)
|
|
||||||
img.load()
|
|
||||||
imageNumber += 1
|
imageNumber += 1
|
||||||
if options.profileData[1][0] > img.size[0] and options.profileData[1][1] > img.size[1]:
|
if options.profileData[1][0] > img.size[0] and options.profileData[1][1] > img.size[1]:
|
||||||
imageSmaller += 1
|
imageSmaller += 1
|
||||||
@@ -1181,7 +1174,7 @@ def makeBook(source, qtgui=None):
|
|||||||
path = getWorkFolder(source)
|
path = getWorkFolder(source)
|
||||||
print("Checking images...")
|
print("Checking images...")
|
||||||
getComicInfo(os.path.join(path, "OEBPS", "Images"), source)
|
getComicInfo(os.path.join(path, "OEBPS", "Images"), source)
|
||||||
detectCorruption(os.path.join(path, "OEBPS", "Images"), source)
|
detectSuboptimalProcessing(os.path.join(path, "OEBPS", "Images"), source)
|
||||||
if options.webtoon:
|
if options.webtoon:
|
||||||
y = image.ProfileData.Profiles[options.profile][1][1]
|
y = image.ProfileData.Profiles[options.profile][1][1]
|
||||||
comic2panel.main(['-y ' + str(y), '-i', '-m', path], qtgui)
|
comic2panel.main(['-y ' + str(y), '-i', '-m', path], qtgui)
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ class ComicArchive:
|
|||||||
['unar', self.filepath, '-f', '-o', targetdir]
|
['unar', self.filepath, '-f', '-o', targetdir]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
extraction_commands.reverse()
|
||||||
|
|
||||||
if distro.id() == 'fedora' or distro.like() == 'fedora':
|
if distro.id() == 'fedora' or distro.like() == 'fedora':
|
||||||
extraction_commands.append(
|
extraction_commands.append(
|
||||||
['unrar', 'x', '-y', '-x__MACOSX', '-x.DS_Store', '-xthumbs.db', '-xThumbs.db', self.filepath, targetdir]
|
['unrar', 'x', '-y', '-x__MACOSX', '-x.DS_Store', '-xthumbs.db', '-xThumbs.db', self.filepath, targetdir]
|
||||||
|
|||||||
@@ -141,7 +141,13 @@ class ComicPageParser:
|
|||||||
self.source = source
|
self.source = source
|
||||||
self.size = self.opt.profileData[1]
|
self.size = self.opt.profileData[1]
|
||||||
self.payload = []
|
self.payload = []
|
||||||
self.image = Image.open(os.path.join(source[0], source[1])).convert('RGB')
|
|
||||||
|
# Detect corruption in source image, let caller catch any exceptions triggered.
|
||||||
|
srcImgPath = os.path.join(source[0], source[1])
|
||||||
|
self.image = Image.open(srcImgPath)
|
||||||
|
self.image.verify()
|
||||||
|
self.image = Image.open(srcImgPath).convert('RGB')
|
||||||
|
|
||||||
self.color = self.colorCheck()
|
self.color = self.colorCheck()
|
||||||
self.fill = self.fillCheck()
|
self.fill = self.fillCheck()
|
||||||
# backwards compatibility for Pillow >9.1.0
|
# backwards compatibility for Pillow >9.1.0
|
||||||
|
|||||||
Reference in New Issue
Block a user