mirror of
https://github.com/janeczku/calibre-web
synced 2024-12-01 05:49:58 +00:00
Merge branch 'master' into cover_thumbnail
This commit is contained in:
commit
fe5d684d2c
@ -91,7 +91,7 @@ if wtf_present:
|
||||
else:
|
||||
csrf = None
|
||||
|
||||
ub.init_db(cli.settingspath)
|
||||
ub.init_db(cli.settings_path)
|
||||
# pylint: disable=no-member
|
||||
config = config_sql.load_configuration(ub.session)
|
||||
|
||||
@ -106,7 +106,7 @@ log = logger.create()
|
||||
from . import services
|
||||
|
||||
db.CalibreDB.update_config(config)
|
||||
db.CalibreDB.setup_db(config.config_calibre_dir, cli.settingspath)
|
||||
db.CalibreDB.setup_db(config.config_calibre_dir, cli.settings_path)
|
||||
|
||||
|
||||
calibre_db = db.CalibreDB()
|
||||
|
13
cps/cli.py
13
cps/cli.py
@ -24,7 +24,7 @@ import socket
|
||||
from .constants import CONFIG_DIR as _CONFIG_DIR
|
||||
from .constants import STABLE_VERSION as _STABLE_VERSION
|
||||
from .constants import NIGHTLY_VERSION as _NIGHTLY_VERSION
|
||||
|
||||
from .constants import DEFAULT_SETTINGS_FILE, DEFAULT_GDRIVE_FILE
|
||||
|
||||
def version_info():
|
||||
if _NIGHTLY_VERSION[1].startswith('$Format'):
|
||||
@ -51,8 +51,15 @@ parser.add_argument('-d', action='store_true', help='Dry run of updater to check
|
||||
parser.add_argument('-r', action='store_true', help='Enable public database reconnect route under /reconnect')
|
||||
args = parser.parse_args()
|
||||
|
||||
settingspath = args.p or os.path.join(_CONFIG_DIR, "app.db")
|
||||
gdpath = args.g or os.path.join(_CONFIG_DIR, "gdrive.db")
|
||||
settings_path = args.p or os.path.join(_CONFIG_DIR, DEFAULT_SETTINGS_FILE)
|
||||
gd_path = args.g or os.path.join(_CONFIG_DIR, DEFAULT_GDRIVE_FILE)
|
||||
|
||||
if os.path.isdir(settings_path):
|
||||
settings_path = os.path.join(settings_path, DEFAULT_SETTINGS_FILE)
|
||||
|
||||
if os.path.isdir(gd_path):
|
||||
gd_path = os.path.join(gd_path, DEFAULT_GDRIVE_FILE)
|
||||
|
||||
|
||||
# handle and check parameter for ssl encryption
|
||||
certfilepath = None
|
||||
|
@ -50,6 +50,8 @@ if HOME_CONFIG:
|
||||
else:
|
||||
CONFIG_DIR = os.environ.get('CALIBRE_DBPATH', BASE_DIR)
|
||||
|
||||
DEFAULT_SETTINGS_FILE = "app.db"
|
||||
DEFAULT_GDRIVE_FILE = "gdrive.db"
|
||||
|
||||
ROLE_USER = 0 << 0
|
||||
ROLE_ADMIN = 1 << 0
|
||||
|
@ -811,7 +811,7 @@ def edit_book(book_id):
|
||||
if to_save["cover_url"].endswith('/static/generic_cover.jpg'):
|
||||
book.has_cover = 0
|
||||
else:
|
||||
result, error = helper.save_cover_from_url(to_save["cover_url"], book.path)
|
||||
result, error = helper.save_cover_from_url(to_save["cover_url"].strip(), book.path)
|
||||
if result is True:
|
||||
book.has_cover = 1
|
||||
modify_date = True
|
||||
|
@ -35,10 +35,6 @@ except ImportError:
|
||||
from sqlalchemy.exc import OperationalError, InvalidRequestError, IntegrityError
|
||||
from sqlalchemy.sql.expression import text
|
||||
|
||||
#try:
|
||||
# from six import __version__ as six_version
|
||||
#except ImportError:
|
||||
# six_version = "not installed"
|
||||
try:
|
||||
from httplib2 import __version__ as httplib2_version
|
||||
except ImportError:
|
||||
@ -141,11 +137,12 @@ class Gdrive:
|
||||
def __init__(self):
|
||||
self.drive = getDrive(gauth=Gauth.Instance().auth)
|
||||
|
||||
|
||||
def is_gdrive_ready():
|
||||
return os.path.exists(SETTINGS_YAML) and os.path.exists(CREDENTIALS)
|
||||
|
||||
|
||||
engine = create_engine('sqlite:///{0}'.format(cli.gdpath), echo=False)
|
||||
engine = create_engine('sqlite:///{0}'.format(cli.gd_path), echo=False)
|
||||
Base = declarative_base()
|
||||
|
||||
# Open session for database connection
|
||||
@ -193,11 +190,11 @@ def migrate():
|
||||
session.execute('ALTER TABLE gdrive_ids2 RENAME to gdrive_ids')
|
||||
break
|
||||
|
||||
if not os.path.exists(cli.gdpath):
|
||||
if not os.path.exists(cli.gd_path):
|
||||
try:
|
||||
Base.metadata.create_all(engine)
|
||||
except Exception as ex:
|
||||
log.error("Error connect to database: {} - {}".format(cli.gdpath, ex))
|
||||
log.error("Error connect to database: {} - {}".format(cli.gd_path, ex))
|
||||
raise
|
||||
migrate()
|
||||
|
||||
|
@ -819,6 +819,9 @@ def save_cover_from_url(url, book_path):
|
||||
log.error("python modul advocate is not installed but is needed")
|
||||
return False, _("Python modul 'advocate' is not installed but is needed for cover downloads")
|
||||
img.raise_for_status()
|
||||
# # cover_processing()
|
||||
# move_coverfile(meta, db_book)
|
||||
|
||||
return save_cover(img, book_path)
|
||||
except (socket.gaierror,
|
||||
requests.exceptions.HTTPError,
|
||||
@ -868,11 +871,10 @@ def save_cover(img, book_path):
|
||||
content_type = img.headers.get('content-type')
|
||||
|
||||
if use_IM:
|
||||
if content_type not in ('image/jpeg', 'image/png', 'image/webp', 'image/bmp'):
|
||||
if content_type not in ('image/jpeg', 'image/jpg', 'image/png', 'image/webp', 'image/bmp'):
|
||||
log.error("Only jpg/jpeg/png/webp/bmp files are supported as coverfile")
|
||||
return False, _("Only jpg/jpeg/png/webp/bmp files are supported as coverfile")
|
||||
# convert to jpg because calibre only supports jpg
|
||||
if content_type != 'image/jpg':
|
||||
try:
|
||||
if hasattr(img, 'stream'):
|
||||
imgc = Image(blob=img.stream)
|
||||
@ -885,7 +887,7 @@ def save_cover(img, book_path):
|
||||
log.error("Invalid cover file content")
|
||||
return False, _("Invalid cover file content")
|
||||
else:
|
||||
if content_type not in 'image/jpeg':
|
||||
if content_type not in ['image/jpeg', 'image/jpg']:
|
||||
log.error("Only jpg/jpeg files are supported as coverfile")
|
||||
return False, _("Only jpg/jpeg files are supported as coverfile")
|
||||
|
||||
|
@ -125,6 +125,7 @@ class LubimyCzytac(Metadata):
|
||||
)
|
||||
return final_matches
|
||||
return matches
|
||||
return []
|
||||
|
||||
def _prepare_query(self, title: str) -> str:
|
||||
query = ""
|
||||
|
@ -381,8 +381,8 @@ $(function() {
|
||||
//extraScrollPx: 300
|
||||
});
|
||||
$loadMore.on( "append.infiniteScroll", function( event, response, path, data ) {
|
||||
if ($("body").hasClass("blur")) {
|
||||
$(".pagination").addClass("hidden").html(() => $(response).find(".pagination").html());
|
||||
if ($("body").hasClass("blur")) {
|
||||
$(" a:not(.dropdown-toggle) ")
|
||||
.removeAttr("data-toggle");
|
||||
}
|
||||
|
@ -231,7 +231,7 @@ def pdf_meta(tmp_file_path, original_file_name, original_file_extension):
|
||||
if title == '':
|
||||
title = doc_info.title if doc_info.title else original_file_name
|
||||
if subject == '':
|
||||
subject = doc_info.subject
|
||||
subject = doc_info.subject or ""
|
||||
if tags == '' and '/Keywords' in doc_info:
|
||||
if isinstance(doc_info['/Keywords'], bytes):
|
||||
tags = doc_info['/Keywords'].decode('utf-8')
|
||||
|
@ -1,5 +1,5 @@
|
||||
# GDrive Integration
|
||||
google-api-python-client>=1.7.11,<2.43.0
|
||||
google-api-python-client>=1.7.11,<2.44.0
|
||||
gevent>20.6.0,<22.0.0
|
||||
greenlet>=0.4.17,<1.2.0
|
||||
httplib2>=0.9.2,<0.21.0
|
||||
@ -13,7 +13,7 @@ rsa>=3.4.2,<4.9.0
|
||||
|
||||
# Gmail
|
||||
google-auth-oauthlib>=0.4.3,<0.6.0
|
||||
google-api-python-client>=1.7.11,<2.43.0
|
||||
google-api-python-client>=1.7.11,<2.44.0
|
||||
|
||||
# goodreads
|
||||
goodreads>=0.3.2,<0.4.0
|
||||
|
@ -62,7 +62,7 @@ install_requires =
|
||||
|
||||
[options.extras_require]
|
||||
gdrive =
|
||||
google-api-python-client>=1.7.11,<2.43.0
|
||||
google-api-python-client>=1.7.11,<2.44.0
|
||||
gevent>20.6.0,<22.0.0
|
||||
greenlet>=0.4.17,<1.2.0
|
||||
httplib2>=0.9.2,<0.21.0
|
||||
@ -75,7 +75,7 @@ gdrive =
|
||||
rsa>=3.4.2,<4.9.0
|
||||
gmail =
|
||||
google-auth-oauthlib>=0.4.3,<0.6.0
|
||||
google-api-python-client>=1.7.11,<2.43.0
|
||||
google-api-python-client>=1.7.11,<2.44.0
|
||||
goodreads =
|
||||
goodreads>=0.3.2,<0.4.0
|
||||
python-Levenshtein>=0.12.0,<0.13.0
|
||||
|
Loading…
Reference in New Issue
Block a user