1
0
mirror of https://github.com/ciromattia/kcc synced 2026-07-25 22:24:38 +00:00

Refactored KindleGen error handling

This commit is contained in:
Paweł Jastrzębski
2013-07-11 13:25:32 +02:00
parent d7f6503196
commit aefa36fef8
+25 -10
View File
@@ -167,14 +167,28 @@ class WorkerThread(QtCore.QThread):
else: else:
self.emit(QtCore.SIGNAL("addMessage"), 'Creating EPUB file... Done!', 'info', True) self.emit(QtCore.SIGNAL("addMessage"), 'Creating EPUB file... Done!', 'info', True)
if str(GUI.FormatBox.currentText()) == 'MOBI': if str(GUI.FormatBox.currentText()) == 'MOBI':
if not os.path.getsize(outputPath) > 314572800:
self.emit(QtCore.SIGNAL("addMessage"), 'Creating MOBI file...', 'info') self.emit(QtCore.SIGNAL("addMessage"), 'Creating MOBI file...', 'info')
self.emit(QtCore.SIGNAL("progressBarTick"), 1) self.emit(QtCore.SIGNAL("progressBarTick"), 1)
try: try:
retcode = call('kindlegen -verbose "' + outputPath + '"', shell=True) self.kindlegenErrorCode = 0
if os.path.getsize(outputPath) < 367001600:
output = Popen('kindlegen "' + outputPath + '"', stdout=PIPE, stderr=STDOUT, shell=True)
for line in output.stdout:
# ERROR: Generic error
if "Error(" in line:
self.kindlegenErrorCode = 1
self.kindlegenError = line
# ERROR: EPUB too big
if ":E23026:" in line:
self.kindlegenErrorCode = 23026
else:
# ERROR: EPUB too big
self.kindlegenErrorCode = 23026
except: except:
# ERROR: Unknown generic error
self.kindlegenErrorCode = 1
continue continue
if retcode == 0 or retcode == 1: if self.kindlegenErrorCode == 0:
self.emit(QtCore.SIGNAL("addMessage"), 'Creating MOBI file... Done!', 'info', True) self.emit(QtCore.SIGNAL("addMessage"), 'Creating MOBI file... Done!', 'info', True)
self.emit(QtCore.SIGNAL("addMessage"), 'Removing SRCS header...', 'info') self.emit(QtCore.SIGNAL("addMessage"), 'Removing SRCS header...', 'info')
os.remove(outputPath) os.remove(outputPath)
@@ -194,17 +208,18 @@ class WorkerThread(QtCore.QThread):
self.emit(QtCore.SIGNAL("addMessage"), self.emit(QtCore.SIGNAL("addMessage"),
'MOBI file will work correctly but it will be highly oversized.', 'warning') 'MOBI file will work correctly but it will be highly oversized.', 'warning')
else: else:
epubSize = (os.path.getsize(outputPath))/1024/1024
os.remove(outputPath) os.remove(outputPath)
if os.path.exists(outputPath.replace('.epub', '.mobi')): if os.path.exists(outputPath.replace('.epub', '.mobi')):
os.remove(outputPath.replace('.epub', '.mobi')) os.remove(outputPath.replace('.epub', '.mobi'))
self.emit(QtCore.SIGNAL("addMessage"), 'KindleGen failed to create MOBI!', 'error') self.emit(QtCore.SIGNAL("addMessage"), 'KindleGen failed to create MOBI!', 'error')
self.emit(QtCore.SIGNAL("addMessage"), 'Try converting a smaller batch.', 'error') if self.kindlegenErrorCode == 1 and self.kindlegenError:
else: self.emit(QtCore.SIGNAL("showDialog"), "KindleGen error:\n\n" + self.kindlegenError)
excess = (os.path.getsize(outputPath) - 314572800)/1024/1024 if self.kindlegenErrorCode == 23026:
os.remove(outputPath) self.emit(QtCore.SIGNAL("addMessage"), 'Created EPUB file was too big.',
self.emit(QtCore.SIGNAL("addMessage"), 'Created EPUB file is too big for KindleGen!', 'error') 'error')
self.emit(QtCore.SIGNAL("addMessage"), 'Limit exceeded by ' + str(excess) + self.emit(QtCore.SIGNAL("addMessage"), 'EPUB file: ' + str(epubSize) + 'MB.'
' MB. Try converting a smaller batch.', 'error') ' Supported size: ~300MB.', 'error')
self.emit(QtCore.SIGNAL("hideProgressBar")) self.emit(QtCore.SIGNAL("hideProgressBar"))
self.parent.needClean = True self.parent.needClean = True
self.emit(QtCore.SIGNAL("addMessage"), '<b>All jobs completed.</b>', 'info') self.emit(QtCore.SIGNAL("addMessage"), '<b>All jobs completed.</b>', 'info')