comprova la rura
duplica els resultats de fitxers brossa mes info en --listar --aplanar
This commit is contained in:
+27
-25
@@ -53,26 +53,25 @@ class Pipeline:
|
||||
if step == "clean":
|
||||
trash_r = next((r for r in step_results if r.step == "check_trash"), None)
|
||||
foreign_r = next((r for r in step_results if r.step == "check_foreign"), None)
|
||||
nested_r = next((r for r in step_results if r.step == "check_nested"), None)
|
||||
prefix = "Basura detectada: "
|
||||
items = [w.removeprefix(prefix) for w in (trash_r.warnings if trash_r else []) if w.startswith(prefix)]
|
||||
items += [w.removeprefix("Fichero extraño: ") for w in (foreign_r.warnings if foreign_r else [])]
|
||||
flatten = False
|
||||
return {"items": items}
|
||||
|
||||
elif step == "flatten":
|
||||
nested_r = next((r for r in step_results if r.step == "check_nested"), None)
|
||||
flatten_files: list[tuple[str, str]] = []
|
||||
if nested_r and nested_r.warnings:
|
||||
w = nested_r.warnings[0]
|
||||
if w.startswith("Imágenes en subdirectorio: "):
|
||||
flatten = True
|
||||
for entry in sorted(os.listdir(temp_dir)):
|
||||
subpath = os.path.join(temp_dir, entry)
|
||||
if not os.path.isdir(subpath):
|
||||
continue
|
||||
for root, _dirs, files in os.walk(subpath):
|
||||
for f in sorted(files):
|
||||
src_abs = os.path.join(root, f)
|
||||
src_rel = os.path.relpath(src_abs, temp_dir)
|
||||
flatten_files.append((src_rel, f))
|
||||
return {"items": items, "flatten": flatten, "flatten_files": flatten_files}
|
||||
if nested_r and nested_r.warnings and nested_r.warnings[0].startswith("Imágenes en subdirectorio: "):
|
||||
for entry in sorted(os.listdir(temp_dir)):
|
||||
subpath = os.path.join(temp_dir, entry)
|
||||
if not os.path.isdir(subpath):
|
||||
continue
|
||||
for root, _dirs, files in os.walk(subpath):
|
||||
for f in sorted(files):
|
||||
src_abs = os.path.join(root, f)
|
||||
src_rel = os.path.relpath(src_abs, temp_dir)
|
||||
flatten_files.append((src_rel, f))
|
||||
return {"flatten_files": flatten_files}
|
||||
|
||||
elif step == "normalize_pages":
|
||||
renames = preview_normalize_pages(temp_dir)
|
||||
@@ -112,10 +111,10 @@ class Pipeline:
|
||||
if step == "clean":
|
||||
trash = next((r for r in step_results if r.step == "check_trash"), None)
|
||||
foreign = next((r for r in step_results if r.step == "check_foreign"), None)
|
||||
nested = next((r for r in step_results if r.step == "check_nested"), None)
|
||||
if (trash and trash.warnings) or (foreign and foreign.warnings):
|
||||
return True
|
||||
# Solo necesita extracción si es el caso aplanable (1 subdir)
|
||||
if step == "flatten":
|
||||
nested = next((r for r in step_results if r.step == "check_nested"), None)
|
||||
if nested and nested.warnings and nested.warnings[0].startswith("Imágenes en subdirectorio: "):
|
||||
return True
|
||||
return False
|
||||
@@ -188,18 +187,21 @@ class Pipeline:
|
||||
|
||||
if "clean" in self.steps:
|
||||
preview = self._compute_preview("clean", temp_dir, step_results)
|
||||
if preview.get("items") or preview.get("flatten"):
|
||||
if preview.get("items"):
|
||||
if confirm_fn is None or confirm_fn("clean", preview):
|
||||
clean_result = clean_directory(temp_dir)
|
||||
step_results.append(clean_result)
|
||||
if clean_result.changed:
|
||||
any_changed = True
|
||||
# Aplanar si caso simple
|
||||
if preview.get("flatten"):
|
||||
flat_result = flatten_directory(temp_dir)
|
||||
step_results.append(flat_result)
|
||||
if flat_result.changed:
|
||||
any_changed = True
|
||||
|
||||
if "flatten" in self.steps:
|
||||
preview = self._compute_preview("flatten", temp_dir, step_results)
|
||||
if preview.get("flatten_files"):
|
||||
if confirm_fn is None or confirm_fn("flatten", preview):
|
||||
flat_result = flatten_directory(temp_dir)
|
||||
step_results.append(flat_result)
|
||||
if flat_result.changed:
|
||||
any_changed = True
|
||||
|
||||
if "normalize_pages" in self.steps:
|
||||
preview = self._compute_preview("normalize_pages", temp_dir, step_results)
|
||||
|
||||
+4
-1
@@ -55,6 +55,7 @@ class SummaryCollector:
|
||||
)
|
||||
|
||||
cleaned = count_step(["clean"])
|
||||
flattened = count_step(["flatten"])
|
||||
pages_normalized = count_step(["normalize_pages"])
|
||||
images_converted = count_step(["normalize_images", "convert_images"])
|
||||
format_converted = count_step(["convert"])
|
||||
@@ -75,6 +76,8 @@ class SummaryCollector:
|
||||
if modified:
|
||||
if cleaned:
|
||||
lines.append(f" · {'Limpiados':<{_SL}} : {cleaned:>{w}}")
|
||||
if flattened:
|
||||
lines.append(f" · {'Aplanados':<{_SL}} : {flattened:>{w}}")
|
||||
if pages_normalized:
|
||||
lines.append(f" · {'Páginas normalizadas':<{_SL}} : {pages_normalized:>{w}}")
|
||||
if images_converted:
|
||||
@@ -139,7 +142,7 @@ class SummaryCollector:
|
||||
("Extensión incorrecta", "validate", lambda w: "Extensión incorrecta" in w, ["convert"], "convertido"),
|
||||
("Basura detectada", "check_trash", lambda w: True, ["clean"], "limpiado"),
|
||||
("Ficheros extraños", "check_foreign", lambda w: True, ["clean"], "limpiado"),
|
||||
("Estructura anidada", "check_nested", lambda w: w.startswith("Imágenes en subdirectorio: "), ["clean"], "aplanado"),
|
||||
("Estructura anidada", "check_nested", lambda w: w.startswith("Imágenes en subdirectorio: "), ["flatten"], "aplanado"),
|
||||
("Estructura compleja", "check_nested", lambda w: w.startswith("Múltiples subdirectorios"), [], None),
|
||||
("Numeración de páginas", "check_page_numbering", lambda w: True, ["normalize_pages"], "renumerado"),
|
||||
("Imágenes mezcladas", "check_image_extensions", lambda w: True, ["normalize_images", "convert_images"], "normalizado"),
|
||||
|
||||
Reference in New Issue
Block a user