afegit convertir-imagenes
This commit is contained in:
+19
-7
@@ -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
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user