GithubHelp home page GithubHelp logo

anhoder / musicfox Goto Github PK

View Code? Open in Web Editor NEW
22.0 2.0 1.0 40.79 MB

Dart编写的网易云音乐命令行程序。

Home Page: https://danlanhai.gitee.io/15981627088641.html

License: MIT License

Dart 100.00%
musicfox musicbox netease-cloud-music netease-music netease music command-line

musicfox's Introduction

为了解决一些体验问题,该项目已使用go进行重写——go-musicfox,该仓库停止维护...

musicfox

// TODO 优化
// 1. 电台-我的订阅 登录校验
// 2. 心动模式从当前歌曲开始
// 3. 随机播放保存历史播放列表

给个star✨吧

musicfox是一款使用Dart编写的网易云音乐命令行程序。

GitHub repo size GitHub Last Tag GitHub last commitGitHub All Releases

GitHub stars GitHub forks

感谢

感谢以下项目及其贡献者们(不限于):

预览

欢迎界面 主界面1 主界面2

更新

  • Mac: brew update musicfox
  • Linux或Windows: 下载最新的可运行文件

安装

必须先安装mpg123

Mac

提供两种方式安装:

  1. 使用brew安装: brew tap anhoder/musicfox && brew install musicfox
  2. 直接下载Mac可执行文件,在iTerm或Terminal中打开

Mac下默认使用AppleScript发送通知。如下:

AppleScript

如果想要更好的通知体验,可以安装terminal-notifier:

brew install terminal-notifier

效果如下:

terminal-notifier

Linux

  • 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系统,该执行文件是在WSL2(Ubuntu 2004)下打包的,不保证其他Linux系统也能正常使用

Linux可以安装libnotify-bin来使用通知功能(未经测试)

Windows

Windows下存在几个已知问题,暂时没有解决方法:

  1. 暂停时会延迟几秒,播放时不会延迟
  2. 登录或搜索输入时,会吞掉第一个字符
  3. 上、下、左、右及ESC键无法监听,只能使用字母代替这些操作
  4. 命令行窗口大小发生变化后,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下使用\

TODO

  • 我的歌单
  • 每日推荐歌曲
  • 每日推荐歌单
  • 私人FM
  • 歌词显示
  • 欢迎界面
  • 搜索
    • 按歌曲
    • 按歌手
    • 按歌词
    • 按歌单
    • 按专辑
    • 按用户
  • 排行榜
  • 精选歌单
  • 最新专辑
  • 热门歌手
  • 云盘
  • 播放方式切换
  • 喜欢/取消喜欢
  • 心动模式/智能模式
  • 音乐电台
  • 将部分设置转化为文件可配置
    • 欢迎界面的欢迎语
    • 欢迎界面时长
    • 主题色
    • 歌词显示行数
    • ...

伴生项目

在该项目的开发过程中,我将一些通用的功能模块单独抽离出来,做成了几个伴生项目:

  • mp3_player: dart命令行调用mpg123播放音乐
  • colorful_cmd: 使用dart实现的一些命令行UI组件,如:WindowUI命令行窗口应用UI、RainbowProgress彩虹进度条、NotifierProxy三大平台通知代理、ColorText颜色文本...
  • netease_music_request: Dart实现的网易云音乐接口库,使用Dio发起请求,CookieJar管理Cookie信息

项目起因

在开始这个项目的之前,其实是已经有一个基于命令行的网易云音乐项目——musicbox

我也使用它听了很长一段时间的歌了,其中还贡献过一些代码,修复几个小问题。那为什么还要重新造一个轮子呢?

原因:

  1. musicbox有一些我特别想要的功能是没有的
  2. musicbox是使用python进行编写的,而我对python又并不是很熟悉,所以修改或者新增功能时比较麻烦

基于以上,我重新开启了这个项目。

musicfox's People

Contributors

anhoder avatar yjun123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

qa70601234

musicfox's Issues

Linux下通知显示不完整

host: Arch Linux

notification daemon: dunst
musicfox version: 1.2.0

问题:播放新的歌曲时,弹出通知不显示歌手名。

e.g. 播放Bob Dylan的,通知会如下这样显示,缺失歌手名:

——————————————————
| MusicFox
| We Are The World -
|___________________________________

Windows下无法使用

mpg123似乎没用。

尝试播放时:

Unhandled exception:
Env invalid: Error: not found mpg123
#0 new Mpg123Player (package:mp3_player/src/process_player/mpg123_player.dart:12)
#1 Player.run (package:mp3_player/src/player.dart:20)
#2 _AsyncAwaitCompleter.start (dart:async-patch/async_patch.dart:51)
#3 Player.run (package:mp3_player/src/player.dart:18)
#4 MainUI._player (package:musicfox/ui/main_ui.dart:134)
#5 _AsyncAwaitCompleter.start (dart:async-patch/async_patch.dart:51)
#6 MainUI._player (package:musicfox/ui/main_ui.dart:132)
#7 MainUI.play (package:musicfox/ui/main_ui.dart:590)
#8 _RootZone.runUnary (dart:async/zone.dart:1439)
#9 _FutureListener.handleValue (dart:async/future_impl.dart:141)
#10 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682)
#11 Future._propagateToListeners (dart:async/future_impl.dart:711)
#12 Future._completeWithValue (dart:async/future_impl.dart:526)
#13 Future._asyncComplete. (dart:async/future_impl.dart:556)
#14 _microtaskLoop (dart:async/schedule_microtask.dart:43)
#15 _startMicrotaskLoop (dart:async/schedule_microtask.dart:52)
#16 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118)
#17 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169)

求教,感谢。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.