diff --git a/docs.json b/docs.json index bddb1a6..15a3cab 100644 --- a/docs.json +++ b/docs.json @@ -20,6 +20,61 @@ { "tab": "用户手册", "versions": [ + { + "version": "v1.4.0", + "groups": [ + { + "group": "开始", + "icon": "book-open", + "pages": [ + "zh/manual/v1.4.0/index/intro", + "zh/manual/v1.4.0/index/beforestart" + ] + }, + { + "group": "安装", + "icon": "download", + "pages": [ + "zh/manual/v1.4.0/installation/install", + "zh/manual/v1.4.0/installation/driver" + ] + }, + { + "group": "配置", + "icon": "sliders", + "pages": [ + "zh/manual/v1.4.0/configuration/start", + "zh/manual/v1.4.0/configuration/ui", + "zh/manual/v1.4.0/configuration/file" + ] + }, + { + "group": "设置", + "icon": "tools", + "pages": [ + "zh/manual/v1.4.0/global-settings/start", + "zh/manual/v1.4.0/global-settings/appearance" + ] + }, + { + "group": "功能", + "icon": "bolt", + "pages": [ + "zh/manual/v1.4.0/features/core", + "zh/manual/v1.4.0/features/timer" + ] + }, + { + "group": "FAQ", + "icon": "circle-question", + "pages": [ + "zh/manual/v1.4.0/faq/troubleshooting", + "zh/manual/v1.4.0/faq/faq", + "zh/manual/v1.4.0/faq/contact" + ] + } + ] + }, { "version": "v1.3.0", "groups": [ @@ -70,9 +125,39 @@ ] }, { - "tab": "更新日志", - "pages": [ - "zh/changelog/overview" + "tab": "AutoScript", + "groups": [ + { + "group": "概述", + "icon": "book-open", + "pages": [ + "zh/autoscript/index" + ] + }, + { + "group": "语法指引", + "icon": "code", + "pages": [ + "zh/autoscript/syntax", + "zh/autoscript/functions", + "zh/autoscript/variables" + ] + }, + { + "group": "工具使用", + "icon": "pencil", + "pages": [ + "zh/autoscript/editor", + "zh/autoscript/orchestrator" + ] + }, + { + "group": "集成", + "icon": "link", + "pages": [ + "zh/autoscript/integration" + ] + } ] } ] diff --git a/zh/autoscript/editor.mdx b/zh/autoscript/editor.mdx new file mode 100644 index 0000000..551f01a --- /dev/null +++ b/zh/autoscript/editor.mdx @@ -0,0 +1,104 @@ +--- +title: "代码编辑器" +description: "AutoScript 代码编辑器使用指南 - 语法高亮、代码模板与调试运行" +--- + +AutoScript 代码编辑器提供完整的 Lua 脚本编写体验,包括语法高亮、代码模板插入和模拟调试功能。 + +## 打开编辑器 + +在定时任务管理窗口中添加或编辑任务时,点击 [**AutoScript**] 区域的编辑按钮即可打开代码编辑器。 + +{/* TODO: 添加代码编辑器界面截图 */} +![AutoScript 代码编辑器](/images/v1.4.0/autoscript-editor.png) + +## 语法高亮 + +编辑器使用配色方案区分不同类型的代码元素,帮助你快速识别脚本结构: + +| 颜色 | 元素类型 | 示例 | +| --- | --- | --- | +| 蓝色加粗 | 关键字 | `if` `elseif` `else` `then` `end` `and` `or` `not` | +| 青色 | 布尔字面量 | `true` `false` | +| 紫色 | 运算符 | `==` `~=` `>` `<` `>=` `<=` `+` `-` | +| 黄色 | 工具函数 | `time()` `date()` `datenow()` `timenow()` `dateadd()` `timeadd()` | +| 浅蓝 | 目标变量 | `USERNAME` `USER_ENABLE` `RESERVE_DATE` `RESERVE_BEGIN_TIME` `RESERVE_END_TIME` | +| 橙色 | 字符串 | `"2025-10-30"` `"alice"` | +| 绿色 | 数字 | `1` `60` `2025` | +| 绿色斜体 | 注释 | `-- 这是一条注释` | + +## 代码模板 + +编辑器底部工具栏按类别提供了代码模板按钮,点击即可在光标位置插入相应代码: + +### 基本语法 + +| 按钮 | 插入内容 | +| --- | --- | +| `if` | `if then` + `end` 代码块 | +| `elseif` | `elseif then` 语句 | +| `else` | `else` 语句 | +| `end` | `end` 关键字 | +| `pass` | 空操作占位符 | + +### 运算符 + +提供算术运算符(`+` `-`)、比较运算符(`==` `~=` `>` `<` `>=` `<=`)和逻辑运算符(`and` `or`)的快速插入。 + +### 字面量 + +提供 `true` / `false` 和日期/时间/字符串/数字/注释的模板代码。 + +### 变量 + +自动列出所有可操作的目标变量。点击按钮即可插入变量名,无需手动输入。 + +### 工具函数 + +提供 `datenow()`、`timenow()`、`dateadd()`、`timeadd()` 等函数的模板插入,并附带参数提示。 + +## 编辑功能 + +- **Tab 转空格**:按下 Tab 键自动插入 4 个空格 +- **字体缩放**:通过工具栏按钮放大或缩小编辑器字体 +- **复制到剪贴板**:将当前脚本内容复制到系统剪贴板 + +## 调试运行 + +编辑器的右侧面板提供模拟数据调试功能: + + + + 在右侧面板中为每个变量设置测试值。各类型变量使用对应的输入控件: + - 字符串:文本输入框 + - 布尔值:下拉选择框 + - 日期:日期选择器 + - 时间:时间选择器 + + + 点击 [**调试运行**] 按钮,脚本将在模拟数据上执行。 + + + 执行完成后,弹出结果对话框,对比显示每个变量的修改前值和修改后值。 + + {/* + TODO: 添加调试运行结果截图 + ![AutoScript 调试运行结果](/images/v1.4.0/autoscript-debug-result.png) + */} + + + + + 在将脚本配置到定时任务之前,建议先使用调试运行功能验证脚本逻辑是否正确, + 特别是验证变量的最终值是否符合预期。 + + +## 从编排器导入 + +如果你通过可视化编排器构建了脚本逻辑,可以点击 [**编排**] 按钮打开编排器, +编排器生成的代码将插入到编辑器光标所在位置。 + + + 你可以在编排器中构建基本逻辑框架,然后在编辑器中手动调整细节, + 两种方式可以灵活结合使用。 + diff --git a/zh/autoscript/functions.mdx b/zh/autoscript/functions.mdx new file mode 100644 index 0000000..937d5c2 --- /dev/null +++ b/zh/autoscript/functions.mdx @@ -0,0 +1,235 @@ +--- +title: "函数参考" +description: "AutoScript 内置工具函数完整参考 - 日期与时间处理" +--- + +AutoScript 提供了一组内置的日期和时间工具函数,用于在脚本中处理动态时间计算。 + +## 日期函数 + +### `date(y, m, d)` + +创建一个指定日历日期的值。 + +**参数:** + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `y` | integer | 年份,如 `2025` | +| `m` | integer | 月份,如 `10` | +| `d` | integer | 日期,如 `30` | + +**返回值:** 日期值(可赋值给日期类型变量) + +**示例:** + +```lua +-- 设置为 2025 年 10 月 30 日 +RESERVE_DATE = date(2025, 10, 30) +``` + +--- + +### `datenow()` + +获取当前日期(当天的 00:00:00)。 + +**返回值:** 当前日期值 + +**示例:** + +```lua +-- 将预约日期设为今天 +RESERVE_DATE = datenow() +``` + +--- + +### `dateadd(date_val, n)` + +在指定日期上增加或减少天数。 + +**参数:** + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `date_val` | date | 基准日期值 | +| `n` | integer | 增加的天数(负数表示减少) | + +**返回值:** 计算后的日期值 + +**示例:** + +```lua +-- 预约明天 +RESERVE_DATE = dateadd(datenow(), 1) + +-- 预约三天前 +RESERVE_DATE = dateadd(datenow(), -3) + +-- 在已有日期基础上计算 +RESERVE_DATE = dateadd(RESERVE_DATE, 7) -- 延后一周 +``` + +--- + +### `strtodate(iso_str)` + +将 ISO 格式日期字符串转换为日期值。 + +**参数:** + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `iso_str` | string | 日期字符串,格式 `"YYYY-MM-DD"` | + +**返回值:** 日期值 + +**示例:** + +```lua +RESERVE_DATE = strtodate("2025-12-31") +``` + +--- + +### `datetostr(ts)` + +将日期值转换为 ISO 格式字符串。 + +**参数:** + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `ts` | date | 日期值 | + +**返回值:** 格式为 `"YYYY-MM-DD"` 的字符串 + + + `datetostr()` 通常用于调试或日志输出。在实际操作中直接使用日期值即可。 + + +--- + +## 时间函数 + +### `time(h, m)` + +创建一个指定时间值。 + +**参数:** + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `h` | integer | 小时(0-23) | +| `m` | integer | 分钟(0-59) | + +**返回值:** 时间值(可赋值给时间类型变量) + +**示例:** + +```lua +-- 设置开始时间为 09:30 +RESERVE_BEGIN_TIME = time(9, 30) + +-- 设置结束时间为 21:00 +RESERVE_END_TIME = time(21, 0) +``` + +--- + +### `timenow()` + +获取当前时间(以分钟表示的当天已过时间)。 + +**返回值:** 当前时间值(分钟数) + +**示例:** + +```lua +-- 将开始时间设为当前时间后 30 分钟 +RESERVE_BEGIN_TIME = timeadd(timenow(), 30) +``` + +--- + +### `timeadd(time_val, n)` + +在指定时间上增加或减少分钟数。 + +**参数:** + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `time_val` | time | 基准时间值 | +| `n` | integer | 增加的分钟数(负数表示减少) | + +**返回值:** 计算后的时间值(自动处理跨天回绕) + +**示例:** + +```lua +-- 开始时间推迟 30 分钟 +RESERVE_BEGIN_TIME = timeadd(RESERVE_BEGIN_TIME, 30) + +-- 结束时间提前 1 小时 +RESERVE_END_TIME = timeadd(RESERVE_END_TIME, -60) + +-- 在现有时间基础上叠加 +RESERVE_BEGIN_TIME = timeadd(timenow(), 120) -- 当前时间 + 2 小时 +``` + +--- + +### `strtotime(hm_str)` + +将时间字符串转换为时间值。 + +**参数:** + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `hm_str` | string | 时间字符串,格式 `"HH:MM"` | + +**返回值:** 时间值 + +**示例:** + +```lua +RESERVE_BEGIN_TIME = strtotime("08:00") +``` + +--- + +### `timetostr(m)` + +将时间值转换为字符串。 + +**参数:** + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `m` | time | 时间值(分钟数) | + +**返回值:** 格式为 `"HH:MM"` 的字符串 + + + `timetostr()` 通常用于调试或日志输出。在实际操作中直接使用时间值即可。 + + +--- + +## 函数速查表 + +| 函数 | 说明 | 输入 | 输出 | +| --- | --- | --- | --- | +| `date(y, m, d)` | 创建日期 | `(int, int, int)` | date | +| `datenow()` | 当前日期 | 无 | date | +| `dateadd(d, n)` | 日期偏移 | `(date, int)` | date | +| `strtodate(s)` | 字符串转日期 | `(string)` | date | +| `datetostr(d)` | 日期转字符串 | `(date)` | string | +| `time(h, m)` | 创建时间 | `(int, int)` | time | +| `timenow()` | 当前时间 | 无 | time | +| `timeadd(t, n)` | 时间偏移 | `(time, int)` | time | +| `strtotime(s)` | 字符串转时间 | `(string)` | time | +| `timetostr(t)` | 时间转字符串 | `(time)` | string | diff --git a/zh/autoscript/index.mdx b/zh/autoscript/index.mdx new file mode 100644 index 0000000..cb96972 --- /dev/null +++ b/zh/autoscript/index.mdx @@ -0,0 +1,83 @@ +--- +title: "AutoScript 概述" +description: "AutoScript 自动化脚本引擎 - 在定时任务执行前动态调整预约参数" +--- + +AutoScript 是基于 Lua 语言的自动化脚本引擎,用于在定时任务执行前对预约参数进行动态调整。 + +## 什么是 AutoScript + +在之前的版本中,定时任务只能按照固定的预约参数执行。如果需要在不同日期预约不同座位,或根据时间动态调整预约时长,只能手动修改配置。 + +AutoScript 解决了这一问题。它允许你编写简单的脚本,在定时任务执行前自动修改用户变量(如预约日期、开始时间、结束时间等),实现灵活的自动化预约策略。 + +## 核心概念 + +AutoScript 的核心工作流程如下: + +1. **输入数据**:定时任务触发时,从用户配置中读取当前用户的预约参数 +2. **执行脚本**:运行你编写的 AutoScript 脚本,动态修改变量值 +3. **输出数据**:将脚本修改后的参数传递给自动化引擎执行 + + + AutoScript 脚本修改的参数仅影响当次执行,不会回写到用户配置文件。下次任务运行时将重新从配置文件读取原始值。 + + +## 典型应用场景 + +- **每日动态日期**:始终预约"明天"的座位,无需每天手动修改日期 +- **条件切换**:根据是否启用标志决定不同的预约策略 +- **时间偏移**:在特定时间段自动调整预约开始时间 +- **批量处理**:配合用户分组,为不同用户设置不同的预约参数 + +## 快速示例 + +以下脚本将预约日期设为明天,开始时间设为上午 9:00: + +```lua +-- 设置预约日期为明天 +RESERVE_DATE = dateadd(datenow(), 1) + +-- 设置开始时间为 09:00 +RESERVE_BEGIN_TIME = time(9, 0) +``` + +## 两种使用方式 + +AutoLibrary 提供两种方式编写 AutoScript: + +| 方式 | 说明 | 适合人群 | +| --- | --- | --- | +| [**代码编辑器**](/zh/autoscript/editor) | 直接编写 Lua 脚本,提供语法高亮和调试功能 | 熟悉脚本编写的用户 | +| [**可视化编排器**](/zh/autoscript/orchestrator) | 通过图形界面拖拽组合条件和操作,自动生成脚本 | 不熟悉编程的用户 | + + + + 了解 AutoScript 的 Lua 语法基础、运算符和流程控制。 + + + 查看所有可用的日期、时间工具函数及其用法。 + + + 了解可操作的目标变量、数据类型与约束规则。 + + + 了解如何将 AutoScript 集成到定时任务中。 + + diff --git a/zh/autoscript/integration.mdx b/zh/autoscript/integration.mdx new file mode 100644 index 0000000..1330870 --- /dev/null +++ b/zh/autoscript/integration.mdx @@ -0,0 +1,137 @@ +--- +title: "集成指南" +description: "AutoScript 与定时任务集成 - 执行流程、作用域与最佳实践" +--- + +了解如何将 AutoScript 脚本集成到定时任务中,以及脚本的执行时机、作用范围和注意事项。 + +## 执行流程 + +当定时任务触发时,AutoLibrary 按以下顺序执行: + +1. **读取配置**:从用户配置文件中读取所有用户分组的预约参数 +2. **遍历用户组**:对每个启用的用户组,遍历其中的每个启用用户 +3. **执行 AutoScript**:对每个用户运行 AutoScript 脚本,动态调整变量值 +4. **执行定时任务**:使用调整后的参数运行预约/签到/续约操作 + +```text +定时任务触发 + │ + ├─ 用户组 A + │ ├─ 用户 1 → 执行 AutoScript → 预约/签到/续约 + │ └─ 用户 2 → 执行 AutoScript → 预约/签到/续约 + │ + └─ 用户组 B + ├─ 用户 3 → 执行 AutoScript → 预约/签到/续约 + └─ 用户 4 → 执行 AutoScript → 预约/签到/续约 +``` + +## 作用域 + +AutoScript 脚本的作用域限定为单个用户的单次执行: + +- **每次执行独立**:脚本对每个用户独立运行,不同用户之间互不影响 +- **不修改配置文件**:脚本对变量的修改仅存在于内存中,不会回写到 `user.json` +- **下次执行重置**:下次定时任务触发时,从配置文件重新读取原始值 + +## 配置方式 + +### 在定时任务中指定脚本 + + + + 点击主界面底部的 [] 按钮。 + + + 点击 [**添加任务**] 创建新任务,或右键现有任务选择 [**编辑**]。 + + + 在编辑对话框中找到 [**AutoScript**] 区域,点击 [**编辑**] 按钮打开内置代码编辑器编写脚本。 + 脚本编写完成后直接内嵌保存至定时任务配置,无需管理外部文件。 + + + 点击 [**确认**] 保存任务配置。 + + + +{/* TODO: 添加定时任务 AutoScript 配置截图 */} +![定时任务 AutoScript 配置](/images/v1.4.0/timer-autoscript-config.png) + +## 典型示例 + +### 示例 1:始终预约明天的座位 + +```lua +-- 将预约日期设为明天 +RESERVE_DATE = dateadd(datenow(), 1) + +-- 设置固定时间段 +RESERVE_BEGIN_TIME = time(9, 0) +RESERVE_END_TIME = time(21, 0) +``` + +### 示例 2:根据星期调整预约策略 + +配合定时任务的重复执行功能,可以为不同日子设置不同的预约参数。如果你需要基于实际星期进行判断,可以在脚本中根据日期特性调整: + +```lua +-- 始终预约明天 +RESERVE_DATE = dateadd(datenow(), 1) + +-- 默认时间段 +RESERVE_BEGIN_TIME = time(9, 0) +RESERVE_END_TIME = time(21, 0) +``` + +### 示例 3:条件性跳过用户 + +```lua +-- 如果当前时间已经超过上午 10 点,跳过该用户 +if timenow() > time(10, 0) then + USER_ENABLE = false +end +``` + +### 示例 4:根据用户名差异化配置 + +```lua +if USERNAME == "20250101001" then + -- 用户 A 的预约策略 + RESERVE_BEGIN_TIME = time(8, 0) + RESERVE_END_TIME = time(20, 0) +end +``` + +## 最佳实践 + +### 先调试,后配置 + +在将脚本关联到定时任务之前,使用编辑器的调试运行功能在模拟数据上验证脚本逻辑。 + +### 保持脚本简洁 + +每个脚本只关注一个明确的目标,避免在一个脚本中处理过多复杂逻辑。如果需要针对不同用户组执行不同逻辑,建议为每个用户组创建独立的定时任务。 + +### 注意沙箱限制 + +AutoScript 运行在受限的沙箱环境中,不能访问文件系统或执行系统命令。如果脚本需要外部数据(如个人日程表),请使用条件判断和工具函数实现。 + +### 验证类型兼容性 + +确保所有赋值操作的类型与目标变量声明的类型一致。类型错误会导致脚本执行失败并跳过该用户。 + +### 处理边缘情况 + +编写脚本时考虑边缘情况: + +```lua +-- 确保开始时间不早于 7:30 +if RESERVE_BEGIN_TIME < time(7, 30) then + RESERVE_BEGIN_TIME = time(7, 30) +end + +-- 确保结束时间不晚于 22:30 +if RESERVE_END_TIME > time(22, 30) then + RESERVE_END_TIME = time(22, 30) +end +``` diff --git a/zh/autoscript/orchestrator.mdx b/zh/autoscript/orchestrator.mdx new file mode 100644 index 0000000..01d17b1 --- /dev/null +++ b/zh/autoscript/orchestrator.mdx @@ -0,0 +1,105 @@ +--- +title: "可视化编排器" +description: "AutoScript 可视化编排器 - 通过图形界面构建条件判断与变量操作,无需手写代码" +--- + +可视化编排器让你通过图形界面构建 AutoScript 脚本,无需了解 Lua 语法。编排器会根据你的配置自动生成代码。 + +{/* TODO: 添加可视化编排器界面截图 */} +![AutoScript 可视化编排器](/images/v1.4.0/autoscript-orchestrator.png) + +## 编排器结构 + +编排器由多个判断块(Conditional Block)堆叠组成,从上到下依次执行。每个判断块包含条件判断和操作步骤两部分。 + +### 判断块类型 + +每个判断块可以设置为以下三种类型之一: + +| 类型 | 触发条件 | 说明 | +| --- | --- | --- | +| **IF** | 第一个判断块 | 始终为 IF,不可更改 | +| **ELSE IF** | 上方条件均不满足 | 添加额外的条件分支 | +| **ELSE** | 上方所有条件均不满足 | 默认分支,不需要设置条件 | + + + 在一个 IF 后可以添加多个 ELSE IF,但只能有一个 ELSE 块。 + 添加 ELSE 块后,不能再添加 ELSE IF 或 ELSE 块。 + + +## 添加判断块 + +点击 [**+ 添加判断块**] 按钮添加新的判断块。新块的类型默认为 ELSE IF。 + +## 配置条件 + +每个判断块可包含一个或多个条件行,多个条件之间用 `and` 或 `or` 连接。 + +### 条件行配置项 + +| 配置项 | 说明 | +| --- | --- | +| 逻辑运算符 | 与上一条件行的关系:`and`(且)或 `or`(或)。第一行不显示此选项 | +| 左变量 | 选择要比较的目标变量,或直接使用 `true`/`false` 布尔值 | +| 比较运算符 | `==` `~=` `>` `<` `>=` `<=` | +| 比较方式 | 与固定值比较 / 与另一个变量比较 | +| 右值 | 根据变量类型提供对应的输入控件 | + +### 特殊规则 + +- **布尔变量**:当左侧选择布尔类型变量(如 `USER_ENABLE`)时,比较运算符和右值自动隐藏, + 条件直接判断该布尔值是否为真 +- 可以点击 [**+**] 按钮添加更多条件行,或点击 [**x**] 按钮删除某个条件行 + +## 配置操作步骤 + +每个判断块内可包含一个或多个操作步骤(Action Step),当该块的条件满足时,所有操作步骤按顺序执行。 + +### 操作类型 + +| 操作 | 说明 | 示例 | +| --- | --- | --- | +| **set** | 将变量设置为指定值 | `RESERVE_DATE = dateadd(datenow(), 1)` | +| **add** | 在变量当前值上增加 | `RESERVE_BEGIN_TIME = RESERVE_BEGIN_TIME + 30` | +| **sub** | 在变量当前值上减去 | `RESERVE_END_TIME = RESERVE_END_TIME - 60` | + +### 值来源 + +| 来源 | 说明 | +| --- | --- | +| 固定值 | 手动输入或选择具体值 | +| 变量 | 从其他目标变量读取值 | + +### 日期和时间特殊处理 + +对于日期和时间类型变量,输入控件提供以下便捷选项: + +| 变量类型 | 便捷选项 | +| --- | --- | +| Date | 今天、明天、后天、指定日期(日历选择器) | +| Time | 当前时间、指定时间(时间选择器) | + + + 当选择相对日期选项(如"明天")时,编排器会生成相应的工具函数调用(如 `dateadd(datenow(), 1)`), + 确保脚本在运行时动态计算正确的日期。 + + +## 生成代码 + +配置完成后,点击 [**确认**] 按钮,编排器将把所有判断块转换为 Lua 代码并插入到代码编辑器中。 + +例如,以下编排配置: + +- IF `USER_ENABLE` → set `RESERVE_DATE` 为明天,set `RESERVE_BEGIN_TIME` 为 09:00 +- ELSE → set `USER_ENABLE` 为 false + +将生成: + +```lua +if USER_ENABLE then + RESERVE_DATE = dateadd(datenow(), 1) + RESERVE_BEGIN_TIME = time(9, 0) +else + USER_ENABLE = false +end +``` diff --git a/zh/autoscript/syntax.mdx b/zh/autoscript/syntax.mdx new file mode 100644 index 0000000..9a7fc61 --- /dev/null +++ b/zh/autoscript/syntax.mdx @@ -0,0 +1,149 @@ +--- +title: "语法指引" +description: "AutoScript Lua 语法指南 - 变量、运算符、条件判断与注释" +--- + +AutoScript 使用 Lua 5.4 作为脚本语言。本页介绍编写 AutoScript 所需的 Lua 基础语法。 + +## 注释 + +使用 `--` 开头编写单行注释: + +```lua +-- 这是一条注释 +RESERVE_DATE = dateadd(datenow(), 1) -- 这也是一条行内注释 +``` + + + AutoScript 仅支持单行注释(`--`),不支持 Lua 的多行注释(`--[[ ]]`)。 + + +## 变量赋值 + +使用 `=` 进行变量赋值。可操作的目标变量请参见[变量参考](/zh/autoscript/variables)。 + +```lua +USERNAME = "alice" +USER_ENABLE = true +RESERVE_DATE = date(2025, 10, 30) +RESERVE_BEGIN_TIME = time(9, 0) +RESERVE_END_TIME = time(21, 30) +``` + + + 赋值必须保持变量原有的类型。例如,不能将字符串赋值给日期类型的变量,也不能将布尔值赋值给整数类型。类型错误会在脚本执行时报错。 + + +## 算术运算 + +支持基本的算术运算,可用于数值和日期/时间变量的计算: + +```lua +-- 数值运算 +RESERVE_BEGIN_TIME = RESERVE_BEGIN_TIME + 60 -- 开始时间推迟 60 分钟 +RESERVE_END_TIME = RESERVE_END_TIME - 30 -- 结束时间提前 30 分钟 + +-- 日期运算(使用工具函数) +RESERVE_DATE = dateadd(RESERVE_DATE, 1) -- 日期延后 1 天 +RESERVE_DATE = dateadd(RESERVE_DATE, -3) -- 日期提前 3 天 +``` + + + 对于日期和时间的加减,推荐使用 `dateadd()` 和 `timeadd()` 函数。直接使用 `+` `-` 进行日期运算可能导致结果含义不明确。 + + +## 条件判断 + +使用 `if` / `elseif` / `else` 结构进行条件判断。每个 `if` 块必须以 `end` 结尾: + +```lua +if USER_ENABLE then + -- 用户启用时执行 + RESERVE_DATE = dateadd(datenow(), 1) +end +``` + +```lua +if RESERVE_BEGIN_TIME < time(8, 0) then + RESERVE_BEGIN_TIME = time(8, 0) +else + RESERVE_BEGIN_TIME = time(9, 0) +end +``` + +多条件判断: + +```lua +if RESERVE_BEGIN_TIME < time(8, 0) then + RESERVE_BEGIN_TIME = time(8, 0) +elseif RESERVE_BEGIN_TIME > time(22, 0) then + RESERVE_BEGIN_TIME = time(22, 0) +else + RESERVE_BEGIN_TIME = RESERVE_BEGIN_TIME +end +``` + +## 比较运算符 + +| 运算符 | 说明 | 示例 | +| --- | --- | --- | +| `==` | 等于 | `USERNAME == "alice"` | +| `~=` | 不等于 | `USER_ENABLE ~= false` | +| `>` | 大于 | `RESERVE_BEGIN_TIME > time(9, 0)` | +| `<` | 小于 | `RESERVE_END_TIME < time(22, 0)` | +| `>=` | 大于等于 | `RESERVE_BEGIN_TIME >= time(7, 30)` | +| `<=` | 小于等于 | `RESERVE_END_TIME <= time(23, 0)` | + +## 逻辑运算符 + +| 运算符 | 说明 | 示例 | +| --- | --- | --- | +| `and` | 逻辑与 | `USER_ENABLE and RESERVE_BEGIN_TIME < time(12, 0)` | +| `or` | 逻辑或 | `USERNAME == "alice" or USERNAME == "bob"` | +| `not` | 逻辑非 | `not USER_ENABLE` | + +## 布尔变量判断 + +对于布尔类型的变量(如 `USER_ENABLE`),可以直接作为条件使用,无需显式比较: + +```lua +-- 推荐写法 +if USER_ENABLE then + ... +end + +-- 等价但不推荐 +if USER_ENABLE == true then + ... +end +``` + +## 字符串 + +字符串使用双引号包裹: + +```lua +USERNAME = "20250101001" +``` + + + AutoScript 不支持字符串拼接(`..` 运算符)。字符串变量只能通过直接赋值修改。 + + +## 关键字 + +以下是 AutoScript 中可用的 Lua 关键字: + +`if` `elseif` `else` `then` `end` `and` `or` `not` `true` `false` + +以下 Lua 标准功能出于安全考虑**不可用**: + +- 文件 I/O(`io` 模块) +- 模块加载(`require`、`dofile`、`loadfile`) +- 系统命令执行(`os.execute`、`os.exit`) +- 调试功能(`debug` 模块) +- 循环语句(`for`、`while`) + + + 出于安全沙箱限制,AutoScript 不支持循环语句。如果你需要为多个用户设置不同参数,建议使用用户分组功能,配合条件判断实现差异化配置。 + diff --git a/zh/autoscript/variables.mdx b/zh/autoscript/variables.mdx new file mode 100644 index 0000000..324348e --- /dev/null +++ b/zh/autoscript/variables.mdx @@ -0,0 +1,120 @@ +--- +title: "变量参考" +description: "AutoScript 可操作的目标变量完整参考 - 数据类型与映射关系" +--- + +AutoScript 通过操作一组预定义的变量来调整预约参数。每个变量有固定的数据类型,赋值时必须保持类型一致。 + +## 变量列表 + +| 显示名称 | Lua 变量名 | 类型 | 说明 | +| --- | --- | --- | --- | +| 用户名 | `USERNAME` | String | 用户的学号 | +| 用户启用 | `USER_ENABLE` | Boolean | 是否启用该用户 | +| 预约日期 | `RESERVE_DATE` | Date | 座位预约日期 | +| 预约开始时间 | `RESERVE_BEGIN_TIME` | Time | 预约开始时间 | +| 预约结束时间 | `RESERVE_END_TIME` | Time | 预约结束时间 | + + + 变量名区分大小写。`USERNAME`、`username` 和 `UserName` 是三个不同的标识符。 + 请始终使用全大写变量名。 + + +## 数据类型 + +### String(字符串) + +文本类型,用于表示学号。 + +```lua +USERNAME = "20250101001" +``` + +限制: +- 只能通过直接赋值修改 +- 不支持字符串拼接 + +### Boolean(布尔) + +真/假值,用于控制用户是否被处理。 + +```lua +USER_ENABLE = true -- 启用用户 +USER_ENABLE = false -- 跳过用户 + +-- 可直接作为条件判断 +if USER_ENABLE then + -- 用户启用时执行 +end +``` + +### Date(日期) + +日期值,在 Lua 内部以数值形式存储(Unix 时间戳),在配置文件中以 `"YYYY-MM-DD"` 字符串形式存储。 + +```lua +-- 使用工具函数创建日期 +RESERVE_DATE = date(2025, 10, 30) -- 绝对日期 +RESERVE_DATE = datenow() -- 今天 +RESERVE_DATE = dateadd(datenow(), 1) -- 明天 +RESERVE_DATE = strtodate("2025-12-31") -- 从字符串解析 +``` + + + 不要直接对日期变量使用算术运算(如 `RESERVE_DATE + 86400`)。 + 请使用 `dateadd()` 函数。 + + +### Time(时间) + +时间值,在 Lua 内部以分钟数形式存储(0-1439),在配置文件中以 `"HH:MM"` 字符串形式存储。 + +```lua +-- 使用工具函数创建时间 +RESERVE_BEGIN_TIME = time(9, 0) -- 09:00 +RESERVE_END_TIME = time(21, 30) -- 21:30 +RESERVE_BEGIN_TIME = timeadd(timenow(), 60) -- 当前时间 + 1 小时 +RESERVE_END_TIME = strtotime("22:00") -- 从字符串解析 +``` + + + 时间值在内部是以分钟为单位的整数值。`time(9, 30)` 等价于 `570`(9*60 + 30)。 + 虽然可以直接使用数值,但建议始终使用工具函数以确保可读性和正确性。 + + +## 虚拟变量 + +以下两个变量存在于可视化编排器中,但在实际 Lua 脚本中不可用。编排器会在生成代码时将它们转换为对应的函数调用: + +| 虚拟变量 | 编排器中的含义 | 生成的 Lua 代码 | +| --- | --- | --- | +| `CURRENT_DATE` | 当前日期 | `datenow()` | +| `CURRENT_TIME` | 当前时间 | `timenow()` | + + + 在代码编辑器中编写脚本时,请直接使用 `datenow()` 和 `timenow()` 函数, + 不要使用 `CURRENT_DATE` 或 `CURRENT_TIME`。 + + +## 类型安全 + +AutoScript 引擎会在脚本执行前后验证变量类型。以下情况会导致错误: + +- 将字符串赋给日期变量 +- 将布尔值赋给整数变量 +- 将浮点数赋给需要整数的变量 +- 变量值变为 `nil` + +```lua +-- 正确:类型匹配 +RESERVE_DATE = dateadd(datenow(), 1) -- Date = Date +USER_ENABLE = true -- Boolean = Boolean + +-- 错误:类型不匹配 +RESERVE_DATE = "2025-10-30" -- Error: Date ≠ String +USER_ENABLE = 1 -- Error: Boolean ≠ Int +``` + + + 如果脚本执行后某个变量值未改变,脚本中对该变量的赋值被跳过了,请检查赋值表达式的结果类型是否与变量声明的类型匹配。 + diff --git a/zh/changelog/overview.mdx b/zh/changelog/overview.mdx deleted file mode 100644 index 7e55ead..0000000 --- a/zh/changelog/overview.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "更新日志" -description: "AutoLibrary 产品更新与版本发布记录" ---- - -本页面记录 AutoLibrary 的产品更新与改进。最新更改优先显示。 - - - -## 新功能 - -- **可视化编排对话框**:通过图形化界面构建 AutoScript 脚本,支持调试运行、动态模拟目标数据输入,以及算术表达式的解析与回显。无需手写脚本即可创建复杂的自动化流程。查看 [核心功能](/zh/manual/v1.3.0/features/core) 了解如何使用。 -- **AutoScript 行内注释**:现支持 `//` 行内注释和完整注释行,方便为自动化脚本添加说明。 -- **算术表达式支持**:AutoScript 现支持算术表达式与变量的加减运算,可在脚本中进行动态计算。 -- **全新应用图标**:AutoLibrary 启用全新设计的 SVG/ICO 图标,提升应用辨识度。 -- **编辑器语法高亮**:脚本编辑器采用 VSCode C 风格配色方案,布尔字面量独立配色,提升脚本编辑体验。 - -## 更新 - -- **AutoScript 引擎升级至 v1.0.0**:脚本引擎迁移至 Lua 沙箱架构,提供更强的类型安全与异常处理。日期、时间相关函数已重命名(如 `CURRENT_DATE()` → `datenow()`,`date_add` → `dateadd`),请相应更新现有脚本。 -- **预约检查流程优化**:数据校验前置,避免无效配置触发不必要的浏览器操作,预约失败时反馈更快。 -- **关于对话框重构**:改用标签页分别展示系统信息、项目信息和许可证内容,新增 Selenium 版本展示。 -- **手册站点域名迁移**:用户手册地址迁移至 `manuals.autolibrary.kenanzhu.com`,请更新书签。 -- **强类型赋值校验**:AutoScript 中的 `SET` 赋值禁止跨类型隐式转换,可在脚本运行前及早发现类型错误。 - -## Bug 修复 - -- 修复编排窗口中 `CURRENT_DATE` 日期映射偏移、被错误识别为前天的问题。 -- 统一闭馆时间常量为 22:30,修复预约校验阶段与选时阶段使用不同闭馆时间的不一致问题。 -- 修正编排窗口生成的脚本块结尾,统一使用 `END IF` 结束。 -- 修复验证码识别逻辑、预约时间校验流程以及异常处理。 -- 加固元素操作防护,避免页面元素瞬时不可用时出现的偶发失败。 -- 修复定时任务对话框的布局边距与间距问题。 - - diff --git a/zh/manual/v1.4.0/configuration/file.mdx b/zh/manual/v1.4.0/configuration/file.mdx new file mode 100644 index 0000000..01edfbf --- /dev/null +++ b/zh/manual/v1.4.0/configuration/file.mdx @@ -0,0 +1,215 @@ +--- +title: "通过文件配置" +description: "AutoLibrary JSON 配置文件参考 - run.json 与 user.json" +--- + +软件启动时,将自动在用户主目录下创建运行配置文件 `run.json` 和用户配置文件 `user.json`。 + +配置文件统一存放于用户数据目录下的 `AutoLibrary/config` 文件夹中。 + +以 Windows 系统为例: + +```path +C:\Users\<用户名>\AppData\Roaming\AutoLibrary\config +``` + +macOS 系统中的路径则为: + +```path +~/Library/Application Support/AutoLibrary/config +``` + + + 任何情况下都不建议在该目录下修改除运行配置文件、用户配置文件和全局配置文件以外的任何文件。 + + 即使是修改配置文件,也请务必保持 [JSON 格式](https://www.json.org/json-zh.html)正确,否则可能导致软件无法正常启动或运行。 + + +## 运行配置文件 (run.json) + +```json +{ + "library": { + "host_url": "http://10.1.20.7", + "login_url": "/login" + }, + "mode": { + "run_mode": 1 + }, + "login": { + "auto_captcha": true, + "max_attempt": 3 + }, + "web_driver": { + "driver_type": "edge", + "driver_path": "", + "headless": false + } +} +``` + +### 字段 (library) + +关于图书馆的相关配置,目前版本下无需更改 + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `host_url` | String | 图书馆主机URL,无需更改 | +| `login_url` | String | 登录页面URL,无需更改 | + +### 字段 (mode) + +AutoLibrary 的运行模式 + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `run_mode` | Number | 运行模式组合(+1 预约, +2 签到, +4 续约) | + +### 字段 (login) + +AutoLibrary 处理登录时的相关配置 + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `auto_captcha` | Boolean | 自动验证码识别,建议保持 `true` | +| `max_attempt` | Number | 登录尝试次数,默认 3 次 | + +### 字段 (web_driver) + +AutoLibrary 使用的浏览器及其驱动的相关配置 + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `driver_type` | String | 浏览器类型:`edge` / `chrome` / `firefox` | +| `driver_path` | String | 驱动文件路径,为空则运行失败 | +| `headless` | Boolean | 无头模式,默认 `false` | + +## 用户配置文件 (user.json) + +```json +{ + "groups": [ + { + "name": "分组名", + "enable": true, + "users": [ + { + "username": "您的学号", + "password": "您的密码", + "enable": true, + "reserve_info": { + "date": "2025-10-30", + "place": "1", + "floor": "4", + "room": "5", + "begin_time": { + "time": "09:30", + "max_diff": 30, + "prefer_early": true + }, + "end_time": { + "time": "21:23", + "max_diff": 30, + "prefer_early": false + }, + "renew_time": { + "expect_duration": 1.0, + "max_diff": 30, + "prefer_early": false + }, + "seat_id": "31A", + "expect_duration": 6, + "satisfy_duration": true + } + } + ] + } + ] +} +``` + +### 字段 (groups) + +这是用户配置的最外层的用户分组,分组中会包含一个用户列表, + + + 即使只添加用户列表而不使用分组包裹,AutoLibrary 也会默认为该用户列表创建兼容分组。 + + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `name` | String | 分组名称 | +| `enable` | Boolean | 是否启用该分组,`false` 时跳过 | + +### 字段 (users) + +用户分组中的用户列表 + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `username` | String | 学号 | +| `password` | String | 密码 | +| `enable` | Boolean | 是否启用该用户,`false` 时跳过 | + +### 字段 (reserve_info) + +该字段包含了用户的座位预约信息 + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `date` | String | 预约日期(格式 `yyyy-MM-dd`) | +| `place` | String | `"图书馆"` 或 `"1"` | +| `floor` | String | 楼层代码,**详见下方楼层映射** | +| `room` | String | 区域代码,**详见下方区域映射** | +| `seat_id` | String | 座位编号,如 `12A` `012a` | +| `expect_duration` | Number | 期望预约时长(分钟) | +| `satisfy_duration` | Boolean | 是否满足期望时长 | + + + | 代码 | 楼层 | + | --- | --- | + | `2` | 二层 | + | `3` | 三层 | + | `4` | 四层 | + | `5` | 五层 | + + + | 代码 | 区域 | + | --- | --- | + | `1` | 二层内环 | + | `2` | 二层西区 | + | `3` | 三层内环 | + | `4` | 三层外环 | + | `5` | 四层内环 | + | `6` | 四层外环 | + | `7` | 期刊区 | + | `8` | 五层考研 | + + +#### 子字段 begin_time + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `time` | String | 开始时间(格式 `HH:mm`) | +| `max_diff` | Number | 最大时间差(分钟) | +| `prefer_early` | Boolean | 是否优先较早时间 | + +#### 子字段 end_time + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `time` | String | 结束时间(格式 `HH:mm`) | +| `max_diff` | Number | 最大时间差(分钟) | +| `prefer_early` | Boolean | 结束时间优先较晚 | + +#### 子字段 renew_time + + + 各用户配置的该子字段只在自动续约模式下才会被 AutoLibrary 读取 + + +| 参数 | 类型 | 说明 | +| --- | --- | --- | +| `expect_duration` | Number | 期望续约时长(小时) | +| `max_diff` | Number | 最大时间差(分钟) | +| `prefer_early` | Boolean | 续约时间优先较晚 | diff --git a/zh/manual/v1.4.0/configuration/start.mdx b/zh/manual/v1.4.0/configuration/start.mdx new file mode 100644 index 0000000..a594708 --- /dev/null +++ b/zh/manual/v1.4.0/configuration/start.mdx @@ -0,0 +1,18 @@ +--- +title: "启动工具" +description: "AutoLibrary 启动与运行说明" +--- + +运行 AutoLibrary 文件,工具将启动主界面。 + +![运行主界面](/images/v1.2.1/main-ui.png) + +软件首次启动时,未初始化配置文件,直接运行脚本会提示配置文件未找到。这属于预期行为,请先完成下方配置。 + + + 为适应不同的用户需求,这里分别提供了通过界面与直接修改配置文件两种方式,请按照需求参考选择。 + + + + Windows 与 macOS 平台配置文件路径因系统而异,详见[通过文件配置](/zh/manual/v1.4.0/configuration/file)页面。 + diff --git a/zh/manual/v1.4.0/configuration/ui.mdx b/zh/manual/v1.4.0/configuration/ui.mdx new file mode 100644 index 0000000..3605eee --- /dev/null +++ b/zh/manual/v1.4.0/configuration/ui.mdx @@ -0,0 +1,101 @@ +--- +title: "通过界面配置" +description: "AutoLibrary 界面配置指南 - 用户、预约、系统设置与运行模式" +--- + +点击主界面窗口右上角的 [**配置**] 按钮,打开配置窗口。 + + + + ![配置窗口-用户配置](/images/v1.2.1/config-window-user.png) + + + 初次运行软件时,用户配置默认为空,需要手动添加。 + + + ### 用户列表 + + | 功能 | 说明 | 备注 | + | --- | --- | --- | + | 用户列表 | 显示当前配置文件中的所有用户 | 支持 [**添加**]、[**删除**] 用户操作,选中用户项进行详细配置 | + + ### 用户信息 + + | 参数 | 说明 | 默认值/可选值 | + | --- | --- | --- | + | 学号 | 用户的学号 | 必填项,用于登录图书馆系统 | + | 密码 | 用户的密码 | 默认值为 `000000`,请根据实际情况修改 | + + ### 预约信息 + + | 参数 | 说明 | 默认值/可选值 | + | --- | --- | --- | + | 日期 | 座位预约日期 | 格式 `yyyy-MM-dd`,18:00-23:00可预约次日 | + | 地点 | 预约座位的地点 | 默认值:`图书馆` | + | 楼层 | 预约座位的楼层 | `二层` `三层` `四层` `五层` | + | 区域 | 预约座位的区域 | 默认值:`二层内环`,可选随楼层变化 | + | 座位号 | 预约座位的座位号 | 例如:`12A` `012a` | + | 开始时间 | 预约开始时间 | 格式 `HH:mm`,可选范围 7:30-23:30 | + | 结束时间 | 预约结束时间 | 格式 `HH:mm`,默认当前时间+2小时 | + | 最大时间偏差 | 时间不可用时的偏差范围 | 0-120分钟,0 表示严格按选择时间 | + | 优先最早/晚 | 多可选时间时的优先选择 | 开始时间优先最早,结束/续约时间优先最晚 | + | 期望预约时长 | 预约期望时长 | 0-8 小时,默认 2 小时 | + | 期望续约时长 | 续约期望时长 | 0-4 小时,默认 1 小时 | + | 优先满足期望时长 | 是否优先满足时长限制 | 勾选后尽量满足,但可能因座位紧张导致预约失败 | + + + ![配置窗口-运行配置](/images/v1.2.1/config-window-runtime.png) + + ### 图书馆设置 + + | 参数 | 说明 | 默认值 | + | --- | --- | --- | + | 访问网址 | 图书馆系统的主机URL | `http://10.1.20.7`(无需更改) | + | 登录页面 | 登录页面的URL路径 | `/login`(无需更改) | + + ### 浏览器设置 + + | 参数 | 说明 | 默认值/可选值 | + | --- | --- | --- | + | 浏览器类别 | 使用的浏览器类型 | Microsoft Edge / Google Chrome / Mozilla Firefox | + | 浏览器驱动路径 | 驱动程序路径 | 通过[**浏览**] 按钮选择 | + | 无头模式 | 是否隐藏浏览器窗口 | `false`(显示窗口),`true` 为隐藏运行 | + + ### 登录设置 + + | 参数 | 说明 | 默认值 | + | --- | --- | --- | + | 自动识别验证码 | 是否自动处理验证码 | 勾选(推荐) | + | 登录尝试次数 | 登录失败后最大重试次数 | 3 次 | + + ### 运行模式 + + | 功能 | 说明 | 触发条件 | + | --- | --- | --- | + | 自动预约 | 按配置进行座位预约 | 用户当天无有效预约时执行 | + | 自动签到 | 自动完成图书馆签到 | 满足条件时执行,否则跳过 | + | 自动续约 | 自动延长座位使用时间 | 满足条件时执行,否则跳过 | + + + ![配置窗口-其它](/images/v1.2.1/config-window-other.png) + + ### 配置文件的保存与读取 + + | 参数 | 说明 | + | --- | --- | + | 运行配置文件路径 | 可通过 [**...**] 按钮选择新的配置文件 | + | 用户配置文件路径 | 可通过 [**...**] 按钮选择新的配置文件 | + + ### 导出配置 + + 支持将当前配置导出为文件,选择目标路径和文件名后点击 [**导出配置文件**] 按钮。 + + + +## 运行工具 + +配置完成后,点击主界面窗口顶部右侧的绿色按钮 [**启动脚本**],工具将按配置自动执行预约、签到、续约等操作。 + + + AutoLibrary 将按照配置文件处理所有启用的用户组中的可用用户。 + diff --git a/zh/manual/v1.4.0/faq/contact.mdx b/zh/manual/v1.4.0/faq/contact.mdx new file mode 100644 index 0000000..afab81c --- /dev/null +++ b/zh/manual/v1.4.0/faq/contact.mdx @@ -0,0 +1,95 @@ +--- +title: "联系我们" +description: "AutoLibrary 的相关链接,以及快速获取联系我们的方式" +--- + +## 相关链接 + +下列是快速获取与 AutoLibrary 相关的最新信息的方式,你可以跟踪最新的开发进展 +以及未来的开发规划 + + + + 项目的官方源码托管仓库、版本发布与 Issue 跟踪。 + + + 自托管镜像仓库,提供更快的访问与其它个性化内容。 + + + 获取 AutoLibrary 最新版本安装包。 + + + 浏览、下载和分享 AutoLibrary 社区主题。 + + + + + Gitea 镜像仓库与 GitHub 主仓库的同步间隔为 8 小时,因此出现提交不一致的问题是正常的, + 请等待 Gitea 镜像仓库同步后再次检查。 + + +## 问题反馈 + +如果在使用 AutoLibrary 过程中遇到了一些问题,并且无法在本文档站点中寻找到任何解决方法; +亦或者是对 AutoLibrary 有一些自己的意见和建议,欢迎通过下面的各种渠道与我们取得联系 + +### GitHub Issues + +使用过程中遇到问题或需要功能改进,请通过 GitHub Issues 提交反馈: + + + 提交 Bug 报告或功能请求前,请先搜索是否已有相关问题,避免重复提交。 + + +### 邮件联系 + + + 如需直接沟通,可通过邮件联系开发者。 + + +## 参与贡献 + +欢迎通过以下方式参与 AutoLibrary 项目,AutoLibrary 通过 [MIT 协议](https://github.com/KenanZhu/AutoLibrary/blob/main/license) 进行开源,你可以对 AutoLibrary 自由的修改并再次分发: + + + 请通过 GitHub 主仓库提交 PR。Gitea 镜像仅用于数据同步备份,不参与代码贡献流程。 + + + + + 在 [GitHub](https://github.com/KenanZhu/AutoLibrary) 上 Fork 项目仓库至个人账号。 + + + 基于 main 分支创建特性分支。 + + + 编写清晰规范的提交信息,推送到 Fork 仓库。 + + + 向主仓库发起 [Pull Request](https://github.com/KenanZhu/AutoLibrary/pulls),描述修改内容与目的。 + + diff --git a/zh/manual/v1.4.0/faq/faq.mdx b/zh/manual/v1.4.0/faq/faq.mdx new file mode 100644 index 0000000..5c302a6 --- /dev/null +++ b/zh/manual/v1.4.0/faq/faq.mdx @@ -0,0 +1,17 @@ +--- +title: "常见问题" +description: "AutoLibrary 使用问答" +--- + + + AutoLibrary 完全模拟人工操作,不干扰图书馆系统正常运行。工具**不会收集或上传您的个人信息**,所有数据仅保存在本地配置文件中。 + + + 根据图书馆规定,每个账号同一时间段只能预约一个座位。但您可以在配置中添加多个账号,工具会依次处理每个账号的预约请求。 + + 本工具旨在辅助用户正常使用图书馆服务,请勿滥用影响他人及图书馆正常运行。 + + + + 可以正常使用电脑,但**请勿操作工具自动打开的浏览器窗口**,否则可能会干扰工具正常运行。如需完全后台运行,可启用无头模式并最小化到托盘。 + diff --git a/zh/manual/v1.4.0/faq/troubleshooting.mdx b/zh/manual/v1.4.0/faq/troubleshooting.mdx new file mode 100644 index 0000000..d6d90b0 --- /dev/null +++ b/zh/manual/v1.4.0/faq/troubleshooting.mdx @@ -0,0 +1,149 @@ +--- +title: "疑难解答" +description: "AutoLibrary 故障排除与常见问题解决方法" +--- + +## 工具启动时报错"无法找到驱动" + + + 这大概率是因为浏览器驱动未正确安装或版本不匹配。 + + 因此我们强烈建议使用 AutoLibrary 的[浏览器驱动自动下载功能](/zh/manual/v1.4.0/installation/driver#%E6%96%B9%E5%BC%8F%E4%B8%80%EF%BC%9A%E4%BD%BF%E7%94%A8%E6%B5%8F%E8%A7%88%E5%99%A8%E9%A9%B1%E5%8A%A8%E8%87%AA%E5%8A%A8%E4%B8%8B%E8%BD%BD%E5%8A%9F%E8%83%BD%EF%BC%88%E6%8E%A8%E8%8D%90%EF%BC%89)。 + 这可以很大程度上减少此类问题的发生。 + + + + + 确认驱动文件是否放置在正确位置。 + + + 驱动版本必须与浏览器版本完全匹配(如 Chrome 需对应版本的 `chromedriver.exe`,切勿混用)。 + + + 使用浏览器驱动自动下载窗口重新安装。 + + + +## 登录失败,提示账号密码错误 + +请检查配置界面中的账号密码是否正确。 + + + + 确认学号和密码无误。 + + + 检查是否有不支持的特殊字符需要转义。 + + + 尝试手动登录图书馆系统确认账号可用。 + + + +## 预约失败,提示座位不可用 + +目标座位可能已被他人预约或不在可预约时间。 + + + + 确认座位编号、楼层、区域是否正确。 + + + 尝试预约其它座位或调整时间参数。增大 [**最大时长偏差**] 让工具在允许的时间范围内自动选择最佳起始时间。 + + + +## 定时任务显示"已就绪"或"执行中"且无法删除 + + + 此解决方法需要直接操作 AutoLibrary 的核心配置文件,需要操作者对 [JSON 格式](https://www.json.org/json-zh.html)有一定了解。**操作前请务必备份相关文件**,以免误操作导致配置丢失。 + + +这一般是因为定时任务已进入预约队列,但软件上次异常关闭未能处理完毕。请按以下步骤手动删除: + + + + 检查界面中正在运行的定时任务,记住任务名称或运行时间等可用于定位的信息。 + + + 在 AutoLibrary 配置界面的 [**其它**] 选项卡中,找到 [**当前运行配置路径**] 显示的文件夹路径,使用文件管理器打开该目录。 + + + 在该目录中找到名为 `timer_task.json` 的文件,使用文本编辑器打开(推荐 [VS Code](https://code.visualstudio.com/)、[Notepad++](https://notepad-plus-plus.org/),也可直接使用记事本)。 + + + 在 JSON 文件中查找包含以下信息的任务配置块: + - `name`(任务名称) + - `execute_time`(执行时间) + + 如果任务名包含中文,在 JSON 中会以 Unicode 编码显示, + 如 `"name": "预约任务"` 在 Unicode 显示下会变为: `"name": "预约任务"`。 + 可使用在线工具搜索「Unicode 转中文」进行转换确认。 + + + 将找到的任务配置块从 JSON 文件中完全删除。 + + + 删除时请保持 JSON 格式完整:确保花括号 `{}`、方括号 `[]`、逗号等符号正确。不要删除其它正常任务配置。 + + + + 完全关闭 AutoLibrary 后重新打开,异常定时任务应已成功删除,界面状态恢复正常。 + + + + + 如果操作后 JSON 格式出错,软件可能会覆写原有配置文件。请确保备份,并检查 JSON 语法是否正确(注意最后一个元素后不要有多余的逗号)。 + + +## macOS 系统首次启动被阻止 + +macOS 用户首次启动 AutoLibrary 时,系统可能提示"无法验证开发者"并阻止打开应用。 + +这是由于应用未经过 Apple 官方代码签名所致。请按以下步骤操作: + + + + 首次双击 `AutoLibrary.app` 后,系统弹出"无法验证开发者"提示,点击 [**取消**] 关闭弹窗。 + + + 打开系统 [**设置**] → [**隐私与安全性**]。 + + + 在页面底部找到关于 AutoLibrary 的拦截提示,点击右侧的 [**仍要打开**] 按钮,并在弹出的对话框中再次确认 [**打开**]。 + + + + + 右键点击 → [**打开**] 的方式在某些 macOS 版本中可能不会出现允许选项。如果该方法无效,请使用上述系统设置方法。 + + +## macOS 系统浏览器驱动无法运行 + +在 macOS 上下载的浏览器驱动可能被系统隔离,导致无法执行。 + + + + 打开终端,运行以下命令移除驱动的隔离属性: + + ```bash + xattr -d com.apple.quarantine /path/to/driver + ``` + + 将 `/path/to/driver` 替换为实际的驱动文件路径。 + + + 如果系统提示无执行权限,运行以下命令: + + ```bash + chmod +x /path/to/driver + ``` + + + 在终端中运行驱动文件确认其可正常启动。例如: + + ```bash + /path/to/chromedriver --version + ``` + + diff --git a/zh/manual/v1.4.0/features/core.mdx b/zh/manual/v1.4.0/features/core.mdx new file mode 100644 index 0000000..91db8a6 --- /dev/null +++ b/zh/manual/v1.4.0/features/core.mdx @@ -0,0 +1,38 @@ +--- +title: "核心功能" +description: "AutoLibrary 核心功能 - 自动预约、签到、续约、AutoScript 脚本与模式组合" +--- + +## 运行模式 + + + + 如果用户当前没有有效预约,工具会自动为您预约指定座位。适用于提前预约第二天的座位。 + + + 在可签到时间范围(开始时间的前后30分钟)内,自动完成签到,避免因忘记签到导致失约。 + + + 到达可续约时间(结束时间前的120分钟),自动延长座位使用时间。 + + + +## 模式组合 + +运行模式可以组合使用,只需在配置窗口中勾选对应模式即可。同时启用三种模式后,工具会自动判断当前状态并执行相应操作。 + + + 推荐同时启用三种模式,让工具自动处理预约、签到、续约的完整流程。 + \ No newline at end of file diff --git a/zh/manual/v1.4.0/features/timer.mdx b/zh/manual/v1.4.0/features/timer.mdx new file mode 100644 index 0000000..9390094 --- /dev/null +++ b/zh/manual/v1.4.0/features/timer.mdx @@ -0,0 +1,136 @@ +--- +title: "定时任务" +description: "AutoLibrary 定时任务管理 - 添加、编辑、删除定时任务与 AutoScript 集成" +--- + +使用内置定时任务管理,添加定时任务后在指定时间按当前预约信息自动运行。 +支持设置重复周期,如每周一、周三、周五自动执行。 + +在定时任务中集成 AutoScript 脚本,在任务执行前自动调整预约参数。 + +## 打开定时任务管理 + +点击主界面窗口底部左侧的 [] 按钮,打开定时任务管理窗口。 + +![定时任务管理窗口](/images/v1.3.0/timer-management-window.png) + +![功能介绍-定时任务](/images/v1.2.1/feature-timer.png) + + +## 添加定时任务 + +点击 [**添加任务**] 按钮,在弹出的对话框中配置任务参数: + +![添加定时任务对话框](/images/v1.3.0/add-timer-dialog.png) + + + 添加后任务将显示在列表中,状态为"等待中"。到达指定时间后自动执行。 + + +### 定时类型 + +| 选项 | 说明 | 示例 | +| --- | --- | --- | +| [**特定时间**] | 指定任务开始的绝对时间 | `2025-10-30 08:00:00` | +| [**相对时间**] | 相对当前时间的偏移量 | 提前 1 天、提前 2 小时、提前 30 分钟 | + +### 运行模式 + +| 选项 | 行为 | 适用场景 | +| --- | --- | --- | +| [**静默运行**] | 任务执行时不会弹出窗口,完成后右下角通知 | 完全自动化,无需人工干预 | +| [**运行前提示**] | 任务执行前显示提示信息 | 需要在运行前确认或查看进度 | + + + 如需完全静默运行:在配置界面的系统设置中勾选 [**无头模式**],并在程序托盘中右键选择 [**最小化到托盘**]。这样定时任务运行时不会显示主界面和浏览器窗口,仅在完成时弹出系统通知。 + + +### 重复执行 + +勾选 [**启用重复执行**] 后,可以按周循环执行任务: + +- 选择需要运行的天(如:每周一、周三、周五) +- 需要每天运行则勾选全部(周一至周日) +- 全选和全不选均视为每日执行 + +## AutoScript 自动化脚本 + +AutoScript 是基于 Lua 语言的自动化脚本引擎,支持条件判断和算术表达式, +可在定时任务运行前对预约参数进行动态调整,比如能够实现以下场景: + + + AutoScript 自动化脚本仅支持在**重复性**定时任务中配置,请务必 + 勾选 [**启用重复执行**] 以使用 AutoScript 脚本。 + + +- 根据当前日期动态调整预约时间 +- 根据用户状态自动切换预约参数 +- 多个用户配置的批量自动化处理 + + + 查看完整的 AutoScript 语法指引、工具使用说明和集成方法。 + + + + + 在添加或编辑定时任务对话框中,点击 [**AutoScript 指令**] 区域 + 的 [**编辑**] 按钮,打开代码编辑器编写脚本。 + + 例如,以下脚本将预约日期设为明天,开始时间设为上午 9:00: + + ```lua + RESERVE_DATE = dateadd(datenow(), 1) + RESERVE_BEGIN_TIME = time(9, 0) + ``` + + + 在编辑器中点击 [**确认**],脚本将直接保存到当前定时任务的配置中。无需手动管理外部脚本文件。 + + + 建议结合使用 AutoScript 编辑器的 [**调试运行**] 功能,在模拟数据上验证脚本逻辑,确保参数调整符合预期。 + + + + + AutoScript 脚本在定时任务每次执行前独立运行,针对每个启用的用户组和用户依次应用。脚本修改的参数仅影响当次执行, + 不会回写到用户配置文件。详见 [AutoScript 集成](/zh/autoscript/integration)。 + + +## 编辑定时任务 + +支持对已创建的定时任务进行编辑修改,无需删除重建。 + + + + 在定时任务管理窗口中,在任务列表中的任意任务项上单击**鼠标右键**,在弹出的菜单中选择 [**编辑**]。 + + ![定时任务右键编辑菜单](/images/v1.3.0/timer-context-menu-edit.png) + + + 编辑对话框将显示任务的当前配置。您可以修改: + - 任务名称 + - 定时时间 + - 运行模式 + - AutoScript 脚本(通过内置编辑器管理) + - 将普通任务转换为可重复性任务(反之亦然) + + + + + 编辑任务时,任务的 UUID 和执行历史(可重复性任务)将被保留。修改执行时间后,状态将重置为"等待中"。 + + +## 删除定时任务 + +可通过以下两种方式移除定时任务: + +- 右键菜单选择 [**删除**] +- 点击任务项右侧的 [**删除**] 按钮 + + + 删除可重复性任务将同时清除该任务的所有执行历史记录。 + diff --git a/zh/manual/v1.4.0/global-settings/appearance.mdx b/zh/manual/v1.4.0/global-settings/appearance.mdx new file mode 100644 index 0000000..9c841c4 --- /dev/null +++ b/zh/manual/v1.4.0/global-settings/appearance.mdx @@ -0,0 +1,132 @@ +--- +title: "外观" +description: "AutoLibrary 外观设置 - 主题模式、界面风格与自定义主题" +--- + +在全局设置窗口中,选择左侧导航栏的 [**外观**] 进入外观设置页面。 + +## 主题模式 + +| 选项 | 说明 | +| --- | --- | +| [**浅色**] | 使用浅色主题 | +| [**深色**] | 使用深色主题 | +| [**跟随系统**] | 根据操作系统设置自动切换浅色/深色模式(默认) | + +## 界面风格 + +通过下拉列表选择 Qt 界面风格(如 `Fusion`、`Windows`、`macOS` 等)。可选值取决于系统中安装的 Qt 风格插件。 + + + 更改界面风格后需要重启应用才能生效。 + + +## 自定义外观 + +你可以导入 `.altheme` 主题文件来替换默认外观: + + + 导入主题前建议确认来源可信。尽管 AutoLibrary 会对主题文件进行基本的格式校验, + 但恶意构造的主题文件可能存在安全风险。 + + 因此我们建议尽量从 [AutoLibrary 主题市场](https://autolibrary.kenanzhu.com/marketplace) + 获取相对可靠的主题文件。 + + + + + 从 [AutoLibrary 主题市场](https://autolibrary.kenanzhu.com/marketplace) 浏览并下载你喜欢的主题文件(`.altheme`)。 + + + AutoLibrary 所发布的软件包中不含预装主题,所有主题文件需要从主题市场获取。 + + + + 在 [**自定义外观**] 区域点击 [**浏览**] 按钮,选择下载的 `.altheme` 文件。 + + AutoLibrary 同时支持 `.altheme` 和 `.qss` 格式的主题文件。导入 `.qss` 文件时, + AutoLibrary 会自动包装为 `.altheme` 格式。 + + + 所有导入的主题文件都会**按照主题名称重新命名**并存放在 AutoLibrary 配置目录的 themes 文件夹下: + + Windows 系统: + ```path + C:\Users\<用户名>\AppData\Roaming\AutoLibrary\config\themes + ``` + macOS 系统: + ```path + ~/Library/Application Support/AutoLibrary/config/themes + ``` + + + 导入时若与已有主题同名,AutoLibrary 会对比作者信息。同一作者的同名主题将被视为重复导入并被拒绝。 + + 因此,发布主题时请确保你的每个作品使用唯一名称。 + + + + 导入后,从下拉列表中选择该主题即可预览。点击 [**应用**] 保存设置,或点击 [**确认**] 保存并关闭窗口。 + + + +## 主题文件格式 + + + **如果需要上传并分享你的自定义主题文件,你应该了解以下内容。** + + +AutoLibrary 主题(**a**uto **l**ibrary **theme**)`.altheme` 文件格式基于 ZIP 压缩格式, +其内部包含以下文件: + +| 文件 | 说明 | +| --- | --- | +| `theme.qss` | Qt 样式表文件,定义界面外观 | +| `info.json` | 主题元数据,包含名称、作者、适配模式等信息 | + + + 如果需要了解 Qt 样式表文件(Qt Style Sheet, QSS),请访问 + [Qt QSS 官方参考文档](https://doc.qt.io/qt-6/stylesheet-reference.html) + + +`info.json` 结构示例: + +```json +{ + "qss": "theme.qss", + "name": "My Theme", + "author": "Your Name", + "need_theme": "dark", + "brief": "简洁的深色主题" +} +``` + +| 字段 | 说明 | +| --- | --- | +| `qss` | 样式表文件名,指向压缩包内的 QSS 文件 | +| `name` | 主题名称 | +| `author` | 主题作者 | +| `need_theme` | 适配主题:`"dark": 深色` `"light": 浅色` `"both": 兼容两者` | +| `brief` | 关于主题样式的简短描述,建议不要超过 50 个字符 | + +## 主题市场 + +[AutoLibrary 主题市场](https://autolibrary.kenanzhu.com/marketplace)是一个在线平台, +供用户浏览、下载和分享自定义主题。 + +### 通过市场上传与分享 + +如果你按照上述格式规范制作了自定义主题,可以通过主题市场上传分享: + +1. 注册 [AutoLibrary 主题市场](https://autolibrary.kenanzhu.com/marketplace)账户。注册时, + 昵称建议设置为主题中的作者名,以免引起命名冲突 +2. 准备 `.altheme` 主题文件 +3. 在上传页面,拖入或选择你准备好的 `.altheme` 主题文件 +4. 填写必要的主题信息(名称、简介描述、适配主题、兼容版本等) +5. 提交审核,等待审核通过后即可在主题市场中搜索、浏览并下载你分享的主题文件 + + + 上传的主题需要经过管理员审核后才能公开发布。审核通过后,其它用户即可在市场中浏览和下载。 + + 如果提交被管理员退回,请仔细阅读审核退回原因,按要求通过编辑保存修改后即可重新提交审核。 + diff --git a/zh/manual/v1.4.0/global-settings/start.mdx b/zh/manual/v1.4.0/global-settings/start.mdx new file mode 100644 index 0000000..9c154aa --- /dev/null +++ b/zh/manual/v1.4.0/global-settings/start.mdx @@ -0,0 +1,22 @@ +--- +title: "全局设置" +description: "AutoLibrary 全局设置窗口与界面概览" +--- + +全局设置窗口,用于管理应用级别的设置。全局设置与脚本运行配置相互独立,修改后应用重启仍然生效。 + +## 打开方式 + +点击菜单栏中的 [**工具**] → [**全局设置**],打开全局设置窗口。 + +![全局设置窗口](/images/v1.4.0/global-settings-window.png) + +## 界面概览 + +全局设置窗口左侧为导航栏,右侧为设置内容区域。选择左侧导航项可切换到对应的设置页面。窗口底部为操作按钮: + +| 按钮 | 功能 | +| --- | --- | +| [**取消**] | 放弃修改并关闭窗口 | +| [**应用**] | 保存当前设置但不关闭窗口 | +| [**确认**] | 保存设置并关闭窗口 | diff --git a/zh/manual/v1.4.0/index/beforestart.mdx b/zh/manual/v1.4.0/index/beforestart.mdx new file mode 100644 index 0000000..ac0ffee --- /dev/null +++ b/zh/manual/v1.4.0/index/beforestart.mdx @@ -0,0 +1,19 @@ +--- +title: "开始之前" +description: "阅读文档前的格式约定与说明" +--- + +在开始使用 AutoLibrary 之前,建议先了解本文档的一些格式约定,帮助你更高效地阅读文档内容。 + +## 文档约定 + +### 软件控件 + +文档中所有涉及 AutoLibrary 软件界面的控件(如按钮、菜单项、选项卡、输入框、复选框等),统一使用 [**加粗字体**] 的格式表示(即中括号包裹的加粗文字)。例如: + +- 点击 [**启动脚本**] 按钮开始运行 +- 在配置窗口中切换到 [**用户配置**] 选项卡 +- 右键菜单中选择 [**编辑**] +- 勾选 [**启用重复执行**] 以开启周期任务 + +当你看到一段 [**加粗**] 格式的文字时,即表示这是 AutoLibrary 中的某个可交互元素,你可以在软件中找到对应的操作入口。 diff --git a/zh/manual/v1.4.0/index/intro.mdx b/zh/manual/v1.4.0/index/intro.mdx new file mode 100644 index 0000000..2f15fc7 --- /dev/null +++ b/zh/manual/v1.4.0/index/intro.mdx @@ -0,0 +1,41 @@ +--- +title: "概述" +description: "北京建筑大学图书馆座位自动化工具 - 简化预约、签到、续约流程" +icon: "" +--- + +AutoLibrary 是一款专为北京建筑大学图书馆设计的自动化工具,旨在简化图书馆座位操作流程。 +同时支持 Windows 与 macOS 平台。 + +## 快速开始 + + + + 快速开始,安装 AutoLibrary 与其它必要的准备。支持 Windows 与 macOS 平台。 + + + 完整参数参考:用户信息、预约参数、系统设置、主题外观与配置文件详解。 + + + 核心功能概览:自动预约、签到、续约、AutoScript 脚本与定时任务管理。 + + + 常见问题解决方法与使用问答,快速排查使用问题。 + + diff --git a/zh/manual/v1.4.0/installation/driver.mdx b/zh/manual/v1.4.0/installation/driver.mdx new file mode 100644 index 0000000..2d1963d --- /dev/null +++ b/zh/manual/v1.4.0/installation/driver.mdx @@ -0,0 +1,80 @@ +--- +title: "安装浏览器驱动" +description: "AutoLibrary 浏览器驱动配置指南 - 自动下载与手动安装" +--- + +工具需要通过浏览器驱动来控制浏览器。以下两种方式可以帮助您快速配置驱动: + + + 浏览器驱动是一种处于自动化工具与浏览器之间的中间程序,它接收自动化工具的指令并转发给浏览器执行, + 从而实现对浏览器的自动控制。AutoLibrary 通过浏览器驱动来完成登录、预约、签到等需要操作网页的操作。 + + 每个浏览器都有各自对应的驱动: + + | 浏览器 | 对应 | 驱动 | + | --- | --- | --- | + | Microsoft Edge | → | Edge WebDriver | + | Google Chrome | → | Chrome Driver | + | Mozilla Firefox | → | Gecko Driver | + | ... | → | ... | + + + 不同类型浏览器的驱动只能适用于其对应的浏览器,且驱动版本必须与浏览器版本匹配,否则无法正常工作。 + AutoLibrary 的自动下载功能可以帮助解决版本匹配问题。 + + + + + AutoLibrary 支持自动检测本地安装的浏览器,并查找适配的驱动版本,大大简化了配置流程。 + + +## 方式一:使用浏览器驱动自动下载功能 + + + + 在 [AutoLibrary 配置界面](/zh/manual/v1.4.0/configuration/ui#%E8%BF%90%E8%A1%8C%E9%85%8D%E7%BD%AE)中,点击 [**浏览器驱动自动下载**] 按钮。 + + ![浏览器驱动自动下载窗口](/images/v1.2.1/driver-auto-download-window.png) + + + 工具会自动检测您电脑上已安装的浏览器,并列出可用的驱动版本。 + + + 从窗口中的下拉列表中选择需要的浏览器驱动版本,点击 [**下载驱动**] 按钮。 + + ![开始下载浏览器驱动](/images/v1.2.1/driver-auto-download-window-start.png) + + + 下载完成后,点击 [**确认**] 将驱动类型与驱动路径保存到配置窗口中并退出下载对话框。 + + ![浏览器驱动下载完成](/images/v1.2.1/driver-auto-download-window-done.png) + + + +## 方式二:手动下载浏览器驱动 + +如果仍需手动下载驱动,请根据您使用的浏览器和操作系统选择对应的驱动: + +| 浏览器 | 适用系统 | 下载链接 | +| --- | --- | --- | +| Microsoft Edge | 跨平台 | [下载 Edge 驱动](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) | +| Google Chrome | 跨平台 | [下载 Chrome 驱动](https://developer.chrome.google.cn/docs/chromedriver/downloads) | +| Mozilla Firefox | 跨平台 | [下载 Firefox 驱动](https://github.com/mozilla/geckodriver/releases) | + + + macOS 用户请根据 Mac 芯片类型选择对应架构的驱动: + - Apple Silicon (M1/M2/M3/M4) → 选择 `arm64` 或 `mac64_m1` 版本 + - Intel → 选择 `x64` 或 `mac64` 版本 + + 下载后,驱动文件通常以可执行文件形式提供。 + + 如果系统提示无法验证开发者,请在终端中运行: + ```bash + xattr -d com.apple.quarantine /path/to/driver + ``` + + 如果系统提示无执行权限,请添加执行权限: + ```bash + chmod +x /path/to/driver + ``` + diff --git a/zh/manual/v1.4.0/installation/install.mdx b/zh/manual/v1.4.0/installation/install.mdx new file mode 100644 index 0000000..f2182fc --- /dev/null +++ b/zh/manual/v1.4.0/installation/install.mdx @@ -0,0 +1,74 @@ +--- +title: "安装 AutoLibrary" +description: "AutoLibrary 下载与安装指南 - Windows 与 macOS 平台" +--- + +AutoLibrary 是一款专为北京建筑大学图书馆设计的自动化工具,帮助您简化图书馆座位操作流程,节省宝贵时间。工具完全模拟人工操作,通过简单的界面配置即可使用。 + +## 下载软件 + +请从 [AutoLibrary 下载页面](https://autolibrary.kenanzhu.com/downloads)获取最新版本。 + + + [**GitHub Releases**](https://github.com/KenanZhu/AutoLibrary/releases):更新较为及时,但网络连接不稳定,速度较慢。 + + **云盘链接**:版本更新略有延迟,但下载速度更快。 + + +## 安装类型 + +### Windows + + + 从 v1.1.0 版本开始,提供两种版本可供选择: + + + + + 解压下载好的压缩包文件到任意位置,双击运行其中的 `AutoLibrary.exe` 即可启动工具。 + + + 压缩包内的 `_internal` 文件夹与 `AutoLibrary.exe` 可执行文件需要位于同一目录下,请勿修改或移动这两个文件,否则可能导致工具无法正常运行。 + + + + 双击运行安装程序,按照步骤提示进行安装。安装完成后即可在桌面快捷方式或开始菜单中找到 AutoLibrary。 + + + +### macOS + + + AutoLibrary 的官方发布版本仅适用于 macOS Apple Silicon 系统及其架构。 + + + + + 从下载页面获取 `AutoLibrary.<版本号>-macos-arm64.dmg` 文件。 + + + 目前仅提供 Apple Silicon (M 系列芯片) 版本。如果你使用 Intel 芯片的 Mac,请从源码自行构建,详见 [GitHub 仓库](https://github.com/KenanZhu/AutoLibrary) README 中的构建说明。 + + + + 双击打开 `.dmg` 文件,将 `AutoLibrary.app` 拖入 `Applications` 文件夹。 + + {/* TODO: 添加 macOS DMG 安装界面截图 */} + ![macOS DMG 安装界面](/images/v1.4.0/macos-dmg-install.png) + + + 由于应用未经过 Apple 官方代码签名,首次启动时 macOS 可能会阻止运行。请按以下步骤操作: + + 1. 双击 `AutoLibrary.app`,系统弹出 "**无法验证开发者**" 提示后点击 [**取消**] + 2. 打开系统 [**设置**] → [**隐私与安全性**] + 3. 在页面底部找到关于 AutoLibrary 的拦截提示,点击右侧的 [**仍要打开**] + 4. 在弹出的对话框中再次确认 [**打开**] + + + 此操作只需执行一次,之后即可正常双击启动。 + + + 右键点击 → [**打开**] 的方式在某些 macOS 版本中可能不生效,建议优先使用上述方法。 + + +