# 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()