家里一直使用群晖的 NAS, 给爸妈备份照片文件什么的, 自己也能在我的荣耀盒子上装个 KODI 来看看高清影片.
电影的下载一直是个问题, 在家里要带孩子, 没什么时间去打开电脑搜索电影的下载地址, 所以就考虑能否通过远程控制家里的 NAS 做下载, 回家了就能看.
最终实现的解决方案, 个人来说非常方便, 直接通过 slack 说一句话, 把下载地址告诉它, 家里的 nas 就自动开始下载了, 完全不用人工干预.
大致流程如下:
- 用户通过 slack 的 slash command 告知需要下载的链接, 如:
/download magnet:?xt=urn:btih:xxxxxxxxxxxxxxxxxxxxxxxxx
- slack 将收到的地址 POST 给搭建好的 huginn
- huginn 将收到的消息直接发布到新的 rss feed.
- 群晖 nas 中的 Download Station 通过 RSS 订阅的方式直接开始下载.
配置 huginn
如何安装 huginn 不在本文讨论的话题, 大家可以自己去搜索, 我个人使用的是 docker 镜像部署的.
我们先创建一个 WebhookAgent:
这里其实只配置了几个地方:
- Keep events – 事件保存的时长, 我们最终要生成 rss, 如果 event 过期了, rss feed 也将不会出现这条记录. 由于我们 nas 监听 rss 的时间间隔很短, 所以这个时间并不需要特别长, 一般 1 天足矣, 我设置了 3 天.
- secret – 自定义的一个 token. huginn 发布的 webhook 的 url 中会包含这个token, 成为一个不会被别的用户随便使用的 api.
- payload_path – payload 中的有效信息的 path. 我们啥都不填, 直接就用
.
, 来表示整个 payload 我都需要.
我们收到 slack 推送过来的消息格式如下:
可以看到, payload 的数据中, 其实只有 text
是我唯一感兴趣的东西
保存之后可以得到一个 webhook 的地址, 我们需要记录它, 之后会用到.
下面我们再创建一个 DataOutputAgent:
secret 同样也是为了生成一个私有化的 feed, 可以随便填写一个.
这里注意一下, 下面的 Options 中, 我把 title / description / link / guid 都设置为 .
保存后, 可以得到一个 .xml 的地址, 也就时我们发布的 rss 地址. 我们需要记录一下这个地址后面使用.
配置 slack app
我们需要有一个用于下载服务的 app. 在 Slack Applications 页面, 我们创建一个新的 APP, 比如 Download
, 并选择好我们 workspace.
我们可以为这个 APP 定义喜欢的图标和背景色:
我们需要给这个 APP 创建一个新的 slash command, 也就是通过 /
触发的关键字命令.
我们定义了一个 /download
的命令, Request URL 填写为我们前面记录的 webhook 的 url.
群晖 nas 配置
群晖在套件中心里面有个应用叫做 Download Station, 我们先提前下载好. 先看看官方的介绍:
Download Station 是一款网页式下载应用程序,可让您通过 BT、FTP、HTTP、NZB、FlashGet、QQDL 和 eMule 从 Internet 下载文件,并订阅 RSS 源来获得最新或最热门的 BT 信息。自动解压缩服务可以在每一次下载压缩文件至 Synology NAS 时,自动进行解压缩。
这里补充一下, 还支持 magnet 链接.
配置的方法也很简单了, 先修改一下 rss feeds 的轮询时间.
之后配置一下 rss 地址即可.