BitKinex scripting is a powerful way to extend the built-in functionality. The current version supports the Python programming language (please see the online tutorial for details on how to write Python scripts). Your scripts can perform additinal tasks during the standard request processing and/or to filter the files being handled by your request. BitKinex passes all request-relevant information on to the script allowing you to define rules based on the file specific attributes. Furthermore, the standard output (see the Python "print" command) is redirected to the request log file. You can use the Request Info Window to view the script output (if any) as well as any error messages produced by the Python interpreter.
Processing phases
The processing of a single request can be devided into several processing phases. Your script may contain methods which will be called by BitKinex during the respective phase:
| Phase Name | Method Name | Description |
|---|---|---|
| SCRIPT_PREPROCESS | OnPreprocess() | The method is called only once during the request startup. |
| SCRIPT_PREPROCESS_ELEM | OnPreprocessElem() | The method is called before a single file or directory is being processed. |
| SCRIPT_POSTROCESS_ELEM | OnPostprocessElem() | The method is called after each file or directory has been processed. |
| SCRIPT_POSTROCESS | OnPostprocess() | The method is called once after the request processing has been completed. |
BitKinex namespace
All bitkinex-related variables and methods are exposed via the "bitkinex" namespace. BitKinex dynamically updates the objects of this namespace with respect to the current processing phase and/or file being processed.
bitkinex.isValid
This boolean variable is defined only in the SCRIPT_PREPROCESS phase. Its value indicates whether or not a particular file/directory will be processed. Your script can use (set/clear) this varible to implement an advanced request filter.
Example:
In the following example only files larger than one kilobyte will be processed:
def OnPreprocessElem():
import bitkinex
if not bitkinex.file.isDir:
bitkinex.isValid = (bitkinex.file.size > 1024)
return
bitkinex.dir, bitkinex.dirDst
These variables are defined only in the SCRIPT_PREPROCESS phase. They contain the source and the destination (if applicable) paths of the directory being processed.
bitkinex.file
This object is defined only in the SCRIPT_PREPROCESS phase. The "file" instance stores attributes of the file being processed (name, time, size, isDir).
bitkinex.fileName, bitkinex.fileNameDst
These variables are defined only in the SCRIPT_PREPROCESS phase. They contain the source and the destination (if applicable) names of the file being processed. When copying files, your script can change the "bitkinex.fileNameDst" variable ("bitkinex.fileName" is always read only).
bitkinex.ds, bitkinex.dsDst
These objects represent the source and destination data sources your request is operating on (the "dsDst" instance exists only if the request operates on two data sources - e.g. "copy" requests). The "ds" and "dsDst" instances are both of the same type. The data source class implements the following methods:
| store(dsSrc, pathSrc, pathDst) | copy the file(s) identified by the source path (pathSrc) from the source data source (dsSrc) to the destination location (pathDst) |
| remove(path) | delete the file(s) identified by the path |
| rename(pathSrc, pathDst) | rename/move the file identified by the source path to the destination path |
| mkdir(path) | create a new directory |
| list=readdir(dirName) | retrieve the content of a directory identified by dirName; the method returns a list of file objects (each file object has the following members: "name", "time", "size", "isDir") |
You can use these methods to perform additional tasks during the standard request processing.