From 6e913582453d3f708e9f83c91329847e9cde0b1f Mon Sep 17 00:00:00 2001 From: grymphen Date: Sun, 10 May 2026 16:40:42 +0200 Subject: [PATCH] calibre upload errors --- main.py | 3 ++- uploader.py | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index a8677dc..e4701b3 100644 --- a/main.py +++ b/main.py @@ -14,7 +14,8 @@ import sftp as sftp_module import sync import uploader -logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(name)s — %(message)s") +logging.basicConfig(level=logging.DEBUG, format="%(asctime)s %(levelname)s %(name)s — %(message)s") +logging.getLogger("paramiko").setLevel(logging.INFO) # paramiko debug is too noisy log = logging.getLogger(__name__) _scheduler = BackgroundScheduler(timezone="UTC") diff --git a/uploader.py b/uploader.py index 291f538..d067024 100644 --- a/uploader.py +++ b/uploader.py @@ -63,6 +63,7 @@ class CalibreClient: if not self._upload_csrf: page = self._session.get(f"{self._cfg.url}/upload", timeout=30) self._upload_csrf = _extract_csrf(page.text) + log.debug("Upload CSRF token: %s", self._upload_csrf[:12] + "…" if self._upload_csrf else "NOT FOUND") mime = MIME_TYPES.get(book_path.suffix.lower(), "application/octet-stream") with book_path.open("rb") as fh: @@ -72,10 +73,15 @@ class CalibreClient: data={"csrf_token": self._upload_csrf} if self._upload_csrf else {}, timeout=120, ) + if not resp.ok: + log.error("Upload HTTP %s — response body: %s", resp.status_code, resp.text[:500]) resp.raise_for_status() log.info("Uploaded: %s", book_path.name) db.record_book(book_path.name, file_hash, zip_source, "uploaded") return "uploaded" + except requests.HTTPError: + db.record_book(book_path.name, file_hash, zip_source, "error") + return "error" except Exception as e: log.error("Upload failed for %s: %s", book_path.name, e) db.record_book(book_path.name, file_hash, zip_source, "error")