Everything is a plugin. Those bundled with the web interface are in /mod/webif/lib/auto/plugin/ and others are in /mod/webif/plugin/ ---------------------------------------------------------------------- Priorities (* - additional package) ---------- Module Scan De-queue ------ ---- -------- *newk 1000 - expire 900 - dedup 800 - *sweeper 700 - *flatten 750 - *flatview 650 - decrypt 600 900 shrink 400 800 mpg 300 300 mp3 300 300 *detectads 300 200 Notes: * Anything that moves files around runs first. (used to always prefer decryption first to improve the changes that the file was DLNA indexed but DLNA helper removes that constraint) * Decrypt > Shrink so arbookmarks can run post-decrypt and still have the EIT tables present. ---------------------------------------------------------------------- Scan phase hooks ---------------- The scan process looks for 'auto.hook' Plugins register themselves with: ::auto::register [priority] If not specified, priority defaults to 500. The framework will call the following callbacks (if defined within the module): ::module::init This function will be called before any module runs and can be used if the module requires any initialisation. ::module::cleanup Called once all modules have completed their work. ::module::run This function is called when the module should do its work against all recordings. ::module::rundir The module should do its work against the specific provided directory. The following global variables are available for modules to use: ::auto::settings - instance of the system settings class. ::auto::root - root directory of recordings. ::auto::dustbin - path to the dustbin directory. The following functions are available for modules to use: ::auto::log [level] Log a message to the log file with appropriate prefix. The level argument should be a number between 0 and 2 inclusive. If level is not provided then it defaults to 1. Level 2 is reserved for debugging messages. ::auto::dsc [required bytes] Checks that there is enough available system disk space (1GiB + 3 * ) and aborts processing otherwise. If [required bytes] is not provided then it defaults to zero and the function just checks fro 1GiB of free disk space. ::auto::inuse Check if a recording is in use (with retries). ::auto::autoflagscan Starting at the directory indicated by , all directories are recursively scanned looking for those containing a file named ".auto" or ".autor". This function automatically takes care of avoiding the dustbin, filesystem loops, disabling recursion when a special folder is found, etc. It is used by built-in modules such as "decrypt" The callback will be called once for each flagged directory with the directory name passed as the sole argument. If the callback returns the string "STOP" then the directory scan stops. ::auto::flagscan Starting at the directory indicated by , all directories are recursively scanned looking for those containing a file named ".". The callback will be called once for each flagged directory with the directory name passed as the sole argument. If the callback returns the string "STOP" then the directory scan stops. ::auto::direntries Scan the named directory and call the callback for each loadable ts file found. The ts object is passed to the callback function. If the callback returns the string "STOP" then the directory scan stops. ::auto::recalcdir Indicate that the unwatched recording count for the given directory should be updated at the end of the run. ---------------------------------------------------------------------- De-queue hooks -------------- ::auto::register [priority] If not specified, priority defaults to 500. The framework will call the following callbacks (if defined within the module): ::module::dequeue De-queue the provided queue item and associated ts file object. The module must return a list containing [message] Possible results: OK - The queue item was successfully processed. FAILED - Processing failed (and should not be re-attempted). DEFER - Processing should be tried again later. Examples: return "OK" return {"OK" "Processing was successful."} return [list "OK" "Processing was successful."] return [list "DEFER" "File not yet decrypted."] return [list "FAILED" "File is already decrypted."]