Github获8300星!用Python开发的一个命令行的网易云音乐
最近在逛Github发现了一个非常有趣的库musicbox,是用纯Python打造的,收获了8300颗星。Python语言简单易学,好玩有趣,身边越来越多的小伙伴都开始学习Python。她的魅力非常大,不仅长期霸占了编程排行榜前三,而且拥有数以万计的开源库,这些轮子可以组合运用,创造出很多好玩有趣的项目。
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789
今天我们就来看一下这个酷酷的项目,一个命令行版本的网易云音乐,界面整洁漂亮,功能强大,值得学习!
一共有17个功能,真的是麻雀虽小五脏俱全,加了很多的功能:
320kbps的高品质音乐
歌曲,艺术家,专辑检索
网易22个歌曲排行榜
网易新碟推荐
网易精选歌单
网易主播电台
私人歌单,每日推荐
随心打碟
本地收藏,随时加
播放进度及播放模式显示
现在播放及桌面歌词显示
歌曲评论显示
一键进入歌曲专辑
定时退出
Vimer式快捷键让操作丝般顺滑
可使用数字快捷键
可使用自定义全局快捷键
作者是一位张同学,看他的location是在上海。这个项目是用纯Python代码完成的,目前收获了8300颗星,非常厉害!竟然能把网易云音乐上的功能做了一个命令行界面,了不起,关键是界面还做的很酷!
其实小编也是一个资深网易云音乐的爱好者,看到这个项目非常亲切,迫不及待的安装体验了一把。
1
安装使用
虽然这个是一个命令行版的网易云音乐,但是播放器是不能省的,需要安装一个播放器mpg123,这个库其实就是对MPEG 播放和解码用的,我的是Mac 电脑,所以直接用brew安装。
macOS安装
$ pip(3) install NetEase-MusicBox
$ brew install mpg123
用pip3 直接安装这个库,安装的有点慢,因为需要安装几个包:
requests
requests-cache
pycryptodomex
future
作者都已经打包放在requirement.txt里面,安装完了Python库之后,还需要安装mpg123。这个是必须安装包,不然无法播放音乐。其他版本的电脑也有对应的安装方法,详细可以点击阅读原文了解。
2
主界面介绍
1).直接在终端敲 musicbox就可以启动了
$ musicbox
2).看一下主界面:
这里罗列了网易云音乐的9大功能,涵盖了我们的PC版本上的大部分功能,比如排行榜,艺术家,还有我喜欢的主播电台,私人FM ,每日歌单等等。
大家对比一下,是不是大部分的功能,这个命令行界面都实行了。
3).强大的子菜单
上面这个其实是主菜单,进入的话每一个菜单里面都有子菜单和详细的功能,比如我们进入排行榜这个菜单:
里面有很多榜单,这个跟我们的PC版的网易云是一样的数据。我们选择第一个云音乐榜单进去看一下:
里面会列出上榜的金曲,按键盘上面的"J"和"K" 可以快速的进行光标的上下移动,一共排行榜有99首歌曲。
当光标在这个歌曲上停留的时候,整个这个歌曲的名字会进行滚动,这一点作者做的非常贴心。因为有的名字非常长,演唱者的人很多。
3
播放歌曲
上面是简单的介绍了一下这个界面的使用,如何播放歌曲呢?其实非常简单,只要选择对应的歌曲,然后按一下回车键就会播放了。而且还可以看到这首歌曲的点评信息,比如这首欧阳娜娜的“The Best for you”
里面会罗列114条歌曲的短评,每一页大概显示10页的数据。
4
看一下源码
这个项目整个的思路,底层是用爬虫去爬取网易云上的数据,然后用命令行去呈现出来,用一个进程去获取用户的输入,然后进行相应!如果你用Flask或者Django去包装,搭建一个迷你小网站,那就是网站版的网易云音乐。
目前这个库的源码大概有3-4000行,大部分代码都是作者2年前就完成的。整个代码写的还是蛮工整的,每个模块分工非常清晰,进去看每个文件,作者代码写的很整洁,条理也很清晰。
整个项目的启动入口就在__main__.py文件里面:
其实这个主程序就干四件事:
一个是检查argparse的命令行的参数的输入;
另外一个就是启动主界面的菜单menu;
最后fork一个进程,启动menu模块里面的start_fork形成一个死循环,等待用户的键盘输入;
如何出现异常或者用户终止退出就退出整个程序。
其中比较核心的文件主要是 api.py,menu.py和play.py这几个文件。menu.py里面start就是整个项目的一个永动机,而api.py主要做的就是爬虫的功能,如果对网易云音乐爬取有兴趣的可以研究一下这个文件。play文件主要是对歌曲进行播放控制的。
有兴趣的小伙伴可以下载一下这个库,好好学习一下。相信对你的功力提升一定大有裨益,如果你对这个源码有兴趣,欢迎留言区吱一声。
项目链接:
https://github.com/darknessomi/musicbox
Github获8300星!用Python开发的一个命令行的网易云音乐的更多相关文章
- python爬虫:了解JS加密爬取网易云音乐
		
