共计 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
来进行文件管理,现在我就是这么干的。
提醒:本文发布于347天前,文中所关联的信息可能已发生改变,请知悉!