为了解决一些体验问题,该项目已使用go进行重写——go-musicfox,该仓库停止维护...
// TODO 优化
// 1. 电台-我的订阅 登录校验
// 2. 心动模式从当前歌曲开始
// 3. 随机播放保存历史播放列表
给个star✨吧
musicfox是一款使用Dart编写的网易云音乐命令行程序。
感谢以下项目及其贡献者们(不限于):
- Mac:
brew update musicfox
- Linux或Windows: 下载最新的可运行文件
必须先安装mpg123
提供两种方式安装:
- 使用brew安装:
brew tap anhoder/musicfox && brew install musicfox
- 直接下载Mac可执行文件,在iTerm或Terminal中打开
Mac下默认使用AppleScript发送通知。如下:
如果想要更好的通知体验,可以安装terminal-notifier
:
brew install terminal-notifier
效果如下:
- Arch Linux
从AUR安装 musicfox
# 使用 AUR helper
# yay
yay -S musicfox
# pikaur
pikaur -S musicfox
# 手动安装
git clone https://aur.archlinux.org/musicfox.git
cd musicfox
makepkg -si
- 直接下载Linux可执行文件,在终端中执行。
本人没有Linux系统,该执行文件是在WSL2(Ubuntu 2004)下打包的,不保证其他Linux系统也能正常使用
Linux可以安装libnotify-bin
来使用通知功能(未经测试)
Windows下存在几个已知问题,暂时没有解决方法:
- 暂停时会延迟几秒,播放时不会延迟
- 登录或搜索输入时,会吞掉第一个字符
- 上、下、左、右及ESC键无法监听,只能使用字母代替这些操作
- 命令行窗口大小发生变化后,UI会变乱(因为Windows不支持resize事件)
推荐在WSL下使用,WSL的声音转发可以参考我的另一个项目
下载Windows可执行文件,在命令行中运行即可。
推荐使用Windows Terminal
Windows下可以安装notifu
实现通知,体验不太好(没找到其他更好的通知工具)
$ musicfox
按键 | 作用 | 备注 |
---|---|---|
h/H/LEFT | 左 | Windows只能使用h |
l/L/RIGHT | 右 | Windows只能使用l |
k/K/UP | 上 | Windows只能使用k |
j/J/DOWN | 下 | Windows只能使用j |
q/Q | 退出 | Windows只能使用q |
space | 暂停/播放 | |
[ | 上一曲 | |
] | 下一曲 | |
- | 减小音量 | |
= | 加大音量 | |
n/N/ENTER | 进入选中的菜单 | Windows只能使用n |
b/B/ESC | 返回上级菜单 | Windows只能使用b |
w/W | 退出并退出登录 | Windows只能使用w |
p | 切换播放方式 | |
P | 心动模式(仅在歌单中时有效) | Windows下使用o |
, | 喜欢当前播放歌曲 | |
< | 喜欢当前选中歌曲 | Windows下使用; |
. | 当前播放歌曲移除出喜欢 | |
> | 当前选中歌曲移除出喜欢 | Windows下使用' |
/ | 标记当前播放歌曲为不喜欢 | |
? | 标记当前选中歌曲为不喜欢 | Windows下使用\ |
- 我的歌单
- 每日推荐歌曲
- 每日推荐歌单
- 私人FM
- 歌词显示
- 欢迎界面
- 搜索
- 按歌曲
- 按歌手
- 按歌词
- 按歌单
- 按专辑
- 按用户
- 排行榜
- 精选歌单
- 最新专辑
- 热门歌手
- 云盘
- 播放方式切换
- 喜欢/取消喜欢
- 心动模式/智能模式
- 音乐电台
- 将部分设置转化为文件可配置
- 欢迎界面的欢迎语
- 欢迎界面时长
- 主题色
- 歌词显示行数
- ...
在该项目的开发过程中,我将一些通用的功能模块单独抽离出来,做成了几个伴生项目:
- mp3_player: dart命令行调用mpg123播放音乐
- colorful_cmd: 使用dart实现的一些命令行UI组件,如:WindowUI命令行窗口应用UI、RainbowProgress彩虹进度条、NotifierProxy三大平台通知代理、ColorText颜色文本...
- netease_music_request: Dart实现的网易云音乐接口库,使用Dio发起请求,CookieJar管理Cookie信息
在开始这个项目的之前,其实是已经有一个基于命令行的网易云音乐项目——musicbox。
我也使用它听了很长一段时间的歌了,其中还贡献过一些代码,修复几个小问题。那为什么还要重新造一个轮子呢?
原因:
- musicbox有一些我特别想要的功能是没有的
- musicbox是使用python进行编写的,而我对python又并不是很熟悉,所以修改或者新增功能时比较麻烦
基于以上,我重新开启了这个项目。