fix: skip post-processing when CBZ/PDF already exists, still update history DB

When check_if_need_download() returns False (CBZ/PDF file already exists),
skip all post-processing steps that require doujinshi_dir to be present
(serializer, generate_doc, generate_html, rm_origin_dir, etc.), as the
directory may have been removed by --rm-origin-dir on a previous run.

However, still write to the download history DB unconditionally so that
records lost due to DB corruption/reset are recovered on the next run.

Fixes #429

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ricter Zheng
2026-04-04 09:38:56 +08:00
parent ec95818382
commit 51fd1f964c
3 changed files with 14 additions and 7 deletions

View File

@@ -1,3 +1,3 @@
__version__ = '2.0.7'
__version__ = '2.0.8'
__author__ = 'RicterZ'
__email__ = 'ricterzheng@gmail.com'

View File

@@ -129,7 +129,8 @@ def main():
doujinshi = doujinshi_model.doujinshi
doujinshi.downloader = downloader
if doujinshi.check_if_need_download(options):
need_download = doujinshi.check_if_need_download(options)
if need_download:
doujinshi.download()
else:
logger.info(
@@ -138,14 +139,20 @@ def main():
doujinshi_dir = os.path.join(options.output_dir, doujinshi.filename)
if options.generate_metadata:
serializer.write_all(meta, doujinshi_dir)
logger.log(16, f'Metadata files have been written to "{doujinshi_dir}"')
# If skipped (CBZ/PDF already exists), treat as already downloaded:
# - skip all post-processing that requires doujinshi_dir to exist
# - but still write to history DB in case the record was lost
if options.is_save_download_history:
with DB() as db:
db.add_one(doujinshi.id)
if not need_download:
continue
if options.generate_metadata:
serializer.write_all(meta, doujinshi_dir)
logger.log(16, f'Metadata files have been written to "{doujinshi_dir}"')
if not options.is_nohtml:
generate_html(options.output_dir, doujinshi, template=template)

View File

@@ -1,6 +1,6 @@
[tool.poetry]
name = "doujinshi-dl"
version = "2.0.7"
version = "2.0.8"
description = "doujinshi downloader"
authors = ["Ricter Z <ricterzheng@gmail.com>"]
license = "MIT"