62 Star 557 Fork 172

acgist / snail

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
API.md 5.88 KB
一键复制 编辑 原始数据 按行查看 历史
acgist 提交于 2023-09-22 08:22 . [*] 修改文档描述

开发帮助

下载协议

功能 描述
添加下载协议 Protocol
注册下载协议 ProtocolContext.register(protocol);
下载器适配器 Downloader
单文件下载器 MonofileDownloader
多文件下载器 MultifileDownloader

任务管理

功能 方法 说明
任务状态 ITaskSession.getStatusValue(); 下载状态或者下载速度
开始任务 ITaskSession.start();
暂停任务 ITaskSession.pause();
删除任务 ITaskSession.delete();

添加任务

final Snail snail = SnailBuilder.newBuilder()
// 启用指定下载协议
//    .enableFtp()
//    .enableHls()
//    .enableHttp()
//    .enableMagnet()
//    .enableTorrent()
// 启用所有下载协议
    .enableAllProtocol()
// 加载已有下载任务
    .loadTask()
// 启动系统服务监听
    .application()
// 同步创建
    .buildSync();
// 添加下载
snail.download("下载链接");
// 等待下载完成
snail.lockDownload();

添加BT任务

final String torrentPath = "种子文件";
final Snail snail = SnailBuilder.newBuilder()
    .enableTorrent()
    .buildSync();
// 注册文件选择事件
GuiContext.register(new MultifileEventAdapter());
// 解析种子文件
final Torrent torrent = TorrentContext.loadTorrent(torrentPath);
// 过滤下载文件
final List<String> list = torrent.getInfo().files().stream()
    .filter(TorrentFile::notPaddingFile)
    .map(TorrentFile::path)
    .filter(path -> path.endsWith(".mkv"))
    .collect(Collectors.toList());
// 设置下载文件
MultifileEventAdapter.files(DescriptionWrapper.newEncoder(list).serialize());
// 添加下载
snail.download(torrentPath);
// 等待下载完成
snail.lockDownload();

消息通知

系统消息和系统通知是使用B编码的类型消息,每条消息含有类型type和主体body

d4:type4:TEXT4:body7:messagee

通过socket连接系统端口16888发送系统消息和接收系统通知

系统消息(ApplicationMessage#Type)

通过系统消息可以实现系统管理和任务管理

名称 类型 请求主体 响应主体
GUI注册 GUI - SUCCESS/失败原因
文本消息 TEXT 文本 文本
关闭连接 CLOSE - -
唤醒窗口 NOTIFY - -
关闭程序 SHUTDOWN - -
新建任务 TASK_NEW 新建任务请求主体 SUCCESS/失败原因
任务列表 TASK_LIST - 任务列表响应主体
开始任务 TASK_START 任务ID SUCCESS/失败原因
暂停任务 TASK_PAUSE 任务ID SUCCESS/失败原因
删除任务 TASK_DELETE 任务ID SUCCESS/失败原因

新建任务请求主体

B编码Map

名称 必要 描述
url 下载链接或者种子路径
files 选择下载文件列表

任务列表响应主体

B编码List<Map>

名称 必要 描述
id 任务ID
createDate 创建时间
modifyDate 修改时间
name 任务名称
type 任务协议
fileType 文件类型
file 文件路径或目录路径
url 下载链接
torrent 种子文件路径
status 任务状态
size 文件大小
completedDate 完成时间
description 下载描述
payload 任务负载
statusValue 下载状态

√=必要、○-可选

系统通知(ApplicationMessage#Type)

系统事件通知

名称 类型 主体
显示窗口 SHOW -
隐藏窗口 HIDE -
窗口消息 ALERT 窗口消息和提示消息主体
提示消息 NOTICE 窗口消息和提示消息主体
选择下载文件 MULTIFILE 文件选择消息主体
刷新任务列表 REFRESH_TASK_LIST -
刷新任务状态 REFRESH_TASK_STATUS 任务状态消息主题
响应消息 RESPONSE 文本

窗口消息和提示消息主体

B编码Map

名称 必要 描述
type 类型
title 标题
message 内容

文件选择消息主体

B编码Map

名称 必要 描述
path 路径
length 大小

任务状态消息主题

B编码Map

名称 必要 描述
id 任务ID
status 任务状态

种子下载通知流程

如果TASK_NEW消息包含下载文件files直接下载,如果没有则会发送MULTIFILE通知,同时等待包含filesTASK_NEW消息。

启动模式

启动参数

参数 默认 描述
mode native native:本地GUI;extend:扩展GUI;

扩展GUI使用参考后台模式

java -server -Xms128m -Xmx256m -jar snail.javafx-{version}.jar mode=[native|extend]

后台模式

后台模式运行不使用本地GUI,可以通过系统消息系统通知来完成系统管理和任务管理,方便扩展第三方非Java语言GUI。

GUI事件(GuiEvent#Type)

名称 类型 系统通知 详细描述 适配器
显示窗口 SHOW SHOW 显示窗口 ShowEventAdapter
隐藏窗口 HIDE HIDE 隐藏窗口 HideEventAdapter
退出窗口 EXIT - 退出系统(静默处理) ExitEventAdapter
新建窗口 BUILD - 阻塞系统(静默处理) BuildEventAdapter
窗口消息 ALERT ALERT 窗口消息 AlertEventAdapter
提示消息 NOTICE NOTICE 提示消息 NoticeEventAdapter
选择下载文件 MULTIFILE MULTIFILE 选择下载文件 MultifileEventAdapter
刷新任务列表 REFRESH_TASK_LIST REFRESH_TASK_LIST 添加任务、删除任务 RefreshTaskListEventAdapter
刷新任务状态 REFRESH_TASK_STATUS REFRESH_TASK_STATUS 开始任务、暂停任务、完成任务 RefreshTaskStatusEventAdapter
响应消息 RESPONSE RESPONSE 操作响应消息 ResponseEventAdapter

测试数据

测试数据

Java
1
https://gitee.com/acgist/snail.git
git@gitee.com:acgist/snail.git
acgist
snail
snail
master

搜索帮助