mirror of
https://github.com/janeczku/calibre-web
synced 2024-12-26 10:00:37 +00:00
Catch errors on loading pickle file
Fix for cover images without Pillow
This commit is contained in:
parent
89516fc2d6
commit
67736fe187
@ -64,6 +64,7 @@ except ImportError as e:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
from PIL import __version__ as PILversion
|
||||||
use_PIL = True
|
use_PIL = True
|
||||||
except ImportError:
|
except ImportError:
|
||||||
use_PIL = False
|
use_PIL = False
|
||||||
@ -175,7 +176,6 @@ def pdf_preview(tmp_file_path, tmp_dir):
|
|||||||
cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.png"
|
cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.png"
|
||||||
img.save(filename=os.path.join(tmp_dir, cover_file_name))
|
img.save(filename=os.path.join(tmp_dir, cover_file_name))
|
||||||
return cover_file_name
|
return cover_file_name
|
||||||
# img.save(obj[1:] + ".png")
|
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print(ex)
|
print(ex)
|
||||||
try:
|
try:
|
||||||
@ -206,4 +206,12 @@ def get_versions():
|
|||||||
XVersion = 'v'+'.'.join(map(str, lxmlversion))
|
XVersion = 'v'+'.'.join(map(str, lxmlversion))
|
||||||
else:
|
else:
|
||||||
XVersion = _(u'not installed')
|
XVersion = _(u'not installed')
|
||||||
return {'Image Magick': IVersion, 'PyPdf': PVersion, 'lxml':XVersion, 'Wand Version': WVersion}
|
if use_PIL:
|
||||||
|
PILVersion = 'v' + PILversion
|
||||||
|
else:
|
||||||
|
PILVersion = _(u'not installed')
|
||||||
|
return {'Image Magick': IVersion,
|
||||||
|
'PyPdf': PVersion,
|
||||||
|
'lxml':XVersion,
|
||||||
|
'Wand': WVersion,
|
||||||
|
'Pillow': PILVersion}
|
||||||
|
@ -482,11 +482,11 @@ def save_cover_from_filestorage(filepath, saved_filename, img):
|
|||||||
# saves book cover to gdrive or locally
|
# saves book cover to gdrive or locally
|
||||||
def save_cover(img, book_path):
|
def save_cover(img, book_path):
|
||||||
content_type = img.headers.get('content-type')
|
content_type = img.headers.get('content-type')
|
||||||
|
|
||||||
|
if use_PIL:
|
||||||
if content_type not in ('image/jpeg', 'image/png', 'image/webp'):
|
if content_type not in ('image/jpeg', 'image/png', 'image/webp'):
|
||||||
web.app.logger.error("Only jpg/jpeg/png/webp files are supported as coverfile")
|
web.app.logger.error("Only jpg/jpeg/png/webp files are supported as coverfile")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if use_PIL:
|
|
||||||
# convert to jpg because calibre only supports jpg
|
# convert to jpg because calibre only supports jpg
|
||||||
if content_type in ('image/png', 'image/webp'):
|
if content_type in ('image/png', 'image/webp'):
|
||||||
if hasattr(img,'stream'):
|
if hasattr(img,'stream'):
|
||||||
@ -497,6 +497,10 @@ def save_cover(img, book_path):
|
|||||||
tmp_bytesio = io.BytesIO()
|
tmp_bytesio = io.BytesIO()
|
||||||
im.save(tmp_bytesio, format='JPEG')
|
im.save(tmp_bytesio, format='JPEG')
|
||||||
img._content = tmp_bytesio.getvalue()
|
img._content = tmp_bytesio.getvalue()
|
||||||
|
else:
|
||||||
|
if content_type not in ('image/jpeg'):
|
||||||
|
web.app.logger.error("Only jpg/jpeg files are supported as coverfile")
|
||||||
|
return False
|
||||||
|
|
||||||
if ub.config.config_use_google_drive:
|
if ub.config.config_use_google_drive:
|
||||||
tmpDir = gettempdir()
|
tmpDir = gettempdir()
|
||||||
|
@ -201,9 +201,14 @@ lm.anonymous_user = ub.Anonymous
|
|||||||
app.secret_key = os.getenv('SECRET_KEY', 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT')
|
app.secret_key = os.getenv('SECRET_KEY', 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT')
|
||||||
db.setup_db()
|
db.setup_db()
|
||||||
|
|
||||||
with open(os.path.join(config.get_main_dir, 'cps/translations/iso639.pickle'), 'rb') as f:
|
try:
|
||||||
|
with open(os.path.join(config.get_main_dir, 'cps/translations/iso639.pickle'), 'rb') as f:
|
||||||
language_table = cPickle.load(f)
|
language_table = cPickle.load(f)
|
||||||
|
except cPickle.UnpicklingError as error:
|
||||||
|
app.logger.error("Can't read file cps/translations/iso639.pickle: %s", error)
|
||||||
|
print("Can't read file cps/translations/iso639.pickle: %s" % error)
|
||||||
|
helper.global_WorkerThread.stop()
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
def is_gdrive_ready():
|
def is_gdrive_ready():
|
||||||
return os.path.exists(os.path.join(config.get_main_dir, 'settings.yaml')) and \
|
return os.path.exists(os.path.join(config.get_main_dir, 'settings.yaml')) and \
|
||||||
|
Loading…
Reference in New Issue
Block a user