V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Mellcap
V2EX  ›  Python

开发了一款基于网易云歌单的命令行播放器,分享给大家

  •  2
     
  •   Mellcap ·
    Mellcap · 2017-03-12 08:56:14 +08:00 · 6837 次点击
    这是一个创建于 2817 天前的主题,其中的信息可能已经有所发展或是发生改变。

    MellPlayer

    前言

    我写代码时非常喜欢听音乐,最近在网易云歌单中听到了许多入耳惊艳的歌,觉得非常不错。但是歌单的随机播放以及快速切换是个软肋,于是开发了 MellPlayer ,可以按照分类随机听歌,实现了歌单间的快速切换,希望大家能够喜欢。

    开发理念

    MellPlayer 的初版刚刚发布,还有许许多多需要改进的地方,非常希望能有志同道合的朋友 Fork 下来,一起打造越来越完美的播放器,下面就说下我的开发理念:

    MellPlayer 是一款命令行播放器,主要是为了实现根据心情随机听歌,并且能够快速进行歌单间的切换,简约流畅,我希望在此基础上谨慎添加小而美的功能。并不想引入过多繁琐的功能,添加一大堆的快捷键,将简洁的东西繁琐化是违背我的初衷的。

    关于项目

    项目地址:MellPlayer

    项目基于 python3 开发,依赖 mpv 。还有很多地方需要优化改进,大家发现什么问题可以给我提 Issue ,当然非常欢迎有兴趣的朋友加入,一起打造我们喜欢的播放器。

    既然看到这儿了,就来 Star 一下, 互相 Follow 一下吧哈哈!!!

    支持

    OSX & Linux (Linux 未经过测试)

    安装

    通过 pip3 安装

    [sudo] pip3 install MellPlayer
    

    Mac OSX 安装依赖

    通过 Homebrew 安装 mpv

    brew install mpv
    

    更新

    通过 pip3 更新

    [sudo] pip3 install MellPlayer --upgrade
    

    使用

    在命令行直接输入 mellplayer 即可享受:

    mellplayer
    

    快捷键

    
     操作
     [j]     [Next Line]         --->  下
     [k]     [Prev Line]         --->  上
     [q]     [Quit]              --->  退出
    
     音乐
     [space] [Start/Pause]       --->  播放/暂停
     [n]     [Next Song]         --->  下一曲
     [p]     [Prev Song]         --->  上一曲
     [f]     [Forward Playlist]  --->  下个歌单
     [b]     [Backward Playlist] --->  上个歌单
    
     音量
     [-]     [Reduce Volume]     --->  减小音量
     [=]     [Increase Volume]   --->  增加音量
     [m]     [Mute]              --->  静音
    
     歌词
     [l]     [Show/Hide Lyric]   --->  显示/关闭歌词
    
     帮助
     [h]     [Show/Hide Help]    --->  显示/关闭帮助
         
    
    63 条回复    2017-03-14 20:03:09 +08:00
    Mellcap
        1
    Mellcap  
    OP
       2017-03-12 08:57:16 +08:00
    希望大家能喜欢,提一些建议。我接下来会不断的优化
    izgnod
        2
    izgnod  
       2017-03-12 09:01:23 +08:00 via Android
    可惜用虾米
    zgqq
        3
    zgqq  
       2017-03-12 09:03:09 +08:00 via Android
    重复了
    Mellcap
        4
    Mellcap  
    OP
       2017-03-12 09:04:29 +08:00
    @izgnod 可以试一下哈
    Mellcap
        5
    Mellcap  
    OP
       2017-03-12 09:05:22 +08:00
    @zgqq 仔细看
    TangMonk
        6
    TangMonk  
       2017-03-12 09:06:05 +08:00 via Android
    网易的新版 api 好像加了加了密
    oIMOo
        7
    oIMOo  
       2017-03-12 09:07:29 +08:00
    会员歌曲怎么办呢……
    zgqq
        8
    zgqq  
       2017-03-12 09:07:34 +08:00 via Android
    @Mellcap 比 musicbox 好用?
    Mellcap
        9
    Mellcap  
    OP
       2017-03-12 09:08:40 +08:00
    @oIMOo 我做的这个是基于歌单听歌的,所以都是免费的。主要是想解决歌单间随机切换的小痛点😄
    Mellcap
        10
    Mellcap  
    OP
       2017-03-12 09:09:25 +08:00
    @zgqq 我做的这个是基于歌单听歌的,主要是想解决歌单间随机切换的小痛点😄,并没有想做类似 musicbox 的大而全的播放器呀
    Mellcap
        11
    Mellcap  
    OP
       2017-03-12 09:10:00 +08:00
    @TangMonk 哈哈,一看就是懂得人
    jpmorn
        12
    jpmorn  
       2017-03-12 09:58:46 +08:00
    法务部门周一上班,哈哈哈
    Mellcap
        13
    Mellcap  
    OP
       2017-03-12 10:03:42 +08:00 via iPhone
    @jpmorn 哈哈哈 所以趁早发
    BoBoy
        14
    BoBoy  
       2017-03-12 11:01:30 +08:00 via iPhone
    这种东西只能拿来自娱自乐一下,没什么实际意义呀。😂
    murmur
        15
    murmur  
       2017-03-12 11:16:40 +08:00
    网易花了那么大力气开发了手机端、网页版和 mac 的图形客户端 你们现在搞命令行 我要是产品经理得苦出来
    soliloquy
        16
    soliloquy  
       2017-03-12 11:24:42 +08:00
    已 star py 小萌新求互 follow ?
    Mellcap
        17
    Mellcap  
    OP
       2017-03-12 12:07:35 +08:00
    @BoBoy 代码的乐趣就在这里呀😄
    Mellcap
        18
    Mellcap  
    OP
       2017-03-12 12:08:49 +08:00
    @murmur 哈哈 生命不息 折腾不止
    flaneurse
        19
    flaneurse  
       2017-03-12 12:09:11 +08:00 via Android
    会被网易发律师函的小心点
    Mellcap
        20
    Mellcap  
    OP
       2017-03-12 12:09:37 +08:00
    @soliloquy 已 follow ,互相学习
    Mellcap
        21
    Mellcap  
    OP
       2017-03-12 12:10:10 +08:00
    @flaneurse 😓好的,多谢提醒
    jaylong
        22
    jaylong  
       2017-03-12 13:16:01 +08:00
    之前好像有过类似的作品,后来因为版权原因项目被作者删除了
    Mellcap
        23
    Mellcap  
    OP
       2017-03-12 13:18:19 +08:00
    @jaylong 我这刚开发出来就听到这么悲桑的故事
    jaylong
        24
    jaylong  
       2017-03-12 13:19:51 +08:00
    @Mellcap 不过我还是很支持这些项目的^_^
    Mellcap
        25
    Mellcap  
    OP
       2017-03-12 13:31:53 +08:00
    @jaylong 来个 star 互相 follow 一下啊
    jaylong
        26
    jaylong  
       2017-03-12 13:48:58 +08:00
    @Mellcap https://github.com/sutar/WasAPlayer 这个好像是那个悲桑的故事

    不过还有这些:
    https://github.com/darknessomi/musicbox
    https://github.com/arrowing/ColorPlayer
    https://github.com/chenminhua/netsound
    https://github.com/fraserxu/music163-cli
    你们可以好好交流一下,一起搞一搞

    我只是一名不会写代码的吃瓜群众~~~
    0915240
        27
    0915240  
       2017-03-12 14:05:59 +08:00
    @jaylong 肿么都是黄易音乐的,没见过有虾米的。。
    iFlicker
        28
    iFlicker  
       2017-03-12 14:57:01 +08:00
    重复造轮子啦
    Mellcap
        29
    Mellcap  
    OP
       2017-03-12 15:56:50 +08:00 via iPhone
    @jaylong 我的天 志同道合的人这么多
    Mellcap
        30
    Mellcap  
    OP
       2017-03-12 15:58:10 +08:00 via iPhone
    @iFlicker 也不能说重复造轮子,只是展示的很像,解决的小痛点却各有不同
    iFlicker
        31
    iFlicker  
       2017-03-12 17:12:59 +08:00
    @Mellcap 恩恩。。
    forelegance
        32
    forelegance  
       2017-03-12 17:36:45 +08:00
    确实挺好的,不知道缓存机制怎么样
    ins
        33
    ins  
       2017-03-12 17:47:21 +08:00
    mark..感谢分享啊
    Mellcap
        34
    Mellcap  
    OP
       2017-03-12 18:00:05 +08:00
    @forelegance 目前是用 mpv 自己的缓存,准备下个版本收集点意见建议一步步开发出来。
    Mellcap
        35
    Mellcap  
    OP
       2017-03-12 18:00:39 +08:00
    @ins 哈哈哈 说句经典的话 “你的支持就是我最大的动力”
    just1
        36
    just1  
       2017-03-12 18:59:45 +08:00 via Android
    想请教一下楼主这命令行 ui 怎么做的
    Mellcap
        37
    Mellcap  
    OP
       2017-03-12 19:12:13 +08:00   ❤️ 1
    @just1 首先获取 terminal_size ,然后计算一下当前要打印的行数和布局,然后直接打印出来,最后捕捉键入信息刷新当前页面。但是要注意多线程打印会跳行,所以在结尾加\r 。源码在 mellplayer/ui.py 中。
    littleshy
        38
    littleshy  
       2017-03-12 20:06:56 +08:00
    我把 musicbox 集成到 flask 放到树莓派上,就可以在手机上控制或定时让树莓派放音乐。
    现在就用这个当闹钟。
    songjiaxin2008
        39
    songjiaxin2008  
       2017-03-12 20:26:37 +08:00
    楼主一看就是个 vim 党
    Mellcap
        40
    Mellcap  
    OP
       2017-03-12 20:56:56 +08:00
    @littleshy 哈哈哈 猜到了开头 猜不到结局😂
    Mellcap
        41
    Mellcap  
    OP
       2017-03-12 20:57:44 +08:00
    @songjiaxin2008 啥都玩儿一点儿
    bigmercu
        42
    bigmercu  
       2017-03-12 22:43:11 +08:00
    我基本调通他的加密过程,并且在 musicbox 代码基础上修改尝试了一些接口,比如获取某个用户歌单什么的,有兴趣可以交流一下。
    just1
        43
    just1  
       2017-03-12 23:14:11 +08:00 via Android
    @Mellcap ui 这样写感觉蛮厉害
    mingyun
        44
    mingyun  
       2017-03-12 23:36:52 +08:00
    win 下装不了

    Skipping optional fixer: buffer
    Skipping optional fixer: idioms
    Skipping optional fixer: set_literal
    Skipping optional fixer: ws_comma
    running build_ext
    warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastm
    th.
    building 'Crypto.Random.OSRNG.winrandom' extension
    error: Unable to find vcvarsall.bat
    mingyun
        45
    mingyun  
       2017-03-12 23:37:39 +08:00
    抱歉,没看清,目前不支持 win
    Mellcap
        46
    Mellcap  
    OP
       2017-03-13 07:15:30 +08:00 via iPhone
    @bigmercu 那真是极好的,交流交流,怎么联系?
    Mellcap
        47
    Mellcap  
    OP
       2017-03-13 07:16:03 +08:00 via iPhone
    @just1 哈哈哈 过奖了
    Mellcap
        48
    Mellcap  
    OP
       2017-03-13 07:17:31 +08:00 via iPhone
    @mingyun 目前 linux 还有些问题,我会逐步完善这个项目 感谢支持
    araraloren
        49
    araraloren  
       2017-03-13 09:19:06 +08:00
    mark 一下,支持支持 ~~
    iNohn
        50
    iNohn  
       2017-03-13 09:25:05 +08:00
    我这边系统是 macOS 10.12.3 ,一进选歌单环境界面就 Crash 了
    报错原因:“ Fatal Python error: Cannot recover from stack overflow.”
    运行环境 Python3.6.0 ,是 brew 安装的
    Mellcap
        51
    Mellcap  
    OP
       2017-03-13 10:21:55 +08:00
    @araraloren 感谢感谢
    Mellcap
        52
    Mellcap  
    OP
       2017-03-13 10:22:51 +08:00
    @iNohn 嗨,能把全部报错信息推上来么,推到 github 上也行。我马上去查
    bigmercu
        53
    bigmercu  
       2017-03-13 11:20:33 +08:00
    @Mellcap id 就是 github ib 里面有邮箱
    iNohn
        54
    iNohn  
       2017-03-13 13:12:03 +08:00
    @Mellcap 已发 GitHub Issue
    Mellcap
        55
    Mellcap  
    OP
       2017-03-13 13:47:12 +08:00
    Mellcap
        56
    Mellcap  
    OP
       2017-03-13 13:48:19 +08:00
    @iNohn 已收到,我升级一下,如果产生同样的报错我会尽快解决,保持联系哈
    AlisaDestiny
        57
    AlisaDestiny  
       2017-03-13 13:50:25 +08:00
    厉害了。居然破解了网易加密接口的方法。
    Mellcap
        58
    Mellcap  
    OP
       2017-03-13 16:20:55 +08:00
    @AlisaDestiny 是大神破的
    joyc
        59
    joyc  
       2017-03-13 21:07:39 +08:00
    window 不能用吗?
    Mellcap
        60
    Mellcap  
    OP
       2017-03-13 21:11:02 +08:00
    @joyc 目前还没支持,有感兴趣的朋友可以一起开发哈。
    Mellcap
        61
    Mellcap  
    OP
       2017-03-14 09:52:21 +08:00 via iPhone
    谢谢大家的支持😄
    henryshen233
        62
    henryshen233  
       2017-03-14 10:57:17 +08:00
    为楼主点个赞
    Mellcap
        63
    Mellcap  
    OP
       2017-03-14 20:03:09 +08:00 via iPhone
    @henryshen233 谢谢😄
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4194 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 10:16 · PVG 18:16 · LAX 02:16 · JFK 05:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.