Supported Languages
IPED supports two scripting languages:- JavaScript - Using the built-in Java scripting engine (Nashorn/GraalVM)
- Python - Using Jep (Java Embedded Python) to run Python code
On Linux, you must install Jep (
pip install jep) and include jep.so in your LD_LIBRARY_PATH to use Python scripts.Installing Scripts
Scripts must be registered inTaskInstaller.xml to be executed during processing:
TaskInstaller.xml
iped-app/resources/scripts/tasks/(built-in scripts){case}/scripts/tasks/(case-specific scripts)
JavaScript Script Structure
Basic Template
Every JavaScript script must implement at leastgetName() and process() methods:
ExampleScriptTask.js
Real Example: Ignore Files by Path
This script ignores system files and folders to reduce processing time:IgnoreFilesByPathTask.js
Real Example: Refine Categories
This script adjusts file categories based on properties:RefineCategoryTask.js
Python Script Structure
Basic Template
Python scripts use a class-based structure. The class name must match the filename without.py:
PythonScriptTask.py
Real Example: NSFW Detection
This script uses Keras and TensorFlow to detect nudity in images:NSFWNudityDetectTask.py
Item API Reference
Getters
Setters
Creating Bookmarks
You can create bookmarks in thefinish() method using the ipedCase and searcher objects:
Shared Objects
Scripts can share data between threads using thecaseData object:
Performance Tips
1
Batch Processing
Process multiple items together for ML models:
2
Cache Results
Use hash-based caching to avoid reprocessing:
3
Avoid Full Text Search
Searching text in all items is very slow:
Debugging
Logging
Use thelogger object for debugging:
Access Thread Info
Next Steps
Custom Tasks
Create Java-based processing tasks
Web API
Access cases remotely via REST API