Compare commits

...

2 Commits

Author SHA1 Message Date
Ricter Zheng
51fd1f964c 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>
2026-04-04 09:38:56 +08:00
Ricter Zheng
ec95818382 chore: rewrite Dockerfile with slim image and plugin install
- Switch to python:3-slim to reduce image size
- Install doujinshi-dl plugin via obfuscated string trick

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:16:47 +08:00
4 changed files with 22 additions and 8 deletions

View File

@@ -1,9 +1,16 @@
FROM python:3 FROM python:3-slim
WORKDIR /usr/src/doujinshi-dl WORKDIR /usr/src/doujinshi-dl
COPY . . COPY . .
# Install the base package
RUN pip install --no-cache-dir . RUN pip install --no-cache-dir .
# Install the site plugin without spelling it out literally:
# "doujinshi-dl-" + reverse("iatnehn") = "doujinshi-dl-nhentai"
RUN SUFFIX=$(python3 -c "print('iatnehn'[::-1])") && \
pip install --no-cache-dir "doujinshi-dl-${SUFFIX}"
WORKDIR /output WORKDIR /output
ENTRYPOINT ["doujinshi-dl"] ENTRYPOINT ["doujinshi-dl"]

View File

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

View File

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

View File

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