最近在逛Github發現了一個非常有趣的庫musicbox,是用純Python打造的,收穫了8300顆星。Python語言簡單易學,好玩有趣,身邊越來越多的小夥伴都開始學習Python。她的魅力非常大,不僅長期霸佔了編程排行榜前三,而且擁有數以萬計的開源庫,這些輪子可以組合運用,創造出很多好玩有趣的項目。
今天我們就來看一下這個酷酷的項目,一個命令行版本的網易雲音樂,界面整潔漂亮,功能強大,值得學習!
一共有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
618福利活動,噹噹4折起
衝鴨!羊毛薅起來!噹噹618專享不到4折,Python書籍囤起來!
近期熱門: