Skip to content

音乐播放器(桌面版+命令行版),支持QQ、网易云、咪咕

License

Notifications You must be signed in to change notification settings

Bowen-n/BowenMusic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BowenMusic

Project for IS305, 支持qq音乐、网易云、咪咕的音乐播放器。

  • Gui: PyQt5
  • Shell: Cmd
  • 接口转发: Flask

Structure

File Structure

|-- qss                    .qss file for the style of GUI
|-- resource               icons
|-- src                    codes
|---- api.py               APIs of qq/neteasecloud/migu music
|---- component.py         Widgets inherit from `QLabel` and `QLineEdit`
|---- module.py            Four main modules: Header, Navigation, Mainlist, PlayWidgets
|---- MusicDesktop.py      Run code for desktop version.
|---- webdriver.py         Get qq music cookies using Selenium
|---- intro.txt            introduction text for command version
|---- MusicCmd.py          run code for command version
|-- userdata               cookie, download music and playlist created by the user

Program Structure

Desktop version structure Cmd version structure

Use

Requirements: $ pip install -r requirements.txt
GUI version: $ python ./src/MusicDesktop.py
Shell version: $ python ./src/MusicCmd.py
API forwording: $python ./src/api_forward.py

API

NeteaseCloudMusic API

Screenshot

GUI

search

Shell

$ python ./src/cmd_version/MusicCmd.py
 ____                          __  __           _
| __ )  _____      _____ _ __ |  \/  |_   _ ___(_) ___
|  _ \ / _ \ \ /\ / / _ \ '_ \| |\/| | | | / __| |/ __|
| |_) | (_) \ V  V /  __/ | | | |  | | |_| \__ \ | (__
|____/ \___/ \_/\_/ \___|_| |_|_|  |_|\__,_|___/_|\___|
BowenMusic> pl
1. 华晨宇   
2. 周杰伦   
3. 林俊杰   
BowenMusic> search 晴天
    歌曲                          歌手                专辑                          时长      
---------------------------------------------------------------------------------------------
1.  晴天                          周杰伦              叶惠美                        04:29
2.  晴天(女声翻唱)               刘瑞琦                                            00:00     
3.  晴天 (Live)                   周杰伦              周杰伦地表最强世界巡回演唱会    04:09
4.  晴天 (Cover:周杰伦)           西瓜Kune            eonian day                   04:26
5.  晴天 (Live)                   娄艺潇              跨界歌王第二季 第9期           04:16
6.  欧阳耀莹 翻唱 晴天(周杰伦)    欧阳耀莹             欧阳耀莹 Cover合辑            02:27     
7.  晴天 (Live)                   林俊杰/周杰伦                                     03:59
8.  晴天 (Cover: 周杰伦)           符嘉超              只录一遍的倔强                 05:16
9.  晴天 (Cover: 周杰伦)           Vaniah维            Vaniah音乐实验室              04:31
10. 晴天 (Cover:  周杰伦)          哎呦哥哥            哎呦哥哥嗨你好                 04:44
----------------------------------------------------------------------------------------------
BowenMusic> s
Current source is 'qq'
BowenMusic> cs migu
Source is changed to migu music.
BowenMusic> play -s 1
BowenMusic> i
Playing 晴天 - 周杰伦  00:01/04:29
BowenMusic> m
pause.
BowenMusic> m
continue
BowenMusic> quit
Wish you good luck.

Progress

2020.3.10 - 2020.3.15

  • QQ Music API 调研已完成,可获取歌信息和URL,会员歌曲需要绿钻用户Cookie
  • 图标准备,资源为Iconfonteasyicon
  • 基本界面的完成,包括Header, Navigation, Mainlist, Player 四个模块

2020.3.19

  • 完成global音乐的双击下载与播放功能
  • 问题
    • Album图片的显示不完整,更改了图片源后显示依然不变

2020.3.20

  • 完成Navigation事件绑定,包括我的歌单,在线音乐,本地音乐
  • 增加了将在线音乐添加到我的歌单的功能
  • 问题
    • Player排本问题(有的歌名特别长,把其他按钮挤到了最右边)
    • 最好设计成QQ音乐一样的滚动歌名(对于长歌名)

2020.3.21

  • 完成Player播放时间和滚动条的对应
  • 调整Navigation栏目的间距和宽度(界面美化)
  • 支持了多个歌单的“加入歌单”功能以及Navigation中多歌单的显示
  • 完成歌单播放,对于本地音乐和歌单,播放里面的一首歌就将本地或对应歌单的所有歌加入后台播放列表中,并完成顺序、单曲循环、随机播放三种模式的功能

2020.3.23

  • 完成网易云搜索歌曲(专辑、歌手)API,完成网易云API文档
  • 问题
    from Crypto.Cipher import AES
    报错的原因是Crypto只支持32位,需要安装pycryptodome,建议使用pip install pycryptodomex安装,然后
    from Cryptodome.Cipher import AES

2020.3.24

  • 将选择音乐源放在Navigation栏的在线音乐中
  • 添加网易云搜索、播放、加入歌单功能
  • 完成咪咕音乐API
  • 添加咪咕搜索、播放、加入歌单功能

2020.3.25

  • webdriver.py :使用selenium自动登录QQ音乐网页并获取cookie保存json文件,需在self.accountself.password中填入账号密码
class QQMusicWebdriver():
    def __init__(self):
        self.browser = webdriver.Chrome()
        self.browser.get('https://y.qq.com/')
        self.account = ''  # your qq id
        self.password = '' # your password
  • QQMusicAPI中增加从本地json文件读取cookie
  • 针对没有QQvip的cookie而无法下载歌曲的处理

2020.3.26

  • 新建歌单功能

2020.3.27

  • 删除、重命名歌单
  • 新建歌单后的QLineEdit焦点设置

2020.3.28

  • 本地音乐中增加播放、从本地删除功能
  • 歌单中增加播放、从歌单删除功能
  • 如果userdata/music中有其他奇怪的文件会报错的问题

2020.3.29 🎵 Desktop version finished

  • Player部件排版调整,不会因为歌名长度不一而部件移动
    • Question 如何在QLabel中实现滚动字幕 ?

2020.3.30

  • cmd版: 展示歌单

2020.3.31

  • cmd版: 搜索功能
    • 解决中英文混合输出对齐使用wcwidth

2020.4.4

  • cmd版: 歌单创建/删除/重命名
  • cmd版: 将搜索歌曲加入歌单功能
  • cmd版: 更改源

2020.4.5

  • cmd版: 播放歌单中的歌曲
BowenMusic> play        # default play from playlist 1
BowenMusic> play -pl 2  # play from playlist 2
BowenMusic> play -s 2   # play the 2nd song in the last search result

2020.4.6

  • cmd版: 播放搜索的歌曲
  • cmd版: 暂停/继续

2020.4.21

  • 基于Flask的接口转发 $ python ./src/api_forward.py

TODO

  • 网易云音乐API
  • 咪咕音乐API
  • 添加歌单功能
  • Player排版问题(歌名长度不一致)
  • 从歌单中删除歌
  • 歌曲信息以滚动的方式显示 ScrollLabel in /src/component.py
  • 🚩 添加命令行版本(Windows & Linux & MacOS) 使用强大的mpv播放器,以及python-mpv接口

About

音乐播放器(桌面版+命令行版),支持QQ、网易云、咪咕

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages