1. 程式人生 > 實用技巧 >Github獲8300星!用Python開發的一個命令列的網易雲音樂

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