分享一下自建音乐服务器更新音乐的方案


共计 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 来进行文件管理,现在我就是这么干的。

Tips:清朝云网络工作室

阅读剩余
THE END