python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...
 - python:执行一个命令行N次
		
经常希望可以执行一个命令行N次...windows下没有现成的工具(有?推荐给我!) 用python写一个... #!/usr/bin/evn python #coding: utf-8 " ...
 - Python爬虫——request实例:爬取网易云音乐华语男歌手top10歌曲
		
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,但比那两个要简洁的多,至于request库的用法, 推荐一篇不错的博文:https://cuiqingcai. ...
 - python爬虫+词云图,爬取网易云音乐评论
		
又到了清明时节,用python爬取了网易云音乐<清明雨上>的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况.看到 ...
 - 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
		
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
 - Python爬虫小白入门(六)爬取披头士乐队历年专辑封面-网易云音乐
		
一.前言 前文说过我的设计师小伙伴的设计需求,他想做一个披头士乐队历年专辑的瀑布图. 通过搜索,发现网易云音乐上有比较全的历年专辑信息加配图,图片质量还可以,虽然有大有小. 我的例子怎么都是爬取图片? ...
 - GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟。
		
GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟. 支持输出多种格式 GitBook支 ...
 - 《云阅》一个仿网易云音乐UI,使用Gank.Io及豆瓣Api开发的开源项目
		
CloudReader 一款基于网易云音乐UI,使用GankIo及豆瓣api开发的符合Google Material Desgin阅读类的开源项目.项目采取的是Retrofit + RxJava + ...
 - NetCloud——一个网易云音乐评论抓取和分析的Python库
		
在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...
 
随机推荐
- 微博大数据即席查询(OLAP)引擎实践
			
前言 适用于 即席查询 场景的开源查询引擎有很多,如:Elasticsearch.Druid.Presto.ClickHouse等:每种系统各有利弊,有的擅长检索,有的擅长统计:实践证明,All In ...
 - bzoj3858Number Transformation*
			
bzoj3858Number Transformation 题意: 给一个数n,对其进行k次变换,第i次变换是将当前的n变成大于等于n的最小的i的倍数.求k次变换后n为多少.n≤10^10,k≤10^ ...
 - Tableau如何嵌入HTML
			
原文地址:https://blog.csdn.net/read_you2011/article/details/81476108 作者:read_you2011 说明 作为领先的数据可视化工具,Tab ...
 - Ubuntu构建Docker私有仓库(Repository) 配置过程笔记
			
一.准备: 1.服务器(或者虚拟机2台,我的服务环境[ 阿里云服务器-Ubuntu 1804 +百度云-Ubuntu 1604]) 2.有效镜像(我这里以上一篇随笔镜像作为有效镜像https://w ...
 - 循序渐进nginx(二):反向代理、负载均衡、缓存服务、静态资源访问
			
目录 反向代理 使用 1.创建代理目标服务端: 2.配置nginx反向代理目标服务端: 3.测试使用: 负载均衡 使用 1.准备服务端 2.修改nginx配置 3.测试 负载均衡策略 负载均衡的额外参 ...
 - SpringBoot + Spring Cloud Consul 服务注册和发现
			
什么是Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更"一站式" ...
 - python-socket网络编程笔记(UDP+TCP)
			
端口 在linux系统中,有65536(2的16次方)个端口,分为: 知名端口(Well Known Ports):0-1023,如80端口分配给HTTP服务,21端口分配给FTP服务. 动态端口(D ...
 - [转]十分钟带你理解Kubernetes核心概念
			
本文将会简单介绍 Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些 ...
 - Csrf+Xss组合拳
			
本文首发于“合天智汇”公众号,作者: 影子 各位大师傅,第一次在合天发文章,请多多关照 今年年初的疫情确实有点突然,打乱了上半年的所有计划(本来是校内大佬带我拿奖的时刻,没了 ,学长毕业了,就剩下我这 ...
 - redis 之 持久化
			
Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复. 1.RDB持久化 RDB持久化是指在指定的时间间隔内将 ...