mirror of
https://github.com/ciromattia/kcc
synced 2025-12-15 18:56:28 +00:00
Code cleanup
This commit is contained in:
@@ -66,7 +66,6 @@ class QApplicationMessaging(QtWidgets.QApplication):
|
|||||||
socket.connectToServer(self._key, QtCore.QIODevice.WriteOnly)
|
socket.connectToServer(self._key, QtCore.QIODevice.WriteOnly)
|
||||||
if not socket.waitForConnected(self._timeout):
|
if not socket.waitForConnected(self._timeout):
|
||||||
self._server = QtNetwork.QLocalServer(self)
|
self._server = QtNetwork.QLocalServer(self)
|
||||||
# noinspection PyUnresolvedReferences
|
|
||||||
self._server.newConnection.connect(self.handleMessage)
|
self._server.newConnection.connect(self.handleMessage)
|
||||||
self._server.listen(self._key)
|
self._server.listen(self._key)
|
||||||
else:
|
else:
|
||||||
@@ -139,7 +138,7 @@ class Icons:
|
|||||||
|
|
||||||
|
|
||||||
class WebServerHandler(BaseHTTPRequestHandler):
|
class WebServerHandler(BaseHTTPRequestHandler):
|
||||||
# noinspection PyAttributeOutsideInit, PyArgumentList
|
# noinspection PyAttributeOutsideInit
|
||||||
def do_GET(self):
|
def do_GET(self):
|
||||||
if self.path == '/':
|
if self.path == '/':
|
||||||
self.path = '/index.html'
|
self.path = '/index.html'
|
||||||
@@ -276,8 +275,8 @@ class VersionThread(QtCore.QThread):
|
|||||||
try:
|
try:
|
||||||
MW.modeConvert.emit(-1)
|
MW.modeConvert.emit(-1)
|
||||||
MW.progressBarTick.emit('Downloading update')
|
MW.progressBarTick.emit('Downloading update')
|
||||||
path = urlretrieve('https://kcc.iosphe.re/Windows/KindleComicConverter_win_'
|
path = urlretrieve('https://kcc.iosphe.re/Windows/KindleComicConverter_win_' +
|
||||||
+ self.newVersion + '.exe', reporthook=self.getNewVersionTick)
|
self.newVersion + '.exe', reporthook=self.getNewVersionTick)
|
||||||
if self.md5 != md5Checksum(path[0]):
|
if self.md5 != md5Checksum(path[0]):
|
||||||
raise Exception
|
raise Exception
|
||||||
move(path[0], path[0] + '.exe')
|
move(path[0], path[0] + '.exe')
|
||||||
@@ -324,7 +323,6 @@ class ProgressThread(QtCore.QThread):
|
|||||||
|
|
||||||
|
|
||||||
class WorkerThread(QtCore.QThread):
|
class WorkerThread(QtCore.QThread):
|
||||||
# noinspection PyArgumentList
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
QtCore.QThread.__init__(self)
|
QtCore.QThread.__init__(self)
|
||||||
self.conversionAlive = False
|
self.conversionAlive = False
|
||||||
@@ -456,7 +454,7 @@ class WorkerThread(QtCore.QThread):
|
|||||||
MW.addMessage.emit('Creating EPUB files... <b>Done!</b>', 'info', True)
|
MW.addMessage.emit('Creating EPUB files... <b>Done!</b>', 'info', True)
|
||||||
if str(GUI.FormatBox.currentText()) == 'MOBI':
|
if str(GUI.FormatBox.currentText()) == 'MOBI':
|
||||||
MW.progressBarTick.emit('Creating MOBI files')
|
MW.progressBarTick.emit('Creating MOBI files')
|
||||||
MW.progressBarTick.emit(str(len(outputPath)*2+1))
|
MW.progressBarTick.emit(str(len(outputPath) * 2 + 1))
|
||||||
MW.progressBarTick.emit('tick')
|
MW.progressBarTick.emit('tick')
|
||||||
MW.addMessage.emit('Creating MOBI files', 'info', False)
|
MW.addMessage.emit('Creating MOBI files', 'info', False)
|
||||||
GUI.progress.content = 'Creating MOBI files'
|
GUI.progress.content = 'Creating MOBI files'
|
||||||
@@ -515,7 +513,7 @@ class WorkerThread(QtCore.QThread):
|
|||||||
MW.addTrayMessage.emit('Failed to process MOBI file!', 'Critical')
|
MW.addTrayMessage.emit('Failed to process MOBI file!', 'Critical')
|
||||||
else:
|
else:
|
||||||
GUI.progress.content = ''
|
GUI.progress.content = ''
|
||||||
epubSize = (os.path.getsize(self.kindlegenErrorCode[2]))//1024//1024
|
epubSize = (os.path.getsize(self.kindlegenErrorCode[2])) // 1024 // 1024
|
||||||
for item in outputPath:
|
for item in outputPath:
|
||||||
if os.path.exists(item):
|
if os.path.exists(item):
|
||||||
os.remove(item)
|
os.remove(item)
|
||||||
@@ -552,7 +550,6 @@ class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
if self.isSystemTrayAvailable():
|
if self.isSystemTrayAvailable():
|
||||||
QtWidgets.QSystemTrayIcon.__init__(self, GUI.icons.programIcon, MW)
|
QtWidgets.QSystemTrayIcon.__init__(self, GUI.icons.programIcon, MW)
|
||||||
# noinspection PyUnresolvedReferences
|
|
||||||
self.activated.connect(self.catchClicks)
|
self.activated.connect(self.catchClicks)
|
||||||
|
|
||||||
def catchClicks(self):
|
def catchClicks(self):
|
||||||
@@ -840,7 +837,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
|
|||||||
|
|
||||||
def changeGamma(self, value):
|
def changeGamma(self, value):
|
||||||
value = float(value)
|
value = float(value)
|
||||||
value = '%.2f' % (value/100)
|
value = '%.2f' % (value / 100)
|
||||||
if float(value) <= 0.09:
|
if float(value) <= 0.09:
|
||||||
GUI.GammaLabel.setText('Gamma: Auto')
|
GUI.GammaLabel.setText('Gamma: Auto')
|
||||||
else:
|
else:
|
||||||
@@ -908,7 +905,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
|
|||||||
else:
|
else:
|
||||||
item = QtWidgets.QListWidgetItem(' ' + self.stripTags(message))
|
item = QtWidgets.QListWidgetItem(' ' + self.stripTags(message))
|
||||||
if replace:
|
if replace:
|
||||||
GUI.JobList.takeItem(GUI.JobList.count()-1)
|
GUI.JobList.takeItem(GUI.JobList.count() - 1)
|
||||||
# Due to lack of HTML support in QListWidgetItem we overlay text field with QLabel
|
# Due to lack of HTML support in QListWidgetItem we overlay text field with QLabel
|
||||||
# We still fill original text field with transparent content to trigger creation of horizontal scrollbar
|
# We still fill original text field with transparent content to trigger creation of horizontal scrollbar
|
||||||
item.setForeground(QtGui.QColor('transparent'))
|
item.setForeground(QtGui.QColor('transparent'))
|
||||||
@@ -1048,7 +1045,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
|
|||||||
'ColorBox': GUI.ColorBox.checkState(),
|
'ColorBox': GUI.ColorBox.checkState(),
|
||||||
'customWidth': GUI.customWidth.text(),
|
'customWidth': GUI.customWidth.text(),
|
||||||
'customHeight': GUI.customHeight.text(),
|
'customHeight': GUI.customHeight.text(),
|
||||||
'GammaSlider': float(self.GammaValue)*100})
|
'GammaSlider': float(self.GammaValue) * 100})
|
||||||
self.settings.sync()
|
self.settings.sync()
|
||||||
self.tray.hide()
|
self.tray.hide()
|
||||||
|
|
||||||
@@ -1295,7 +1292,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
|
|||||||
if profile == "Other":
|
if profile == "Other":
|
||||||
GUI.DeviceBox.addItem(self.icons.deviceOther, profile)
|
GUI.DeviceBox.addItem(self.icons.deviceOther, profile)
|
||||||
elif profile == "Separator":
|
elif profile == "Separator":
|
||||||
GUI.DeviceBox.insertSeparator(GUI.DeviceBox.count()+1)
|
GUI.DeviceBox.insertSeparator(GUI.DeviceBox.count() + 1)
|
||||||
elif 'Ko' in profile:
|
elif 'Ko' in profile:
|
||||||
GUI.DeviceBox.addItem(self.icons.deviceKobo, profile)
|
GUI.DeviceBox.addItem(self.icons.deviceKobo, profile)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -70,8 +70,8 @@ class CBxArchive:
|
|||||||
if sys.platform.startswith('darwin'):
|
if sys.platform.startswith('darwin'):
|
||||||
copy(self.origFileName, os.path.join(os.path.dirname(self.origFileName), 'TMP_KCC_TMP'))
|
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')
|
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 -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)
|
targetdir + '"', stdout=PIPE, stderr=STDOUT, shell=True)
|
||||||
extracted = False
|
extracted = False
|
||||||
for line in output.stdout:
|
for line in output.stdout:
|
||||||
if b"Everything is Ok" in line:
|
if b"Everything is Ok" in line:
|
||||||
|
|||||||
@@ -242,9 +242,9 @@ def buildNCX(dstdir, title, chapters, chapterNames):
|
|||||||
navID = filename[0].replace('/', '_').replace('\\', '_')
|
navID = filename[0].replace('/', '_').replace('\\', '_')
|
||||||
elif os.path.basename(folder) != "Text":
|
elif os.path.basename(folder) != "Text":
|
||||||
title = chapterNames[os.path.basename(folder)]
|
title = chapterNames[os.path.basename(folder)]
|
||||||
f.write("<navPoint id=\"" + navID + "\"><navLabel><text>"
|
f.write("<navPoint id=\"" + navID + "\"><navLabel><text>" +
|
||||||
+ title + "</text></navLabel><content src=\"" + filename[0].replace("\\", "/")
|
title + "</text></navLabel><content src=\"" + filename[0].replace("\\", "/") +
|
||||||
+ ".html\"/></navPoint>\n")
|
".html\"/></navPoint>\n")
|
||||||
f.write("</navMap>\n</ncx>")
|
f.write("</navMap>\n</ncx>")
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
@@ -341,15 +341,15 @@ def buildOPF(dstdir, title, filelist, cover=None):
|
|||||||
filename = getImageFileName(path[1])
|
filename = getImageFileName(path[1])
|
||||||
uniqueid = os.path.join(folder, filename[0]).replace('/', '_').replace('\\', '_')
|
uniqueid = os.path.join(folder, filename[0]).replace('/', '_').replace('\\', '_')
|
||||||
reflist.append(uniqueid)
|
reflist.append(uniqueid)
|
||||||
f.write("<item id=\"page_" + str(uniqueid) + "\" href=\""
|
f.write("<item id=\"page_" + str(uniqueid) + "\" href=\"" +
|
||||||
+ folder.replace('Images', 'Text') + "/" + filename[0]
|
folder.replace('Images', 'Text') + "/" + filename[0] +
|
||||||
+ ".html\" media-type=\"application/xhtml+xml\"/>\n")
|
".html\" media-type=\"application/xhtml+xml\"/>\n")
|
||||||
if '.png' == filename[1]:
|
if '.png' == filename[1]:
|
||||||
mt = 'image/png'
|
mt = 'image/png'
|
||||||
else:
|
else:
|
||||||
mt = 'image/jpeg'
|
mt = 'image/jpeg'
|
||||||
f.write("<item id=\"img_" + str(uniqueid) + "\" href=\"" + folder + "/" + path[1] + "\" media-type=\""
|
f.write("<item id=\"img_" + str(uniqueid) + "\" href=\"" + folder + "/" + path[1] + "\" media-type=\"" +
|
||||||
+ mt + "\"/>\n")
|
mt + "\"/>\n")
|
||||||
f.write("<item id=\"css\" href=\"Text/style.css\" media-type=\"text/css\"/>\n")
|
f.write("<item id=\"css\" href=\"Text/style.css\" media-type=\"text/css\"/>\n")
|
||||||
if options.righttoleft:
|
if options.righttoleft:
|
||||||
f.write("</manifest>\n<spine page-progression-direction=\"rtl\" toc=\"ncx\">\n")
|
f.write("</manifest>\n<spine page-progression-direction=\"rtl\" toc=\"ncx\">\n")
|
||||||
@@ -1188,7 +1188,7 @@ def checkOptions():
|
|||||||
if options.customheight != 0:
|
if options.customheight != 0:
|
||||||
Y = options.customheight
|
Y = options.customheight
|
||||||
newProfile = ("Custom", (int(X), int(Y)), image.ProfileData.Palette16,
|
newProfile = ("Custom", (int(X), int(Y)), image.ProfileData.Palette16,
|
||||||
image.ProfileData.Profiles[options.profile][3], (int(int(X)*1.5), int(int(Y)*1.5)))
|
image.ProfileData.Profiles[options.profile][3], (int(int(X) * 1.5), int(int(Y) * 1.5)))
|
||||||
image.ProfileData.Profiles["Custom"] = newProfile
|
image.ProfileData.Profiles["Custom"] = newProfile
|
||||||
options.profile = "Custom"
|
options.profile = "Custom"
|
||||||
options.profileData = image.ProfileData.Profiles[options.profile]
|
options.profileData = image.ProfileData.Profiles[options.profile]
|
||||||
@@ -1356,7 +1356,7 @@ def makeMOBI(work, qtGUI=None):
|
|||||||
global GUI, makeMOBIWorkerPool, makeMOBIWorkerOutput
|
global GUI, makeMOBIWorkerPool, makeMOBIWorkerOutput
|
||||||
GUI = qtGUI
|
GUI = qtGUI
|
||||||
makeMOBIWorkerOutput = []
|
makeMOBIWorkerOutput = []
|
||||||
availableMemory = virtual_memory().total/1000000000
|
availableMemory = virtual_memory().total / 1000000000
|
||||||
if availableMemory <= 2:
|
if availableMemory <= 2:
|
||||||
threadNumber = 1
|
threadNumber = 1
|
||||||
elif 2 < availableMemory <= 4:
|
elif 2 < availableMemory <= 4:
|
||||||
|
|||||||
@@ -85,19 +85,19 @@ def sanitizePanelSize(panel, opt):
|
|||||||
newPanels = []
|
newPanels = []
|
||||||
if panel[2] > 6 * opt.height:
|
if panel[2] > 6 * opt.height:
|
||||||
diff = int(panel[2] / 8)
|
diff = int(panel[2] / 8)
|
||||||
newPanels.append([panel[0], panel[1] - diff*7, diff])
|
newPanels.append([panel[0], panel[1] - diff * 7, diff])
|
||||||
newPanels.append([panel[1] - diff*7, panel[1] - diff*6, diff])
|
newPanels.append([panel[1] - diff * 7, panel[1] - diff * 6, diff])
|
||||||
newPanels.append([panel[1] - diff*6, panel[1] - diff*5, diff])
|
newPanels.append([panel[1] - diff * 6, panel[1] - diff * 5, diff])
|
||||||
newPanels.append([panel[1] - diff*5, panel[1] - diff*4, diff])
|
newPanels.append([panel[1] - diff * 5, panel[1] - diff * 4, diff])
|
||||||
newPanels.append([panel[1] - diff*4, panel[1] - diff*3, diff])
|
newPanels.append([panel[1] - diff * 4, panel[1] - diff * 3, diff])
|
||||||
newPanels.append([panel[1] - diff*3, panel[1] - diff*2, diff])
|
newPanels.append([panel[1] - diff * 3, panel[1] - diff * 2, diff])
|
||||||
newPanels.append([panel[1] - diff*2, panel[1] - diff, diff])
|
newPanels.append([panel[1] - diff * 2, panel[1] - diff, diff])
|
||||||
newPanels.append([panel[1] - diff, panel[1], diff])
|
newPanels.append([panel[1] - diff, panel[1], diff])
|
||||||
elif panel[2] > 3 * opt.height:
|
elif panel[2] > 3 * opt.height:
|
||||||
diff = int(panel[2] / 4)
|
diff = int(panel[2] / 4)
|
||||||
newPanels.append([panel[0], panel[1] - diff*3, diff])
|
newPanels.append([panel[0], panel[1] - diff * 3, diff])
|
||||||
newPanels.append([panel[1] - diff*3, panel[1] - diff*2, diff])
|
newPanels.append([panel[1] - diff * 3, panel[1] - diff * 2, diff])
|
||||||
newPanels.append([panel[1] - diff*2, panel[1] - diff, diff])
|
newPanels.append([panel[1] - diff * 2, panel[1] - diff, diff])
|
||||||
newPanels.append([panel[1] - diff, panel[1], diff])
|
newPanels.append([panel[1] - diff, panel[1], diff])
|
||||||
elif panel[2] > 1.5 * opt.height:
|
elif panel[2] > 1.5 * opt.height:
|
||||||
newPanels.append([panel[0], panel[1] - int(panel[2] / 2), int(panel[2] / 2)])
|
newPanels.append([panel[0], panel[1] - int(panel[2] / 2), int(panel[2] / 2)])
|
||||||
|
|||||||
@@ -36,15 +36,15 @@ title_offset = 84
|
|||||||
|
|
||||||
|
|
||||||
def getint(data, ofs, sz='L'):
|
def getint(data, ofs, sz='L'):
|
||||||
i, = struct.unpack_from('>'+sz, data, ofs)
|
i, = struct.unpack_from('>' + sz, data, ofs)
|
||||||
return i
|
return i
|
||||||
|
|
||||||
|
|
||||||
def writeint(data, ofs, n, slen='L'):
|
def writeint(data, ofs, n, slen='L'):
|
||||||
if slen == 'L':
|
if slen == 'L':
|
||||||
return data[:ofs]+struct.pack('>L', n)+data[ofs+4:]
|
return data[:ofs] + struct.pack('>L', n) + data[ofs + 4:]
|
||||||
else:
|
else:
|
||||||
return data[:ofs]+struct.pack('>H', n)+data[ofs+2:]
|
return data[:ofs] + struct.pack('>H', n) + data[ofs + 2:]
|
||||||
|
|
||||||
|
|
||||||
def getsecaddr(datain, secno):
|
def getsecaddr(datain, secno):
|
||||||
@@ -52,11 +52,11 @@ def getsecaddr(datain, secno):
|
|||||||
if (secno < 0) | (secno >= nsec):
|
if (secno < 0) | (secno >= nsec):
|
||||||
emsg = 'requested section number %d out of range (nsec=%d)' % (secno, nsec)
|
emsg = 'requested section number %d out of range (nsec=%d)' % (secno, nsec)
|
||||||
raise DualMetaFixException(emsg)
|
raise DualMetaFixException(emsg)
|
||||||
secstart = getint(datain, first_pdb_record+secno*8)
|
secstart = getint(datain, first_pdb_record + secno * 8)
|
||||||
if secno == nsec-1:
|
if secno == nsec - 1:
|
||||||
secend = len(datain)
|
secend = len(datain)
|
||||||
else:
|
else:
|
||||||
secend = getint(datain, first_pdb_record+(secno+1)*8)
|
secend = getint(datain, first_pdb_record + (secno + 1) * 8)
|
||||||
return secstart, secend
|
return secstart, secend
|
||||||
|
|
||||||
|
|
||||||
@@ -71,28 +71,28 @@ def replacesection(datain, secno, secdata):
|
|||||||
seclen = secend - secstart
|
seclen = secend - secstart
|
||||||
if len(secdata) != seclen:
|
if len(secdata) != seclen:
|
||||||
raise DualMetaFixException('section length change in replacesection')
|
raise DualMetaFixException('section length change in replacesection')
|
||||||
datain[secstart:secstart+seclen] = secdata
|
datain[secstart:secstart + seclen] = secdata
|
||||||
|
|
||||||
|
|
||||||
def get_exth_params(rec0):
|
def get_exth_params(rec0):
|
||||||
ebase = mobi_header_base + getint(rec0, mobi_header_length)
|
ebase = mobi_header_base + getint(rec0, mobi_header_length)
|
||||||
if rec0[ebase:ebase+4] != b'EXTH':
|
if rec0[ebase:ebase + 4] != b'EXTH':
|
||||||
raise DualMetaFixException('EXTH tag not found where expected')
|
raise DualMetaFixException('EXTH tag not found where expected')
|
||||||
elen = getint(rec0, ebase+4)
|
elen = getint(rec0, ebase + 4)
|
||||||
enum = getint(rec0, ebase+8)
|
enum = getint(rec0, ebase + 8)
|
||||||
rlen = len(rec0)
|
rlen = len(rec0)
|
||||||
return ebase, elen, enum, rlen
|
return ebase, elen, enum, rlen
|
||||||
|
|
||||||
|
|
||||||
def add_exth(rec0, exth_num, exth_bytes):
|
def add_exth(rec0, exth_num, exth_bytes):
|
||||||
ebase, elen, enum, rlen = get_exth_params(rec0)
|
ebase, elen, enum, rlen = get_exth_params(rec0)
|
||||||
newrecsize = 8+len(exth_bytes)
|
newrecsize = 8 + len(exth_bytes)
|
||||||
newrec0 = rec0[0:ebase+4]+struct.pack('>L', elen+newrecsize)+struct.pack('>L', enum+1)+struct.pack('>L', exth_num)\
|
newrec0 = rec0[0:ebase + 4] + struct.pack('>L', elen + newrecsize) + struct.pack('>L', enum + 1) + \
|
||||||
+ struct.pack('>L', newrecsize)+exth_bytes+rec0[ebase+12:]
|
struct.pack('>L', exth_num) + struct.pack('>L', newrecsize) + exth_bytes + rec0[ebase + 12:]
|
||||||
newrec0 = writeint(newrec0, title_offset, getint(newrec0, title_offset)+newrecsize)
|
newrec0 = writeint(newrec0, title_offset, getint(newrec0, title_offset) + newrecsize)
|
||||||
# keep constant record length by removing newrecsize null bytes from end
|
# keep constant record length by removing newrecsize null bytes from end
|
||||||
sectail = newrec0[-newrecsize:]
|
sectail = newrec0[-newrecsize:]
|
||||||
if sectail != b'\0'*newrecsize:
|
if sectail != b'\0' * newrecsize:
|
||||||
raise DualMetaFixException('add_exth: trimmed non-null bytes at end of section')
|
raise DualMetaFixException('add_exth: trimmed non-null bytes at end of section')
|
||||||
newrec0 = newrec0[0:rlen]
|
newrec0 = newrec0[0:rlen]
|
||||||
return newrec0
|
return newrec0
|
||||||
@@ -106,30 +106,31 @@ def read_exth(rec0, exth_num):
|
|||||||
exth_id = getint(rec0, ebase)
|
exth_id = getint(rec0, ebase)
|
||||||
if exth_id == exth_num:
|
if exth_id == exth_num:
|
||||||
# We might have multiple exths, so build a list.
|
# We might have multiple exths, so build a list.
|
||||||
exth_values.append(rec0[ebase+8:ebase+getint(rec0, ebase+4)])
|
exth_values.append(rec0[ebase + 8:ebase + getint(rec0, ebase + 4)])
|
||||||
enum -= 1
|
enum -= 1
|
||||||
ebase = ebase+getint(rec0, ebase+4)
|
ebase = ebase + getint(rec0, ebase + 4)
|
||||||
return exth_values
|
return exth_values
|
||||||
|
|
||||||
|
|
||||||
def del_exth(rec0, exth_num):
|
def del_exth(rec0, exth_num):
|
||||||
ebase, elen, enum, rlen = get_exth_params(rec0)
|
ebase, elen, enum, rlen = get_exth_params(rec0)
|
||||||
ebase_idx = ebase+12
|
ebase_idx = ebase + 12
|
||||||
enum_idx = 0
|
enum_idx = 0
|
||||||
while enum_idx < enum:
|
while enum_idx < enum:
|
||||||
exth_id = getint(rec0, ebase_idx)
|
exth_id = getint(rec0, ebase_idx)
|
||||||
exth_size = getint(rec0, ebase_idx+4)
|
exth_size = getint(rec0, ebase_idx + 4)
|
||||||
if exth_id == exth_num:
|
if exth_id == exth_num:
|
||||||
newrec0 = rec0
|
newrec0 = rec0
|
||||||
newrec0 = writeint(newrec0, title_offset, getint(newrec0, title_offset)-exth_size)
|
newrec0 = writeint(newrec0, title_offset, getint(newrec0, title_offset) - exth_size)
|
||||||
newrec0 = newrec0[:ebase_idx]+newrec0[ebase_idx+exth_size:]
|
newrec0 = newrec0[:ebase_idx] + newrec0[ebase_idx + exth_size:]
|
||||||
newrec0 = newrec0[0:ebase+4]+struct.pack('>L', elen-exth_size)+struct.pack('>L', enum-1)+newrec0[ebase+12:]
|
newrec0 = newrec0[0:ebase + 4] + struct.pack('>L', elen - exth_size) + \
|
||||||
newrec0 += b'\0'*exth_size
|
struct.pack('>L', enum - 1) + newrec0[ebase + 12:]
|
||||||
|
newrec0 += b'\0' * exth_size
|
||||||
if rlen != len(newrec0):
|
if rlen != len(newrec0):
|
||||||
raise DualMetaFixException('del_exth: incorrect section size change')
|
raise DualMetaFixException('del_exth: incorrect section size change')
|
||||||
return newrec0
|
return newrec0
|
||||||
enum_idx += 1
|
enum_idx += 1
|
||||||
ebase_idx = ebase_idx+exth_size
|
ebase_idx = ebase_idx + exth_size
|
||||||
return rec0
|
return rec0
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
16
kcc/image.py
16
kcc/image.py
@@ -148,8 +148,8 @@ class ComicPage:
|
|||||||
if self.noVPV:
|
if self.noVPV:
|
||||||
flags.append('NoVerticalPanelView')
|
flags.append('NoVerticalPanelView')
|
||||||
if self.border:
|
if self.border:
|
||||||
flags.append('Margins-' + str(self.border[0]) + '-' + str(self.border[1]) + '-'
|
flags.append('Margins-' + str(self.border[0]) + '-' + str(self.border[1]) + '-' +
|
||||||
+ str(self.border[2]) + '-' + str(self.border[3]))
|
str(self.border[2]) + '-' + str(self.border[3]))
|
||||||
if self.fill != 'white':
|
if self.fill != 'white':
|
||||||
flags.append('BlackFill')
|
flags.append('BlackFill')
|
||||||
if self.opt.quality == 2:
|
if self.opt.quality == 2:
|
||||||
@@ -199,10 +199,10 @@ class ComicPage:
|
|||||||
else:
|
else:
|
||||||
multiplier = 1.5
|
multiplier = 1.5
|
||||||
if border is not None:
|
if border is not None:
|
||||||
self.border = [round(float(border[0])/float(self.image.size[0])*150, 3),
|
self.border = [round(float(border[0]) / float(self.image.size[0]) * 150, 3),
|
||||||
round(float(border[1])/float(self.image.size[1])*150, 3),
|
round(float(border[1]) / float(self.image.size[1]) * 150, 3),
|
||||||
round(float(self.image.size[0]-border[2])/float(self.image.size[0])*150, 3),
|
round(float(self.image.size[0] - border[2]) / float(self.image.size[0]) * 150, 3),
|
||||||
round(float(self.image.size[1]-border[3])/float(self.image.size[1])*150, 3)]
|
round(float(self.image.size[1] - border[3]) / float(self.image.size[1]) * 150, 3)]
|
||||||
if int((border[2] - border[0]) * multiplier) < self.size[0] + 10:
|
if int((border[2] - border[0]) * multiplier) < self.size[0] + 10:
|
||||||
self.noHPV = True
|
self.noHPV = True
|
||||||
if int((border[3] - border[1]) * multiplier) < self.size[1] + 10:
|
if int((border[3] - border[1]) * multiplier) < self.size[1] + 10:
|
||||||
@@ -428,13 +428,13 @@ class ComicPage:
|
|||||||
while startY < bw.size[1]:
|
while startY < bw.size[1]:
|
||||||
if startY + 5 > bw.size[1]:
|
if startY + 5 > bw.size[1]:
|
||||||
startY = bw.size[1] - 5
|
startY = bw.size[1] - 5
|
||||||
fill += self.getImageHistogram(bw.crop((0, startY, bw.size[0], startY+5)))
|
fill += self.getImageHistogram(bw.crop((0, startY, bw.size[0], startY + 5)))
|
||||||
startY += 5
|
startY += 5
|
||||||
startX = 0
|
startX = 0
|
||||||
while startX < bw.size[0]:
|
while startX < bw.size[0]:
|
||||||
if startX + 5 > bw.size[0]:
|
if startX + 5 > bw.size[0]:
|
||||||
startX = bw.size[0] - 5
|
startX = bw.size[0] - 5
|
||||||
fill += self.getImageHistogram(bw.crop((startX, 0, startX+5, bw.size[1])))
|
fill += self.getImageHistogram(bw.crop((startX, 0, startX + 5, bw.size[1])))
|
||||||
startX += 5
|
startX += 5
|
||||||
if fill > 0:
|
if fill > 0:
|
||||||
self.fill = 'black'
|
self.fill = 'black'
|
||||||
|
|||||||
@@ -46,6 +46,9 @@ class HTMLStripper(HTMLParser):
|
|||||||
def get_data(self):
|
def get_data(self):
|
||||||
return ''.join(self.fed)
|
return ''.join(self.fed)
|
||||||
|
|
||||||
|
def error(self, message):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def getImageFileName(imgfile):
|
def getImageFileName(imgfile):
|
||||||
name, ext = os.path.splitext(imgfile)
|
name, ext = os.path.splitext(imgfile)
|
||||||
@@ -125,7 +128,6 @@ def sanitizeTrace(traceback):
|
|||||||
.replace('C:\\Python34_64\\', '')
|
.replace('C:\\Python34_64\\', '')
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyUnresolvedReferences
|
|
||||||
def dependencyCheck(level):
|
def dependencyCheck(level):
|
||||||
missing = []
|
missing = []
|
||||||
if level > 2:
|
if level > 2:
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -22,7 +22,6 @@ VERSION = __version__
|
|||||||
MAIN = 'kcc.py'
|
MAIN = 'kcc.py'
|
||||||
extra_options = {}
|
extra_options = {}
|
||||||
|
|
||||||
# noinspection PyUnresolvedReferences
|
|
||||||
if platform == 'darwin':
|
if platform == 'darwin':
|
||||||
from setuptools import setup
|
from setuptools import setup
|
||||||
from os import chmod, makedirs
|
from os import chmod, makedirs
|
||||||
@@ -60,7 +59,6 @@ if platform == 'darwin':
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif platform == 'win32':
|
elif platform == 'win32':
|
||||||
# noinspection PyUnresolvedReferences
|
|
||||||
import py2exe
|
import py2exe
|
||||||
from platform import architecture
|
from platform import architecture
|
||||||
from distutils.core import setup
|
from distutils.core import setup
|
||||||
|
|||||||
Reference in New Issue
Block a user