afegit convertir-imagenes

This commit is contained in:
2026-02-19 10:31:53 +01:00
parent 18e22e167d
commit f4104ded96
5 changed files with 78 additions and 14 deletions
+19 -7
View File
@@ -48,10 +48,22 @@ def extract_archive(path: str, dest_dir: str) -> str:
def repack_as_cbz(source_dir: str, target_path: str) -> None:
"""Empaqueta todos los archivos de source_dir en un CBZ (ZIP deflated)."""
with zipfile.ZipFile(target_path, "w", zipfile.ZIP_DEFLATED) as zf:
for root, _, files in os.walk(source_dir):
for f in files:
full = os.path.join(root, f)
rel = os.path.relpath(full, source_dir)
zf.write(full, rel)
"""Empaqueta todos los archivos de source_dir en un CBZ (ZIP deflated).
Escribe primero a un fichero temporal (.tmp) en el mismo directorio y
hace un os.replace() atómico al final, de modo que una interrupción
nunca deja un CBZ parcial ni destruye el original.
"""
tmp_path = target_path + ".tmp"
try:
with zipfile.ZipFile(tmp_path, "w", zipfile.ZIP_DEFLATED) as zf:
for root, _, files in os.walk(source_dir):
for f in files:
full = os.path.join(root, f)
rel = os.path.relpath(full, source_dir)
zf.write(full, rel)
os.replace(tmp_path, target_path)
except BaseException:
if os.path.exists(tmp_path):
os.remove(tmp_path)
raise
+23 -1
View File
@@ -17,7 +17,12 @@ from processors.checks import (
check_comicinfo,
)
from processors.page_normalizer import normalize_pages, preview_normalize_pages
from processors.image_normalizer import normalize_images, preview_normalize_images
from processors.image_normalizer import (
normalize_images,
preview_normalize_images,
uniformize_images,
preview_uniformize_images,
)
class Pipeline:
@@ -50,6 +55,10 @@ class Pipeline:
return {"renames": renames}
elif step == "normalize_images":
conversions = preview_uniformize_images(temp_dir, self.desired_image_format)
return {"conversions": conversions, "target_ext": self.desired_image_format}
elif step == "convert_images":
conversions = preview_normalize_images(temp_dir, self.desired_image_format)
return {"conversions": conversions, "target_ext": self.desired_image_format}
@@ -107,6 +116,19 @@ class Pipeline:
preview = self._compute_preview("normalize_images", temp_dir, step_results)
if preview.get("conversions"):
if confirm_fn is None or confirm_fn("normalize_images", preview):
img_result = uniformize_images(temp_dir, self.desired_image_format)
step_results.append(img_result)
if img_result.errors:
return ComicResult(
original_path=path, final_path=None, steps=step_results
)
if img_result.changed:
any_changed = True
if "convert_images" in self.steps:
preview = self._compute_preview("convert_images", temp_dir, step_results)
if preview.get("conversions"):
if confirm_fn is None or confirm_fn("convert_images", preview):
img_result = normalize_images(temp_dir, self.desired_image_format)
step_results.append(img_result)
if img_result.errors: