🤖 一个分布式跨平台的,可以控制你的Aria2服务器、控制服务器文件,同时可以上传到OneDrive/Google Drive的Telegram Bot。

项目地址

https://github.com/gaowanliang/DownloadBot

意义

以下仅为本程序完成后的设想,目前描述的功能并没有完全实现,实现的详情请参考下面的功能实现

这个项目主要就是利用吃灰小盘vps进行离线下载,对于大bt文件进行根据硬盘大小分段下载,每次都下载一部分,然后上传网盘,删除再下载其他部分,直到下载完所有文件。

同时,通过机器人协议通信,方便在无法进行内网穿透的机器上进行使用,而且简化了平时使用下载程序的操作,提高了便利性。对于链接,直接向Bot发送消息就可以直接识别并下载,可以真正删除下载文件夹里的文件,是AriaNG等web面板无法做到的,作为管理下载的工具,及时通知下载完成都是非常的方便的。可以移动文件,对于通过rclone挂载硬盘的用户可以直接通过本程序进行复制粘贴等操作,无需打开ssh连接VPS进行cp操作,也非常的方便。

实现

注意:本项目仍处于测试阶段,提交的Release仅供测试,现在下载后并不保证您的稳定使用,也不能保证下面所勾选的内容已经被实现。当真正可以正常使用的时候,我会提交 V1.0 版本(V1.0 版本不会实现下面全部功能,但是已经可以正常稳定的使用)

只有已勾选的内容为目前实现的内容

下载方式

  • Aria2 控制

  • 持久化监控

  • 断线重连

  • 多下载服务器同时控制

  • 使用GRPC实现多服务器下载信息通知

  • SimpleTorrent 控制

  • qbittorrent 控制

机器人协议支持

  • Telegram Bot

  • 支持多用户使用

  • 支持群组内使用

  • 腾讯QQ(使用普通QQ用户来进行交互)

  • 钉钉机器人

