Skip to content
This repository was archived by the owner on Jun 7, 2026. It is now read-only.

Latest commit

 

History

History
306 lines (235 loc) · 9.39 KB

File metadata and controls

306 lines (235 loc) · 9.39 KB

115Quick 项目已废弃,同功能项目请访问我的另一个项目https://github.com/ddc-111/115LocalNatManager

115Quick 是一个基于 115 网盘 API 的离线下载服务,允许用户在自己的服务器上部署,通过 115 网盘进行磁力链接的离线下载,并自动将下载完成的文件保存到指定位置。

功能特点

  • 🧲 支持磁力链接离线下载
  • 🔄 自动轮询检查下载状态
  • 📥 自动下载完成文件到指定位置
  • 🌐 支持公网和内网访问
  • ⚡ 简单易用的 API 接口
  • 🖥️ 支持 Windows、Linux、Mac 等多平台
  • 🔌 提供 Chrome 插件支持
  • 💾 SQLite 本地数据存储
  • 🗂️ 支持 SMB 网络存储(NAS、Windows 共享等)
  • 🔍 页面磁力链自动检测 - 浏览任意网页时自动识别磁力链接
  • ⬇️ 一键推送下载 - 在磁力链接旁显示悬浮按钮,点击即推送到 115 离线下载
  • 🔔 推送状态提示 - 推送成功/失败时显示 Toast 通知

安装使用

macOS 安装(推荐)

macOS 用户可以使用一键安装脚本,自动完成安装并配置为系统服务(开机自启)。

一键安装

curl -fsSL https://raw.githubusercontent.com/ddc-111/115quick/main/scripts/install-macos.sh | bash

安装完成后:

  • 服务自动启动,开机自启
  • 配置文件:~/.config/115quick/quick.yaml
  • 数据目录:~/.local/share/115quick
  • 访问地址:http://localhost:8889

检查更新

curl -fsSL https://raw.githubusercontent.com/ddc-111/115quick/main/scripts/check-update.sh | bash

管理服务

# 停止服务
launchctl stop com.115quick.server

# 启动服务
launchctl start com.115quick.server

# 重启服务
launchctl restart com.115quick.server

其他平台安装

从 Release 下载

  1. Release 页面下载对应平台的压缩包:
    • 115quick-darwin-amd64.tar.gz - macOS Intel
    • 115quick-darwin-arm64.tar.gz - macOS Apple Silicon (M1/M2/M3)
    • 115quick-linux-amd64.tar.gz - Linux x86_64
    • 115quick-linux-arm64.tar.gz - Linux ARM64
    • 115quick-windows-amd64.tar.gz - Windows
  2. 解压后修改 etc/quick.yaml 配置文件

配置

编辑 etc/quick.yaml

Name: quick
Host: 0.0.0.0
Port: 8889
DBPath: data/115quick.db
Auth115:
  DownloadPath: data
  AccessToken: "你的AccessToken"
  RefreshToken: "你的RefreshToken"
SMB:
  Enabled: false
  Host: ""
  Share: ""
  Username: ""
  Password: ""
  MountPoint: ""

SMB 网络存储配置

SMB 功能允许将下载文件直接保存到网络共享存储(如 NAS、Windows 共享文件夹等)。

通过 Chrome 插件配置(推荐)

  1. 打开 Chrome 插件,进入「设置」页面
  2. 找到「SMB 网络存储」配置区域
  3. 开启 SMB 开关
  4. 填写配置信息:
    • SMB 服务器地址: NAS 或共享服务器的 IP 地址或主机名
    • 共享名称: 共享文件夹名称
    • 用户名: 访问共享的用户名(匿名访问可留空)
    • 密码: 访问密码(无密码可留空)
    • 挂载点:
      • Linux/Mac: 本地目录路径,如 /mnt/smb/Volumes/share
      • Windows: 盘符,如 Z:Y:
  5. 点击「测试连接」验证配置是否正确
  6. 点击「保存配置」应用设置

通过配置文件配置

SMB:
  Enabled: true
  Host: "192.168.1.100"
  Share: "downloads"
  Username: "user"
  Password: "password"
  MountPoint: "/mnt/smb"

系统要求

  • Linux: 需要安装 cifs-utils 包 (sudo apt install cifs-utils)
  • macOS: 系统自带 SMB 支持
  • Windows: 系统自带 SMB 支持,使用盘符作为挂载点

注意事项

  1. 确保服务器有权限访问 SMB 共享
  2. 挂载点目录会自动创建
  3. 如果 SMB 连接失败,下载将使用默认的本地路径
  4. 配置保存在数据库中,重启服务后会自动尝试挂载

获取 Token

  1. 登录 115 网盘开放平台获取 OAuth 应用的 AccessToken 和 RefreshToken
  2. 将获取到的 Token 填入配置文件

启动服务

# Windows
115quick.exe

# Linux/Mac
./115quick

# 指定配置文件
./115quick -f etc/quick.yaml

