check for doubles
This commit is contained in:
@@ -13,7 +13,7 @@ import db
|
||||
import sftp as sftp_module
|
||||
import sync
|
||||
import uploader
|
||||
from uploader import delete_book, fetch_all_books, find_duplicate_groups
|
||||
from uploader import CalibreClient, delete_book, fetch_all_books, find_duplicate_groups
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(name)s — %(message)s")
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -222,13 +222,15 @@ def _run_dedup():
|
||||
try:
|
||||
cfg = config.load()
|
||||
log.info("Dedup: fetching all books ...")
|
||||
client = CalibreClient(cfg.calibre)
|
||||
client._ensure_auth()
|
||||
books = fetch_all_books(cfg.calibre)
|
||||
groups = find_duplicate_groups(books)
|
||||
to_delete = [b for group in groups for b in sorted(group, key=lambda x: x.get("id", 0))[1:]]
|
||||
_dedup_state.update({"total": len(to_delete), "deleted": 0, "failed": 0})
|
||||
log.info("Dedup: %d duplicate(s) to delete across %d group(s)", len(to_delete), len(groups))
|
||||
for book in to_delete:
|
||||
ok, msg = delete_book(cfg.calibre, book["id"])
|
||||
ok, msg = delete_book(cfg.calibre, book["id"], client)
|
||||
if ok:
|
||||
_dedup_state["deleted"] += 1
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user