mirror of
https://github.com/ciromattia/kcc
synced 2025-12-13 01:36:27 +00:00
fix files with ' or " by using arg lists instead of strings (#581)
* replace popen with subprocess run * add splitlines * remove stdin * fix xml * fix error logging and 7zip
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
from argparse import ArgumentParser
|
||||
from time import strftime, gmtime
|
||||
@@ -34,7 +35,7 @@ from uuid import uuid4
|
||||
from slugify import slugify as slugify_ext
|
||||
from PIL import Image
|
||||
from subprocess import STDOUT, PIPE
|
||||
from psutil import Popen, virtual_memory, disk_usage
|
||||
from psutil import virtual_memory, disk_usage
|
||||
from html import escape as hescape
|
||||
try:
|
||||
from PyQt5 import QtCore
|
||||
@@ -1101,14 +1102,12 @@ def checkTools(source):
|
||||
source = source.upper()
|
||||
if source.endswith('.CB7') or source.endswith('.7Z') or source.endswith('.RAR') or source.endswith('.CBR') or \
|
||||
source.endswith('.ZIP') or source.endswith('.CBZ'):
|
||||
process = Popen('7z', stdout=PIPE, stderr=STDOUT, stdin=PIPE, shell=True)
|
||||
process.communicate()
|
||||
process = subprocess.run(['7z'], stdout=PIPE, stderr=STDOUT)
|
||||
if process.returncode != 0 and process.returncode != 7:
|
||||
print('ERROR: 7z is missing!')
|
||||
sys.exit(1)
|
||||
if options.format == 'MOBI':
|
||||
kindleGenExitCode = Popen('kindlegen -locale en', stdout=PIPE, stderr=STDOUT, stdin=PIPE, shell=True)
|
||||
kindleGenExitCode.communicate()
|
||||
kindleGenExitCode = subprocess.run(['kindlegen', '-locale', 'en'], stdout=PIPE, stderr=STDOUT)
|
||||
if kindleGenExitCode.returncode != 0:
|
||||
print('ERROR: KindleGen is missing!')
|
||||
sys.exit(1)
|
||||
@@ -1265,10 +1264,9 @@ def makeMOBIWorker(item):
|
||||
kindlegenError = ''
|
||||
try:
|
||||
if os.path.getsize(item) < 629145600:
|
||||
output = Popen('kindlegen -dont_append_source -locale en "' + item + '"',
|
||||
stdout=PIPE, stderr=STDOUT, stdin=PIPE, shell=True)
|
||||
for line in output.stdout:
|
||||
line = line.decode('utf-8')
|
||||
output = subprocess.run(['kindlegen', '-dont_append_source', '-locale', 'en', item],
|
||||
stdout=PIPE, stderr=STDOUT, encoding='UTF-8')
|
||||
for line in output.stdout.splitlines():
|
||||
# ERROR: Generic error
|
||||
if "Error(" in line:
|
||||
kindlegenErrorCode = 1
|
||||
@@ -1279,7 +1277,6 @@ def makeMOBIWorker(item):
|
||||
if kindlegenErrorCode > 0:
|
||||
break
|
||||
if ":I1036: Mobi file built successfully" in line:
|
||||
output.communicate()
|
||||
break
|
||||
else:
|
||||
# ERROR: EPUB too big
|
||||
|
||||
Reference in New Issue
Block a user