进阶 docs.stashapp.cc 2026-10-20 02:59:21 · 20 阅读

第26章 Stash嵌入式插件:基于JavaScript的脚本执行与API指南

嵌入式插件任务¶ 嵌入式插件任务通过脚本系统在 stash 进程内执行。

支持的脚本语言¶ Stash 目前通过 goja 支持 Javascript 嵌入式插件任务。

Javascript 插件¶

插件输入¶ 输入通过全局变量 input 提供给 Javascript 插件任务,它是一个对象,其结构基于 Plugins 页面 Plugin input 部分所述的结构。

⚠️ 注意:在大多数嵌入式插件中,通常不需要 server_connection 字段。

插件输出¶ Javascript 插件任务的输出取自脚本的求值结果。输出应符合 Plugins 页面 Plugin output 部分所述的结构。

有多种方式可以返回插件输出:

示例 #1¶ (function() { return { Output: "ok" }; })();

示例 #2¶ function main() { return { Output: "ok" }; }

main();

示例 #3¶ var output = { Output: "ok" };

output;

日志¶ 使用 Javascript 插件记录日志的方法见下文 Javascript API 部分。

插件配置文件格式¶

exec¶ 对于嵌入式插件,exec 字段是一个列表,第一个元素为要执行的 Javascript 文件路径。该路径应相对于插件配置文件所在目录。

interface¶ 对于嵌入式插件,interface 字段必须设置为以下值之一: * js

Javascript API¶

日志¶ Stash 为 Javascript 插件提供以下日志 API:

Method Description

log.Trace() 以 trace 级别记录日志。

log.Debug() 以 debug 级别记录日志。

log.Info() 以 info 级别记录日志。

log.Warn() 以 warn 级别记录日志。

log.Error() 以 error 级别记录日志。

log.Progress(<0 到 1 之间的浮点数>) 设置插件任务的进度,取值为浮点数,0 表示 0%,1 表示 100%。

GQL¶ Stash 提供以下 API,用于通过 graphql 接口与 stash 通信:

Method Description

gql.Do(, ) 在 stash 服务器上执行 graphql query/mutation。返回值与 graphql 查询的返回方式相同。

示例¶ // 创建一个 tag var mutation = "\ mutation tagCreate($input: TagCreateInput!) {\ tagCreate(input: $input) {\ id\ }\ }";

var variables = { input: { 'name': tagName } };

result = gql.Do(mutation, variables); log.Info("tag id = " + result.tagCreate.id);

工具函数¶ Stash 提供以下工具函数 API:

Method Description

util.Sleep(<毫秒数>) 将当前线程挂起指定时长。

评论 (0)