安装 Chrome 插件

  1. 从 Release 下载 Chrome 插件压缩包并解压
  2. 打开 Chrome 浏览器,进入 chrome://extensions/
  3. 开启「开发者模式」
  4. 点击「加载已解压的扩展程序」,选择解压后的目录
  5. 在插件选项中设置服务器地址(如 http://localhost:8889

Chrome 插件功能

管理面板

点击浏览器工具栏的 115Quick 图标打开管理面板,包含:

  • 仪表盘: 查看服务器状态、Token 状态、下载进度
  • 下载列表: 查看当前下载任务和云下载任务
  • 任务历史: 查看历史下载记录
  • Token 配置: 设置 115 网盘 AccessToken 和 RefreshToken
  • 设置: 配置下载模式、SMB 存储、重命名工具

页面磁力链检测

插件会自动在所有网页上检测磁力链接:

  1. 自动扫描: 页面加载时自动扫描所有磁力链接
  2. 动态监听: 页面动态加载内容时自动检测新增的磁力链
  3. 悬浮按钮: 在检测到的磁力链接旁边显示「⬇ 推送下载」按钮
  4. 一键推送: 点击按钮立即将磁力链接推送到 115 离线下载
  5. 状态反馈:
    • 推送中:按钮显示「推送中...」
    • 成功:按钮变为绿色显示「已推送」,右上角弹出绿色 Toast
    • 失败:按钮显示「重试」,右上角弹出红色 Toast 错误信息

使用示例

在任意包含磁力链接的网页上(如 BT 种子网站、论坛等):

magnet:?xt=urn:btih:abcdef1234567890... [⬇ 推送下载]

点击「推送下载」按钮后:

  • ✅ 成功:「磁力链接已推送到115下载」
  • ❌ 失败:「推送失败: 错误信息」

API 接口

所有接口前缀:/v1/Download

方法 路径 说明
POST /api/addDownloadLink 提交磁力链接
GET /api/getServerInfo 获取服务器状态
POST /api/setDownloadMode 设置下载模式 (0=仅视频, 1=全部)
POST /api/StartReName 触发文件重命名
POST /api/setToken 设置 115 AccessToken 和 RefreshToken
GET /api/getTokenStatus 获取 Token 状态
GET /api/getDownloadProgress 获取当前下载进度
GET /api/getCloudTasks 获取云下载任务列表
GET /api/getTaskHistory 获取任务历史(分页)
POST /api/removeDownloadTask 删除待下载任务
POST /api/refreshTasks 手动刷新云任务列表
GET /api/getSMBConfig 获取 SMB 配置
POST /api/setSMBConfig 设置 SMB 配置
POST /api/testSMBConnection 测试 SMB 连接

示例

# 添加下载任务
curl -X POST http://localhost:8889/v1/Download/api/addDownloadLink \
  -H "Content-Type: application/json" \
  -d '{"downloadLink": "magnet:?xt=urn:btih:..."}'

# 获取服务器状态
curl http://localhost:8889/v1/Download/api/getServerInfo

# 配置 SMB
curl -X POST http://localhost:8889/v1/Download/api/setSMBConfig \
  -H "Content-Type: application/json" \
  -d '{"enabled": true, "host": "192.168.1.100", "share": "downloads", "username": "user", "password": "pass", "mountPoint": "/mnt/smb"}'

# 测试 SMB 连接
curl -X POST http://localhost:8889/v1/Download/api/testSMBConnection \
  -H "Content-Type: application/json" \
  -d '{"host": "192.168.1.100", "share": "downloads", "username": "user", "password": "pass"}'

从源码构建

环境要求

  • Go 1.24+
  • Node.js 20+(构建 Chrome 插件)

构建服务端

go build -o 115quick .

构建 Chrome 插件

cd plugin/115Quick
npm install
npm run build
# 构建产物在 dist 目录

项目结构

.
├── quick.go                    # 入口文件
├── etc/
│   └── quick.yaml              # 配置文件
├── internal/
│   ├── config/                 # 配置结构
│   ├── handler/                # HTTP 处理器
│   ├── logic/                  # 业务逻辑
│   ├── svc/                    # 核心服务
│   │   ├── servicecontext.go   # 服务上下文
│   │   ├── auth115.go          # 115 API 客户端
│   │   └── store.go            # SQLite 存储
│   ├── types/                  # 类型定义
│   └── utils/
│       └── smb/                # SMB 网络存储工具
├── plugin/
│   └── 115Quick/               # Chrome 插件源码
│       ├── src/
│       │   ├── content/        # Content Script (页面磁力链检测)
│       │   ├── background/     # Background Script (消息处理)
│       │   ├── views/          # 管理面板页面
│       │   ├── api/            # API 接口封装
│       │   └── stores/         # 状态管理
│       └── manifest.json       # 插件配置
└── .github/
    └── workflows/
        └── release.yml         # GitHub Actions 发布流水线

注意事项

  1. 请确保服务器有足够的存储空间
  2. 请遵守 115 网盘的使用条款
  3. 所有数据存储在本地 SQLite 数据库中
  4. 使用 SMB 网络存储时,请确保网络连接稳定
  5. Chrome 插件需要在「设置」中配置服务器地址后才能使用页面推送功能

许可证

MIT License