[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94642":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":10,"rankLanguage":10,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":15,"lastSyncTime":25,"discoverSource":26},94642,"Ydisks-drive-assistant","Christ9038\u002FYdisks-drive-assistant","Christ9038","Ydisks 批量转存助手。支持百度云盘、夸克云盘、迅雷云盘的批量转存工具。","",null,"TypeScript",112,3,0,2,42.01,"Apache License 2.0",false,"main",true,[],"2026-08-24 04:01:22","\u003Cdiv align=\"center\">\n\n# Ydisks 批量转存助手\n\n**批量转存夸克 \u002F 百度 \u002F 迅雷网盘分享链接，并通过 [Ydisks](https:\u002F\u002Fwww.ydisks.com) 后台 API 一键创建多渠道短链的桌面应用。**\n\nTauri v2 · React 19 + TypeScript · Rust + Tokio + SQLite\n\n[功能特性](#-功能特性) · [快速开始](#-快速开始) · [使用指南](#-使用指南) · [开发](#-开发) · [构建发布](#-构建发布) · [架构](#-架构概览) · [许可证](#-许可证)\n\n\u003C\u002Fdiv>\n\n---\n\n## 📌 项目简介\n\nYdisks 批量转存助手是一款跨平台桌面应用（macOS \u002F Windows），用于把分散的网盘分享链接**批量转存**到自己的网盘账号，并自动调用 [Ydisks 统计平台](https:\u002F\u002Fwww.ydisks.com) 的后台 API 为转存后的资源**批量生成多渠道短链**（小红书、抖音等渠道，可选多个短链域名）。\n\n适合需要把大量分享链接整理转存并分发到多个推广渠道的场景：导入 → 转存 → 创建短链，全程自动化，支持限流、断点续传、失败重试。\n\n> ✅ **无需 API Key 即可使用基本功能：** 网盘批量转存（导入分享链接 -> 转存到自己的网盘）只依赖你自己的网盘账号登录态，**不依赖 Ydisks**。开箱即用，无需注册、无需密钥。\n>\n> 🔗 **短链为高阶能力：** 转存后自动创建多渠道短链（小红书 \u002F 抖音等）依赖 [Ydisks 统计平台](https:\u002F\u002Fwww.ydisks.com) 后台 API。需要短链时，在设置页连接 API Key 即可解锁——未连接时任务页的「后台账号」「多渠道短链」自动禁用，转存正常进行，仅跳过短链。详见 [配置 Ydisks API Key](#3-配置-ydisks-api-key)。\n\n---\n\n## ✨ 功能特性\n\n- 🔄 **批量转存** — 支持夸克、百度、迅雷三种网盘，单条 \u002F 批量粘贴 \u002F CSV 导入分享链接，自动识别平台、提取访问码、去重。\n- 🔗 **多渠道短链** — 转存完成后自动调用 Ydisks 后台创建原始链接，并按所选渠道逐个生成短链，支持多短链域名。\n- 🧠 **智能状态机** — 本地引擎驱动批次流转（`pending → transferring → sharing → creating_original → creating_shortlink → done`），平台级串行化（同一网盘同时只跑一个批次）。\n- ⏱️ **反限流** — 转存发起间隔默认 4 秒，可按网盘平台配置（最低 3 秒，跨批次生效），间隔期由短链创建填充。\n- ⏸️ **暂停 \u002F 继续 \u002F 重试 \u002F 取消** — 批次与单条粒度的控制；取消使用应用内确认弹窗，不弹原生 `confirm`。\n- 💾 **分层持久化** — 转存间隔等具备默认值的运行参数由 Rust 写入 `config.json`，文件缺失时自动生成；账号凭证、API Key、批次与历史写入 SQLite。前端只保存主题偏好，首次运行会自动迁移旧数据。\n- 📊 **额度管理** — 短链额度本地乐观扣减 + 批次完成后与后台同步，避免高频轮询。\n- 🌗 **明暗主题** — 跟随系统 \u002F 浅色 \u002F 深色。\n- 📝 **可导出历史** — 完成批次可导出 CSV（系统原生保存对话框）。\n- 📋 **跨平台日志** — `tauri-plugin-log` 写入各平台标准日志目录，设置页一键打开。\n\n---\n\n## 🚀 快速开始\n\n### 环境要求\n\n| 依赖 | 最低版本 | 说明 |\n|------|---------|------|\n| [Node.js](https:\u002F\u002Fnodejs.org\u002F) | 20+ | 推荐 LTS；含 npm |\n| [Rust](https:\u002F\u002Fwww.rust-lang.org\u002F) | 1.75+ | `rustup` 安装，stable 通道 |\n| 系统依赖 | — | macOS 需 Xcode CLT；Windows 需 [WebView2](https:\u002F\u002Fdeveloper.microsoft.com\u002Fmicrosoft-edge\u002Fwebview2\u002F) + MSVC 构建工具 |\n\n> Tauri v2 的完整系统前置条件见官方文档：\u003Chttps:\u002F\u002Fv2.tauri.app\u002Fstart\u002Fprerequisites\u002F>\n\n### 克隆并安装\n\n```bash\ngit clone \u003C仓库地址>\ncd transfer-assistant\nnpm install            # 安装前端依赖\n```\n\nRust 依赖在首次 `npm run tauri:dev` \u002F `tauri:build` 时由 Cargo 自动拉取。\n\n### 桌面开发模式\n\n```bash\nnpm run tauri:dev      # 编译 Rust + 启动应用窗口（前端热更新）\n```\n\n> ℹ️ `npm run dev` 可单独启动前端（`http:\u002F\u002Flocalhost:5178`），但**仅用于纯前端调试**：浏览器中 `isTauriRuntime()` 为 false，网盘登录 \u002F 转存 \u002F 目录读取 \u002F 后台 API 均不可用，也不会持久化任何业务配置。完整功能请在桌面端运行。\n\n---\n\n## 📖 使用指南\n\n应用分四个页面：**任务 \u002F 状态 \u002F 历史 \u002F 设置**。下面按首次使用顺序说明。\n\n### 1. 下载安装\n\n从 GitHub Releases 下载对应平台的安装包。本项目不购买 Apple \u002F Microsoft 的公开代码签名证书。Windows 安装包使用 OpenSSL 生成的自签名证书，macOS 安装包使用 ad-hoc 签名；这些签名不能消除系统对未知发布者的提示。\n\n**macOS** - 下载 `.dmg`，把应用拖到「应用程序」。首次打开会被 Gatekeeper 拦截，任选一种解除（推荐第 1 种）：\n\n1. **双击修复脚本（最省事）** - 打开 `.dmg` 后，里面除应用外还附带一个 `macos-unblock.command`。先把应用拖到「应用程序」，再双击 DMG 里的这个脚本，自动清除隔离属性并打开应用。（脚本随 DMG 一并提供，无需单独下载。）\n2. **终端一行命令**：\n   ```bash\n   xattr -dr com.apple.quarantine \"\u002FApplications\u002FYdisks批量转存助手.app\"\n   ```\n3. **系统设置** - 先双击应用触发拦截提示，再进「系统设置 -> 隐私与安全性 -> 仍要打开」。（macOS 15 Sequoia 起，右键 -> 打开 已不再可靠，请用上述方式。）\n\n**Windows** - 运行 `.msi`（安装版）或 `.exe`（NSIS 安装包）。SmartScreen 提示「Windows 保护了你的电脑」时，点「**更多信息 -> 仍要运行**」（一次性，2 次点击）。这是未签名包的正常现象，不影响使用。\n\n> 自行构建安装包见 [构建发布](#-构建发布)。\n\n### 2. 登录网盘账号（设置 → 账号管理）\n\n在**设置页**为夸克 \u002F 百度 \u002F 迅雷分别添加账号并完成登录：\n\n| 网盘 | 登录方式 |\n|------|---------|\n| **夸克** | 弹出官方登录窗口扫码 \u002F 账号登录，自动抓取 Cookie；也支持手动粘贴 Cookie |\n| **百度** | 弹出官方登录窗口，或手动粘贴 Cookie |\n| **迅雷** | 应用内扫码登录或账号密码登录；若触发二次验证（短信 \u002F 滑块），应用会自动打开验证窗口，验证通过后自动继续登录 |\n\n登录成功后账号卡片显示「已登录」。Cookie 会过期，过期后状态变为「登录过期」，重新登录或更新 Cookie 即可。每个账号支持「检测 \u002F 粘贴 Cookie \u002F 清理会话 \u002F 删除」操作。\n\n### 3. 配置 Ydisks API Key（可选 · 设置 -> 连接状态）\n\n> 这一步是**可选**的。不配置 API Key 也能完成完整的批量转存流程，只是不会创建短链。仅当你需要「转存后自动生成多渠道短链」时才需配置。\n\n短链功能依赖 Ydisks 后台，配置 API Key 步骤：\n\n1. 前往 [Ydisks 统计平台](https:\u002F\u002Fwww.ydisks.com) 注册账号，在控制台获取 **API Key**，并确认已开通短链额度（短链上限 \u002F 已用 \u002F 剩余）。\n2. 在应用**设置页 → 后台 → 连接状态**，输入 API Key，点「**检测连接**」。\n3. 检测通过后，应用会自动拉取后台资产：\n   - **推广账号**（按网盘类型分类，用于创建原始链接）\n   - **渠道**（小红书 \u002F 抖音 等，用于生成不同渠道短链）\n   - **可用域名**（短链域名，如 `t.ydisks.cn`）\n   - **额度摘要**（剩余短链数）\n\nAPI Key 检测通过后由 Rust 保存到应用 SQLite，前端会立即清空明文输入，也不会在后续业务命令中传递密钥；下次启动通过后端返回的脱敏状态自动恢复连接。「清除密钥」会删除后端保存值。\n\n> **后端地址可覆盖：** 默认后台地址为 `https:\u002F\u002Fconsole.ydisks.com`。如需指向自建 \u002F 测试环境，设置环境变量 `YDISKS_CONSOLE_API_BASE` 后启动应用即可。\n\n### 4. 创建转存任务（任务页）\n\n1. **选择网盘账号** - 下拉选择已登录的夸克 \u002F 百度 \u002F 迅雷账号。若已连接后台，「Ydisks 后台账号」下拉会按所选网盘类型自动过滤；**未连接后台时该下拉禁用，仅转存模式**。\n2. **导入资源** — 三种方式：\n   - **单条**：直接粘贴一条分享链接（含访问码）。\n   - **批量粘贴**：多行文本，每行一条链接，可附带标题与提取码（如 `链接 提取码:9x8y`）。\n   - **CSV 导入**：按模板上传 CSV。\n\n   应用会自动识别网盘平台（`pan.quark.cn` \u002F `pan.baidu.com` \u002F `pan.xunlei.com` \u002F `cloud.xunlei.com`）、提取 4 位访问码（支持「提取码 \u002F 访问码 \u002F 密码 \u002F pwd \u002F code」标签）、为百度链接补 `pwd=` 参数、去重。\n3. **选择目标目录** — 在网盘内选择转存目标文件夹。\n4. **配置短链目标（可选）** - 已连接后台时，勾选需要生成短链的渠道并为每个渠道选择短链域名；**未连接后台时此区域禁用**，提示前往设置连接 API Key，转存照常进行。\n5. **提交** - 进入状态页监控。仅转存模式下，每条资源转存完成即标记完成，无需后台登记。\n\n### 5. 监控批次（状态页）\n\n- 查看运行中 \u002F 排队 \u002F 暂停的批次，实时进度与日志。\n- 支持 **暂停 \u002F 继续 \u002F 重试 \u002F 取消**（取消有应用内确认弹窗）。\n- 每个队列项流转：`转存中 → 分享中 → 创建原始链接 → 创建短链 → 完成`。\n- 同一网盘平台同时只跑一个批次，其余排队；转存发起间隔默认 4 秒，可在设置中按平台调整，最低 3 秒。\n\n### 6. 查看历史与导出（历史页）\n\n- 已完成 \u002F 失败的批次归档于此。\n- 点「导出 CSV」通过系统原生保存对话框导出，字段含批次信息、每条资源的状态与短链结果。\n\n---\n\n## 🔌 Ydisks 后台 API 说明\n\n应用通过 `X-API-Key` 头调用 Ydisks 后台，响应统一为 `{ code, message, data }` 信封（`code == 0` 为成功）。涉及的接口：\n\n| 用途 | 方法 | 路径 |\n|------|------|------|\n| 短链额度 | `GET` | `\u002Fapi\u002Fv1\u002Fassets\u002Fquotas` |\n| 推广账号 | `GET` | `\u002Fapi\u002Fv1\u002Fassets\u002Faccounts?page=1&page_size=100` |\n| 渠道列表 | `GET` | `\u002Fapi\u002Fv1\u002Fassets\u002Fchannels?page=1&page_size=200` |\n| 可用域名 | `GET` | `\u002Fapi\u002Fv1\u002Fassets\u002Fdomains\u002Favailable` |\n| 创建原始链接 | `POST` | `\u002Fapi\u002Fv1\u002Fassets\u002Faccounts\u002F{accountId}\u002Foriginal-links` |\n| 创建短链 | `POST` | `\u002Fapi\u002Fv1\u002Fassets\u002Flinks` |\n\n接口契约细节（请求体字段、返回结构）见源码 `src-tauri\u002Fsrc\u002Fbackend\u002F`（`client.rs` \u002F `assets.rs` \u002F `links.rs`）与类型定义 `src-tauri\u002Fsrc\u002Ftypes.rs`。完整 API 文档以 [Ydisks 平台](https:\u002F\u002Fwww.ydisks.com) 控制台为准。\n\n> 这些接口由 Ydisks 平台提供并维护，本应用仅作为客户端调用。接口的可用性、额度计费、字段变更等均由 Ydisks 平台决定。\n\n---\n\n## 🛠 开发\n\n### 常用命令\n\n| 任务 | 命令 |\n|------|------|\n| 桌面开发 | `npm run tauri:dev` |\n| 纯前端开发 | `npm run dev`（`http:\u002F\u002Flocalhost:5178`，功能受限） |\n| 前端类型检查 + 构建 | `npm run build`（`tsc && vite build`，产物 `dist\u002F`） |\n| 前端测试 | `npm test`（监听 `npm run test:watch`） |\n| 后端编译检查 | `cargo check`（在 `src-tauri\u002F` 下） |\n| 后端测试 | `cargo test`（在 `src-tauri\u002F` 下） |\n| 后端真实网络测试 | `cargo test -- --ignored`（需设 `YDISKS_LIVE_*` 环境变量） |\n\n### 测试\n\n- **前端：** Vitest + jsdom + @testing-library\u002Freact。`src\u002Flib\u002F__tests__\u002F` 覆盖解析 \u002F CSV \u002F 格式 \u002F 映射 \u002F 守卫 \u002F 引擎 \u002F 批次状态机等纯逻辑；`src\u002F__tests__\u002F` 为组件冒烟测试。\n- **后端：** 各模块内 `#[cfg(test)]` 纯函数单测（解析、签名、URL\u002FCookie 工具、DB repo 等）。真实网络用例以 `#[ignore]` 标记，需环境变量（如 `YDISKS_LIVE_BAIDU_COOKIE`）。\n\n### 项目结构\n\n```\ntransfer-assistant\u002F\n├── src\u002F                     # 前端\n│   ├── App.tsx              # 应用外壳：路由 + 模态编排 + 账号 CRUD\n│   ├── pages\u002F               # 四个页面组件\n│   ├── components\u002F          # 可复用组件（ui \u002F tables \u002F modals \u002F fields）\n│   ├── hooks\u002F               # 状态域（主题 \u002F toast \u002F API 连接 \u002F 网盘登录 \u002F 批次引擎）\n│   ├── lib\u002F                 # 纯逻辑模块（parsing \u002F engine \u002F batchReducer \u002F bridge …）\n│   └── types.ts             # 前端领域类型\n├── src-tauri\u002F               # 后端\n│   ├── src\u002F\n│   │   ├── lib.rs           # 插件装配 + generate_handler!\n│   │   ├── commands.rs      # 32 个 #[tauri::command] 包装\n│   │   ├── backend\u002F         # Ydisks 后台 API 客户端\n│   │   ├── providers\u002F       # 夸克\u002F百度\u002F迅雷 转存与目录列举\n│   │   ├── auth\u002F            # 登录窗口编排与 Cookie\u002Ftoken 抓取\n│   │   ├── import\u002F          # 分享链接解析\n│   │   ├── db\u002F              # SQLite 持久化（含迁移）\n│   │   ├── http\u002F            # reqwest 单例 + 工具\n│   │   ├── types.rs \u002F config.rs \u002F error.rs \u002F logging.rs\n│   ├── Cargo.toml\n│   └── tauri.conf.json\n├── .github\u002Fworkflows\u002F       # CI（见下）\n└── package.json\n```\n\n---\n\n## 📦 构建发布\n\n### 本地构建\n\n```bash\nnpm run tauri:build -- --bundles app     # macOS：生成 .app\nnpm run tauri:build                       # 当前平台默认安装包\n```\n\n### CI 自动构建与发版（GitHub Actions）\n\n仓库内置 `.github\u002Fworkflows\u002Fbuild.yml`，两种模式：\n\n- **push 到 `main`** - 构建三平台并逐个上传原始安装包 artifact（CI 验证 + 取最新版），**不**发 Release。\n- **手动 `workflow_dispatch`** - 注入版本号构建，完成后自动打 tag + 发 GitHub Release，安装包（`.dmg` \u002F `.msi` \u002F `.exe`）作为 Release 资产上传。在仓库 **Actions -> build -> Run workflow** 手动触发。\n\n**矩阵** - macOS Apple Silicon（`aarch64`）、macOS Intel（`x86_64`）、Windows（`x86_64`）三份并行。\n\n> Windows job 会从 GitHub Secrets 导入自签名证书并签署 `.msi\u002F.exe`，但由于证书不是公共信任证书，SmartScreen 仍可能需要点击「更多信息 -> 仍要运行」。macOS job 使用不依赖 Apple 证书的 ad-hoc 签名，不能替代 Developer ID 和公证；CI 还会通过 `hdiutil` 把双击修复脚本 `macos-unblock.command` 注入到 DMG 根目录（Tauri 无内置配置支持注入 DMG 额外文件，见 `scripts\u002Finject_dmg_extra.sh`）。\n\n### 版本管理\n\n版本号由 git 历史自动推导（`scripts\u002Fversion.mjs`），无需手动维护 patch：\n\n- **格式** - `MAJOR.MINOR.PATCH`，初始版本 `v1.0.0`。\n- **PATCH 自增** - PATCH = 自最近的基线 tag 以来的提交数。每次提交自动 +1。\n  - 例：基线 tag `v1.0.0` 之后第 3 次提交 -> 版本 `1.0.3`。\n- **MINOR \u002F MAJOR 升级** - 在目标 commit 上打一个新基线 tag（如 `v1.1.0`、`v2.0.0`），PATCH 自动归零重算。\n  - 例：打 `v1.1.0` 后第 1 次提交 -> `1.1.1`（不再延续 1.0.x）。\n- **发版流程** - 平时 push 不发版；想发版时在 Actions 手动触发 `workflow_dispatch`，CI 按当前提交推导版本、构建、打 tag `v{版本}` 并发 Release。\n- **首次发版** - 仓库尚无任何 `v*` tag 时，第一次手动发版即为 `v1.0.0`，并创建该基线 tag。\n\n仓库内的版本文件（`package.json` \u002F `tauri.conf.json` \u002F `Cargo.toml`）始终保留**基线版本**（如 `1.0.0`）；带 PATCH 的完整版本号只在发版构建时由 CI 临时注入，不回写仓库，保持提交历史干净。\n\n**升级 minor\u002Fmajor 示例：**\n\n```bash\n# 在目标 commit 上打新基线 tag 并推送（patch 从此归零重算）\ngit tag v1.1.0\ngit push Ydisks-drive-assistant v1.1.0\n# 之后在 Actions 手动触发一次发版 -> 发布 v1.1.0，后续提交自动 1.1.1、1.1.2 …\n```\n\n---\n\n## 🏗 架构概览\n\n### 前端\n\n- **`App.tsx`** — 薄外壳：页面路由 + 模态编排 + 网盘账号 CRUD。状态机逻辑下沉到 hooks，纯逻辑在 `src\u002Flib\u002F`。\n- **`src\u002Flib\u002F`** — 纯模块（带单测）：`parsing`（链接解析）、`engine`（本地批次引擎）、`batchReducer`（批次状态机纯转移）、`bridge`（唯一接触 `@tauri-apps\u002Fapi` 的模块，封装 `invoke`）、`mappers` \u002F `guards` \u002F `csv` \u002F `format` \u002F `storage`。\n- **`src\u002Fhooks\u002F`** — UI 状态域：`useApiConnection`（脱敏连接状态 \u002F 额度 \u002F 后台资产）、`useBatchEngine`（1.6s 轮询驱动批次展示与命令编排）、`useXunleiLogin`（迅雷登录交互）、`useCookieModal` \u002F `useToast` \u002F `useThemeMode`。转存限流和敏感配置均由 Rust 最终执行与保存。\n- Rust 调用全部经 `src\u002Flib\u002Fbridge.ts` 的类型化包装，每个调用由 `isTauriRuntime()` 守卫、错误经 `formatBackendError()` 归一化。\n\n### 后端\n\n`lib.rs` 只装配插件与 `generate_handler!`，32 个 `#[tauri::command]` 在 `commands.rs` 中作薄包装，业务逻辑分布：\n\n| 模块 | 职责 |\n|------|------|\n| `backend\u002F` | Ydisks 后台 API 客户端（资产 \u002F 额度 \u002F 原始链接 \u002F 短链） |\n| `providers\u002F` | 夸克 \u002F 百度 \u002F 迅雷 转存与目录列举（迅雷含纯哈希 \u002F 签名工具） |\n| `auth\u002F` | 登录窗口编排与 Cookie \u002F token 抓取 |\n| `import\u002Fparser.rs` | 分享链接解析、访问码提取、去重、额度测算 |\n| `db\u002F` | SQLite 持久化（账号 \u002F 批次 \u002F 历史，版本化迁移） |\n| `runtime_config.rs` | 后端运行配置文件的生成、校验、原子保存与内存重载 |\n| `http\u002Fclient.rs` | reqwest 单例 + JSON \u002F URL \u002F cookie 工具 |\n\n### 关键机制\n\n- **批次状态机** — 1.6s 轮询推进队列项状态，决策（「该处理哪一项」「批次是否完成」）为 `batchReducer.ts` 中的纯谓词（带单测）。\n- **平台级串行化** — 同一网盘（`quark`\u002F`baidu`\u002F`xunlei`）同时只允许一个 `running` 批次，其余排队。\n- **转存限流** — Rust 按平台共享限流状态，读取后端 `config.json` 中的间隔（默认 4 秒、最低 3 秒）；设置页修改后由 Rust 原子写盘并重新载入，前端不能绕过最低值。\n- **额度同步** — 每次 `createBackendLinks` 成功后 `deductQuotaLocally(count)` 本地乐观扣减；批次全部完成移入历史时 `syncQuotaFromBackend()` 一次校正漂移。\n\n---\n\n## ⚖️ 许可证\n\n本项目基于 [**Apache License 2.0**](.\u002FLICENSE) 开源。\n\n```\nCopyright 2025 Ydisks\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\n> **注意：** 「Ydisks」名称及 [Ydisks 统计平台](https:\u002F\u002Fwww.ydisks.com) 的后台 API、控制台等服务由 Ydisks 提供，本项目不主张其所有权。Apache 2.0 许可证仅覆盖本仓库内的源代码，不授予任何 Ydisks 商标或服务的使用权。\n\n---\n\n## 🙏 致谢\n\n- [Tauri](https:\u002F\u002Ftauri.app\u002F) — 跨平台桌面应用框架\n- [React](https:\u002F\u002Freact.dev\u002F) · [Vite](https:\u002F\u002Fvitejs.dev\u002F) · [TypeScript](https:\u002F\u002Fwww.typescriptlang.org\u002F)\n- [Tokio](https:\u002F\u002Ftokio.rs\u002F) · [reqwest](https:\u002F\u002Fdocs.rs\u002Freqwest\u002F) · [rusqlite](https:\u002F\u002Fdocs.rs\u002Frusqlite\u002F)\n- [Ydisks 统计平台](https:\u002F\u002Fwww.ydisks.com) — 短链与统计服务\n","Ydisks批量转存助手是一款跨平台桌面工具，用于将百度网盘、夸克网盘、迅雷网盘的分享链接批量转存至用户自有账号，并可选调用Ydisks平台API为转存资源一键生成适配小红书、抖音等渠道的多域名短链。核心功能包括智能链接识别与去重、分平台可配置反限流（最小3秒间隔）、断点续传、批次\u002F单条粒度控制（暂停\u002F重试\u002F取消），以及基于SQLite的本地持久化与额度同步机制。无需API Key即可完成基础转存，短链为可选增强能力。适用于内容运营、网盘资源聚合分发、社群素材管理等需高频处理多来源网盘链接的场景。","2026-08-13 02:30:08","CREATED_QUERY"]