140 lines
3.8 KiB
Python
140 lines
3.8 KiB
Python
# main.py
|
|
|
|
import argparse
|
|
from core.scanner import find_comic_files
|
|
from processors.validator import validate_comic
|
|
from processors.cleaner import clean_comic
|
|
from processors.converter import convert_comic
|
|
from processors.standardizer import standardize_comic
|
|
|
|
|
|
def parse_args():
|
|
parser = argparse.ArgumentParser(
|
|
description="Gestor de colección de cómics CBR/CBZ"
|
|
)
|
|
|
|
parser.add_argument(
|
|
"--ruta",
|
|
type=str,
|
|
required=True,
|
|
help="Ruta base donde buscar los cómics"
|
|
)
|
|
|
|
parser.add_argument(
|
|
"--listar",
|
|
action="store_true",
|
|
help="Listar todos los archivos CBR/CBZ encontrados"
|
|
)
|
|
|
|
parser.add_argument(
|
|
"--validar",
|
|
action="store_true",
|
|
help="Validar los archivos encontrados"
|
|
)
|
|
|
|
parser.add_argument(
|
|
"--limpiar",
|
|
action="store_true",
|
|
help="Eliminar archivos basura y reconstruir CBZ limpios"
|
|
)
|
|
|
|
parser.add_argument(
|
|
"--convertir",
|
|
action="store_true",
|
|
help="Convertir los archivos al formato indicado con --formato"
|
|
)
|
|
|
|
parser.add_argument(
|
|
"--formato",
|
|
type=str,
|
|
choices=["cbz", "cbr"],
|
|
default="cbz",
|
|
help="Formato final deseado (por defecto: cbz)"
|
|
)
|
|
|
|
parser.add_argument(
|
|
"--estandarizar",
|
|
action="store_true",
|
|
help="Pipeline completo: limpiar, convertir y normalizar"
|
|
)
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
def main():
|
|
args = parse_args()
|
|
|
|
print(f"Buscando archivos CBR/CBZ en: {args.ruta}\n")
|
|
comic_files = find_comic_files(args.ruta)
|
|
|
|
if not comic_files:
|
|
print("No se encontraron archivos .cbr o .cbz")
|
|
return
|
|
|
|
# ------------------------------------------------------------
|
|
# LISTAR
|
|
# ------------------------------------------------------------
|
|
if args.listar:
|
|
print("Archivos encontrados:")
|
|
for f in comic_files:
|
|
print(f" - {f}")
|
|
print()
|
|
|
|
# ------------------------------------------------------------
|
|
# VALIDAR
|
|
# ------------------------------------------------------------
|
|
if args.validar:
|
|
print("Validando archivos...\n")
|
|
for f in comic_files:
|
|
result = validate_comic(f)
|
|
print(result)
|
|
|
|
if result.errors:
|
|
print(" Errores:")
|
|
for e in result.errors:
|
|
print(f" - {e}")
|
|
|
|
if result.warnings:
|
|
print(" Avisos:")
|
|
for w in result.warnings:
|
|
print(f" - {w}")
|
|
|
|
print()
|
|
|
|
# ------------------------------------------------------------
|
|
# LIMPIAR
|
|
# ------------------------------------------------------------
|
|
if args.limpiar:
|
|
print("Limpiando archivos...\n")
|
|
for f in comic_files:
|
|
result = clean_comic(f)
|
|
print(result)
|
|
print()
|
|
|
|
# ------------------------------------------------------------
|
|
# CONVERTIR
|
|
# ------------------------------------------------------------
|
|
if args.convertir:
|
|
print(f"Convirtiendo archivos al formato {args.formato}...\n")
|
|
for f in comic_files:
|
|
info = convert_comic(f, args.formato)
|
|
if info["needs_conversion"]:
|
|
print(f"Convertido: {f} → {info['target_path']}")
|
|
else:
|
|
print(f"Sin cambios: {f}")
|
|
print()
|
|
|
|
# ------------------------------------------------------------
|
|
# ESTANDARIZAR
|
|
# ------------------------------------------------------------
|
|
if args.estandarizar:
|
|
print("Estandarizando archivos...\n")
|
|
for f in comic_files:
|
|
result = standardize_comic(f, args.formato)
|
|
print(result)
|
|
print()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|