功能

  • 控制服务器文件

  • 删除文件

  • 移动文件

  • 压缩文件

  • 解压文件

  • 下载文件

  • 下载 HTTP/FTP 链接

  • 下载 Magnet 链接

  • 下载 BitTorrent 文件内的文件

  • 智能 BitTorrent/Magnet 下载方式

  • 只选择下载最大的文件

  • 根据文件大小智能选择文件,不选择小文件

  • 下载OneDrive/SharePoint 分享链接中的文件(Python demo

  • xxx-my.sharepoint.com 下载链接的下载

  • 无下载密码的多文件推送

  • 有下载密码的多文件推送

  • 嵌套文件夹的文件推送

  • 任意选择文件推送

  • xxx.sharepoint.com 下载链接的下载

  • xxx-my.sharepoint.cn 下载链接的下载(理论上支持)

  • 自适应环境存储空间的 BitTorrent/Magnet 下载

  • 不下载超过存储空间的文件

  • 根据存储空间分块多次下载 BitTorrent/Magnet 内的文件

  • 根据具体的硬盘容量制定合适的下载列表

  • 无感觉化的做种功能

  • 每次下载BitTorrent/Magnet文件后,保留最后一次下载的文件进行做种,直到下一次下载开始。

  • 可设置每次下载结束后强制做种一段时间

  • 上传文件

  • 下载完成后,向 OneDrive 上传文件

  • 断点续传

  • 支持世纪互联

  • 下载完成后,向 Google Drive 上传文件

  • 自定义上传分块大小

  • 自定义上传线程数

  • 自定义超时时间

  • 下载完成后,向 Mega 上传文件

  • 下载完成后,向 天翼网盘 上传文件

  • (当使用Telegram进行通信时)下载完成后,向 Telegram 上传文件

  • 当文件超过2GB时,分块压缩后再进行上传

  • 附加其他功能

  • 多语言支持

  • 简体中文

  • 英语

  • 繁体中文

  • 日语

  • 无人值守的BT站下载

  • Nyaa

  • ThePirateBay

  • 其他功能

  • 文件树输出系统

  • 对于简单文件夹的文件树输出

  • 对于复杂文件夹结构使用多消息输出

  • 通过演员ID获取在DMM中使用的所有CID

  • 查询 "ikoa"中的影片参数(利用mahuateng)

  • 通过javlibary演员网址获得所有演员的编号。

  • 查询dmm cid信息、预览影片、预览图片。

  • 在sukebei中按关键词搜索。

  • 根据关键词在dmm中搜索,最多30项。

  • 输入dmm链接,列出所有项目。

  • 搜索当前dmm热门和最新电影,限制30条(测试版)

目前特点

  1. 完全基于触摸,更容易使用,使用这个机器人基本不需要命令。

  2. 实时通知,使用Aria2的Websocket协议进行通信。

  3. 更好的配置文件支持。

开始

  1. 通过 @BotFather 创建您自己的bot并使用。

  2. (可选)您所在地区/国家的Telegram被封锁?一定要有一个 HTTP proxy启动并运行,您可以设置您的系统环境变量HTTPS_PROXY为代理地址来进行代理。

  3. 下载本程序

  4. 在想要执行本程序的根目录配置config.json

  5. 运行可执行文件./DownloadBot./DownloadBot.exe

配置过程

  1. 安装go语言

sudo apt-get update
sudo apt-get install golang-go
  1. 克隆 DownloadBot 存储库

cd $HOME/Downloads
git clone https://github.com/gaowanliang/DownloadBot.git
  1. 设置配置

cat $HOME/aria2/aria2.conf
  1. 配置文件

vim config.json

将下面的所有内容复制到config.json并使用您自己的值进行编辑。

{
"aria2-server": "ws://127.0.0.1:6800/jsonrpc",
"aria2-key": "xxxxxxxx",
"bot-key": "123456789:xxxxxxxxx",
"user-id": "123456789",
"max-index": 10,
"sign":"Main Aria2",
"language":"en",
"downloadFolder":"/home/user/aria2/Aria2Data",
"moveFolder":"/home/user/aria2/GoogleDrive"
}

您只需填写以下内容:

"aria2-key" # from $HOME/aria2/aria2.conf
"bot-key" # from @BotFather (Telegram)
"user-id" # from @userinfobot (Telegram)
"downloadFolder" # create folder
"moveFolder" # create folder

您还需要为downloadFolder&moveFolder使用创建两个文件夹mkdir。例如:

mkdir $HOME/Downloads/Aria2Data # downloadFolder
mkdir $HOME/Downlaods/GoogleDrive # moveFolder

各项的对应说明在下面!!!

  1. 构建下载机器人

最后一部分,您需要构建 DownloadBot 并运行它。

(1)构建程序:go build

(2)添加运行 DownloadBot 所需的权限:sudo chmod u+x ./DownloadBot

(3)运行 DownloadBot:./DownloadBot运行 DownloadBot

go build
sudo chmod u+x ./DownloadBot
./DownloadBot

配置文件示例及说明

{
  "input": {
    "aria2": {
      "aria2-server": "ws://127.0.0.1:6800/jsonrpc",
      "aria2-key": "123456"
    }
  },
  "output": {
    "telegram": {
      "bot-key": "",
      "user-id": ""
    }
  },
  "max-index": 10,
  "sign": "Main Aria2",
  "language": "en",
  "downloadFolder": "/root/download",
  "moveFolder": "/root/upload",
  "server": {
    "isServer": true,
    "isMasterServer": true,
    "serverHost": "127.0.0.1",
    "serverPort": 23369
  },
  "log": {
    "logPath": "",
    "errPath": "",
    "level": "info"
  }
}

各项对应解释

  • input: 输入端,目前仅支持aria2

    • aria2-server:aria2服务器地址,默认使用websocket连接。如果要使用websocket连接aria2,请务必设置aria2.conf内的enable-rpc=true

    。如果不是必须,请尽量设置本地的aria2地址,以便于最大化的使用本程序

    • aria2-key:aria2.confrpc-secret的值

  • output: 输出端,目前仅支持telegram

  • bot-key:Telegram Bot的标识,通过 @BotFather进行获取。

  • user-id:管理员的ID,支持设置多用户为管理员,不同的用户之间使用半角逗号,分割。如您要设置user-id为123465789、987654321和963852741的用户为管理员,您需要这样设置:

{
  //···
  "user-id": "123456789",
  //···
}
  • max-index:下载信息最大显示数量,建议10条(以后会改进)

  • sign:此机器人的标识,如果需要多个服务器连接同一个机器人,通过这一项可以确定具体是哪一台服务器

  • language:机器人输出的语言

  • downloadFolder:Aria2下载文件保存的地址。如果不使用,请输入""

  • moveFolder: 要将下载文件夹的文件移动到的文件夹。如果不使用,请输入""

  • server:服务器配置

    • isServer:是否开启服务器(false为客户端)

    • isMasterServer:是否为主服务器

    • serverHost:如果是客户端,此项需要填写服务器地址,如果是主服务器,此项为本机地址

    • serverPort:如果是客户端,此项需要填写服务器端口,如果是主服务器,此项为提供给客户端的端口

  • log:日志配置

    • logPath:日志文件保存地址,如果不使用,请输入""(目前不支持)

    • errPath:错误日志文件保存地址,如果不使用,请输入""(目前不支持)

    • level:日志等级,可选项为debuginfowarnerrorfatal,默认为info

目前支持的语言及语言标签

语言

标签

英语

en

简体中文

zh-CN

繁体中文

zh-TW

当您在config.json中填写上面语言的标签的时候,程序会自动下载语言包

关于user-id

如果您不知道您的 user-id ,可以将此项留空,在运行这个机器人后输入/myid,此机器人就会返回您的user-id.