一款命令行网易云音乐软件go-musicfox使用

之前一直在使用的网易云音乐是一个 electron 项目 electron-netease-cloud-music ,但是在 arch 上经常出现登录失败或者退出软件再打开必须重新登录,最近听到群友说的 go-musicfox 项目,之前也用过,但是是看的B站 C先生 视频 https://www.bilibili.com/video/BV1mY4y1f7mx ,配置 mpdncmpcpp 结合在一起使用,当时研究过,但是因为 go-musicfoxmpris 支持非常差,我又比较喜欢桌面歌词,所以当时放弃了,今天又研究了一下,记录一下配置过程和一些坑。

go-musicfox 是用 Go 写的又一款网易云音乐命令行客户端,支持各种音质级别、UnblockNeteaseMusic、Last.fm、MPRIS 和 macOS 交互响应(睡眠暂停、蓝牙耳机连接断开响应和菜单栏控制等)等功能特性。

archlinux 上安装 go-musicfox有一些需要注意的,由于 aur 上的 go-musicfox截止当前时间 2023-12-08 不是最新版的,虽然 archlinuxcn 源的是最新版的,但是无法使用内置的 LastFM 功能,所以如果要使用当前最新版 4.3.0 并且使用LastFM的按照我下面的步骤安装,如果不需要直接安装 cn源的go-musicfox包即可。

  • 先将 aur 仓库克隆下来: git clone https://aur.archlinux.org/go-musicfox-bin.git
  • 然后进入 go-musicfox-bin目录,执行:curl https://pastebin.com/raw/g9JAYit6 > PKGBUILD.diff 下载最新版的文件差异,然后合并到原本的 PKGBUILD 文件执行: patch PKGBUILD < PKGBUILD.patch 更新到最新版本,在这之后还有一个坑,因为这个包编译使用的 flac版本是1.3的,arch 的已经1.4了,所以还需要下载 aur 的 flac1.3 这个包 yay -S flac1.3 ,下载安装后再打包这个 go-musicfox-bin ,执行 makepkg -si ,安装即可,安装成功后就可以直接使用所以功能。

上面的操作完毕已经可以正常使用,终端输入 musicfox,因为 go-musicfox-bin支持使用mpd 作为后端,所以下面介绍配合 mpd 使用。如果只是使用go-musicfox不需要看下面的配置,下面使用mpd体验非常差!!仅仅是一个尝试

MPD(Music Player Daemon,音乐播放器守护进程)是一个服务器-客户端架构的音频播放器。占用极少资源的同时有着播放音频、管理播放列表和音乐等功能。与它进行交互需要一个单独的 客户端

可以参考 ArchWiki-Music Player Daemon 介绍来配置,先安装mpd包, sudo pacman -S mpd ,创建配置文件夹 :

mkdir ~/.config/mpd
cp /usr/share/doc/mpd/mpdconf.example ~/.config/mpd/mpd.conf  ##复制默认配置自定义,也可以查直接使用我下面写的配置
mkdir ~/.config/mpd/playlists
mkdir ~/.local/state/mpd

下面的是我配置文件,我使用pipewire,所以下面的 audio_output部分使用的是 pipewire,如果你是 pulse audio用户使用我注释的那一段,这里还有个坑,pipewire用户还需要装一个包sudo pacman -S pipewire-pulse包,否则 go-musicfox无法播放音乐,会闪退。

~/.config/mpd/mpd.conf配置文件:

music_directory		"~/Music"

playlist_directory		"~/.config/mpd/playlists"

db_file			"~/.config/mpd/database"

log_file			"~/.config/mpd/log"

pid_file			"~/.config/mpd/pid"

sticker_file			"~/.config/mpd/sticker.sql"

bind_to_address		"127.0.0.1"

bind_to_address		"~/.config/mpd/socket"

port				"6600"

log_level			"notice"

input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}

#audio_output {
#        type            "pulse"
#        name            "pulse audio"
#}
audio_output {
        type            "pipewire"
        name            "PipeWire Sound Server"
}
filesystem_charset		"UTF-8"

上面的配置完后现在可以配置go-musicfox了,配置文件在~/.config/go-musicfox/go-musicfox.ini文件,修改[Player]段下的engine,默认是beep,修改成 mpd,然后紧接着下面的 mpd 配置:

# mpd配置
mpdBin=/usr/bin/mpd
# !!!注意!!! 一定要在配置文件中设置pid_file,否则在退出时不会kill掉mpd进程
mpdConfigFile=${HOME}/.config/mpd/mpd.conf
# tcp 或 unix
mpdNetwork=tcp
# tcp时填写ip+port(例如:127.0.0.1:1234),unix时填写socket文件路径
mpdAddr=127.0.0.1:6600

修改后重启 go-musicfox程序即可,这个配置文件自定义的样式挺多,你也可以修改下载目录、音质等配置。

再次提醒 go-musicfox使用 mpd效果非常差,我遇到过无数次无法播放或者播放有杂音的情况,推荐使用默认的beep,后面的作为一个了解即可。

最终效果:

Screenshot_20231208_212254.png
LastFM 截图:
图片.png