共计 2189 个字符,预计需要花费 6 分钟才能阅读完成。
之前搭建了 Navidrome 服务器,不了解的可以看这篇文章 Docker 搭建音乐服务器 Navidrome。并且之前的方案一直是使用开心版的酷我音乐下载歌曲,下好以后放在指定目录,再通过 windows 上的 musictag 软件刮削歌词和封面,再通过 syncthing 进行文件同步,再重启 Navidrome。
然而,偶尔听见一首喜欢的歌,想要下载放到音乐服务器上,都需要这样操作有点麻烦。还有一点更重要的是,刮削需要通过 windows 软件来操作有点麻烦。于是我现在的方案就是,通过 aria2 进行下载到指定目录,再通过 music-tag-web 进行手动刮削即可。
当然,需要下载的文件哪里来呢?答案是通过两个 tg 机器人配合,Let's Music 机器人可以获得想要下载的文件,TgFileurl 可以将 tg 文件转发得到 http 连接。
还有有问题的小明又问了,我连 aria2 图形界面我也不想打开,又要怎么办?这个时候就用到了 webhook,先将脚本放在服务器上,通过传递文件名给脚本,让脚本发起 aria2 的 rpc 请求。具体如何搭建 webhook,请看 Docker 搭建 webhook - 调用接口即可运行本地脚本。
配置文件:
- id: aria2
execute-command: "/hooks/aria2.sh"
command-working-directory: "/hooks/"
include-command-out-in-response-on-error: true
pass-arguments-to-command:
- source: url
name: url
脚本内容:
#!/bin/bash
set -x
url=$1
# 这个可以通过 ariang 页面,f12 获取
curl -d "{\"jsonrpc\":\"2.0\",\"method\":\"aria2.addUri\",\"id\":\"QXJpYU5nXzE3MTk5Nzc4XDFfMC41MDg4MjcxMjQzMzIyMDU2\",\"params\":[\"token:123456\",[\"${url}\"],{}]}" https://xxx.com/jsonrpc
# 等下载完重启服务器
sleep 10
docker restart navidrome
这样的话只需要获取到 mp3 的 http 链接,然后调用 webhook,将 http 地址当作 url 传递即可。
然后整体的 docker-compose 文件如下:
version: '3.1'
services:
navidrome:
image: deluan/navidrome:0.51.1
container_name: navidrome
ports:
- 4533:4533
environment:
- ND_LOGLEVEL=info
volumes:
- /home/docker/navidrome/data:/data
- /home/docker/navidrome/music:/music
restart: always
aria2:
image: superng6/aria2:webui-latest
container_name: aria2
environment:
- SECRET=123456
- CACHE=512M
ports:
- "32516:32516"
- "32516:32516/udp"
- "6800:6800"
- "8080:8080"
volumes:
- /home/docker/aria2/config:/config
- /home/docker/aria2/downloads:/downloads
- /home/docker/navidrome/music/mp3:/downloads/mp3
music-tag:
image: xhongc/music_tag_web:2.1.1
container_name: music-tag
restart: always
ports:
- "8002:8002"
volumes:
- /home/docker/music-tag/data:/app/data
- /home/docker/navidrome/music/mp3:/app/media
webhook:
container_name: webhook
image: hausen1012/webhook
ports:
- 9000:9000
volumes:
- /home/docker/webhook/config:/etc/webhook
- /home/docker/webhook/hooks:/hooks
- /usr/bin/docker:/usr/bin/docker
- /run/docker.sock:/var/run/docker.sock
command: ["-verbose", "-hooks=/etc/webhook/hooks.yaml", "-hotreload"]
对了 music-tag-web
需要激活 v2 版本才有自动刮削功能,有需要的可以支持一下作者,这款软件还是挺好用的。否则可能需要手动刮削,不过即使不手动,下载好使用音流同步一下也是能听的,只不过没有歌词而已。
至于一些细节问题,可以自行处理。比如设置反代,还有 aria2 的远程调用需要的密码,设置下载的文件夹等等。其实还可以通过 filebrowser
来进行文件管理,现在我就是这么干的。