batch_process_custom
Apply custom Lua scripts to multiple Aseprite files for automated pixel art processing and manipulation in batch operations.
Instructions
Apply a custom Lua script to multiple Aseprite files.
Args: input_dir: Directory containing input files lua_script: Lua script to execute on each file output_dir: Optional output directory for modified files file_pattern: File pattern to match (default: "*.aseprite")
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| input_dir | Yes | ||
| lua_script | Yes | ||
| output_dir | No | ||
| file_pattern | No | *.aseprite |
Implementation Reference
- aseprite_mcp/tools/batch.py:428-519 (handler)The tool handler `batch_process_custom` implementation.
async def batch_process_custom( input_dir: str, lua_script: str, output_dir: Optional[str] = None, file_pattern: str = "*.aseprite" ) -> str: """Apply a custom Lua script to multiple Aseprite files. Args: input_dir: Directory containing input files lua_script: Lua script to execute on each file output_dir: Optional output directory for modified files file_pattern: File pattern to match (default: "*.aseprite") """ try: # Validate inputs input_path = validate_file_path(input_dir, must_exist=True) if not input_path.is_dir(): raise ValidationError("input_dir", str(input_path), "Must be a directory") if output_dir: output_path = validate_file_path(output_dir, must_exist=True) if not output_path.is_dir(): raise ValidationError("output_dir", str(output_path), "Must be a directory") else: output_path = None # Find all matching files files = list(input_path.glob(file_pattern)) if not files: return f"No files matching '{file_pattern}' found in {input_path}" # Process each file results = [] errors = [] for file in files: try: # Build complete script builder = LuaBuilder() builder.add_comment(f"Processing {file.name}") builder.add_line() # User script (wrapped in safety checks) builder.add_line("-- User script begins --") builder.add_line(lua_script) builder.add_line("-- User script ends --") builder.add_line() # Save to output if specified if output_path: output_file = output_path / file.name builder.save_sprite(str(output_file)) else: builder.save_sprite() # Execute cmd = get_command() success, output = cmd.execute_lua_script(builder.build(), str(file)) results.append(f"Processed: {file.name}") except Exception as e: errors.append(f"Failed {file.name}: {e}") if not get_config().batch.continue_on_error: break # Summary summary = f"Batch custom processing completed:\n" summary += f"- Processed: {len(results)} files\n" summary += f"- Failed: {len(errors)} files\n" if output_path: summary += f"- Output directory: {output_path}\n" if results: summary += "\nSuccessful:\n" + "\n".join(results[:10]) if len(results) > 10: summary += f"\n... and {len(results) - 10} more" if errors: summary += "\n\nErrors:\n" + "\n".join(errors[:5]) if len(errors) > 5: summary += f"\n... and {len(errors) - 5} more" return summary except (ValidationError, AsepriteError) as e: return f"Failed to batch process: {e}" except Exception as e: return f"Unexpected error: {e}"