结合 huginn 实现 nas 远程控制自动下载

家里一直使用群晖的 NAS, 给爸妈备份照片文件什么的, 自己也能在我的荣耀盒子上装个 KODI 来看看高清影片.

电影的下载一直是个问题, 在家里要带孩子, 没什么时间去打开电脑搜索电影的下载地址, 所以就考虑能否通过远程控制家里的 NAS 做下载, 回家了就能看.

最终实现的解决方案, 个人来说非常方便, 直接通过 slack 说一句话, 把下载地址告诉它, 家里的 nas 就自动开始下载了, 完全不用人工干预.

大致流程如下:

  1. 用户通过 slack 的 slash command 告知需要下载的链接, 如:

/download magnet:?xt=urn:btih:xxxxxxxxxxxxxxxxxxxxxxxxx

  1. slack 将收到的地址 POST 给搭建好的 huginn
  2. huginn 将收到的消息直接发布到新的 rss feed.
  3. 群晖 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 地址即可.

原文链接:
https://www.shanhh.com/download-with-slack-and-nas/

发表回复