mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-30 06:43:03 +00:00 
			
		
		
		
	support issue: #843
This commit is contained in:
		| @@ -24,6 +24,7 @@ import ub | |||||||
| from flask import current_app as app | from flask import current_app as app | ||||||
| from tempfile import gettempdir | from tempfile import gettempdir | ||||||
| import sys | import sys | ||||||
|  | import io | ||||||
| import os | import os | ||||||
| import re | import re | ||||||
| import unicodedata | import unicodedata | ||||||
| @@ -34,6 +35,7 @@ from flask_babel import gettext as _ | |||||||
| from flask_login import current_user | from flask_login import current_user | ||||||
| from babel.dates import format_datetime | from babel.dates import format_datetime | ||||||
| from datetime import datetime | from datetime import datetime | ||||||
|  | from PIL import Image | ||||||
| import shutil | import shutil | ||||||
| import requests | import requests | ||||||
| try: | try: | ||||||
| @@ -445,10 +447,19 @@ def get_book_cover(cover_path): | |||||||
| # saves book cover to gdrive or locally | # saves book cover to gdrive or locally | ||||||
| def save_cover(url, book_path): | def save_cover(url, book_path): | ||||||
|     img = requests.get(url) |     img = requests.get(url) | ||||||
|     if img.headers.get('content-type') != 'image/jpeg': |     content_type = img.headers.get('content-type') | ||||||
|         web.app.logger.error("Cover is no jpg file, can't save") |     if content_type not in ('image/jpeg', 'image/png', 'image/webp'): | ||||||
|  |         web.app.logger.error("Cover is only support jpg/png/webp file, can't save") | ||||||
|         return False |         return False | ||||||
|  |  | ||||||
|  |     # convert to jpg because calibre just support jpg | ||||||
|  |     if content_type in ('image/png', 'image/webp'): | ||||||
|  |         imgc = Image.open(io.BytesIO(img.content)) | ||||||
|  |         im = imgc.convert('RGB') | ||||||
|  |         tmp_bytesio = io.BytesIO() | ||||||
|  |         im.save(tmp_bytesio, format='JPEG') | ||||||
|  |         img.content = tmp_bytesio.getvalue() | ||||||
|  |  | ||||||
|     if ub.config.config_use_google_drive: |     if ub.config.config_use_google_drive: | ||||||
|         tmpDir = gettempdir() |         tmpDir = gettempdir() | ||||||
|         f = open(os.path.join(tmpDir, "uploaded_cover.jpg"), "wb") |         f = open(os.path.join(tmpDir, "uploaded_cover.jpg"), "wb") | ||||||
|   | |||||||
| @@ -13,3 +13,4 @@ SQLAlchemy>=1.1.0 | |||||||
| tornado>=4.1 | tornado>=4.1 | ||||||
| Wand>=0.4.4 | Wand>=0.4.4 | ||||||
| unidecode>=0.04.19 | unidecode>=0.04.19 | ||||||
|  | Pillow>=5.4.0 | ||||||
		Reference in New Issue
	
	Block a user
	 Yijun Zhao
					Yijun Zhao