如何使用 pyqt 实现 Groove 音乐播放器
前言
Win10 自带了一款很好用的音乐播放器 —— Groove 音乐,但是只能支持本地音乐的播放。2020年3月底到4月底,自己一直在学习 PyQt5,然后从 2020年5月开始,着手使用 PyQt5 编写增强版的 Groove 音乐。因为平时有课,所以大部分代码是在寒暑假编写的。
刚开始代码写的很捞,反反复复重构过多次,不过现在整体看来应该没那么乱了,除了一部分很久远的代码,实在不敢去碰。总结下来,项目用到了以下技术:
- PyQt5
- 爬虫
- 数据库
- 图像处理
其中数据库还是去年年底学了 Java 技术栈之后,于今年寒假添加进项目的。以前用的是 json 文件来保存歌曲数据,说多了都是泪。之前由于种种原因(主要是懒),代码一直没有编译成 exe 发布出来,今天终于打包发布了 v1.0.0 大版本。在虚拟环境里面打包之后发现软件有 297MB,所以又删了一些无用的 dll 和 pyd 文件,最终瘦身为 197MB,在 3 台 Win11 电脑上测试良好,欢迎大家去我的 GitHub仓库:https://github.com/zhiyiYo/Groove 下载使用,有任何问题可以提 issue,我会在第一时间回复。
功能
目前播放器实现了以下功能:
播放本地音乐

搜索、播放和下载在线音乐

创建和管理个人播放列表

查看和编辑歌曲信息

播放和下载在线 MV(由于录制动图体积太大,所以这里只给出图片,顺便感慨一波遥妹真甜)

注意事项
- 在使用软件之前必须先安装好 LAV Filters,因为 Qt 要用它来解码音乐;
- 开启亚克力背景后窗口拖动可能会卡顿,这是 Win10 本身的 bug,Win11 没有这个问题,可以在设置界面关闭亚克力背景的选项,这样拖动的时候就不会卡顿了
- 目前软件支持的音频格式有以下几种:
- mp3
- flac
- mp4/m4a
后记
如果大家喜欢这个项目的话,欢迎 star 、fork 和 follow,再次给出项目地址 https://github.com/zhiyiYo/Groove ,防止迷路,以上~~
如何使用 pyqt 实现 Groove 音乐播放器的更多相关文章
- pyqt记录内容(音乐播放器)
#这是UI文件 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'AudioPlayerDia ...
- 基于Qt Phonon模块实现音乐播放器
这次使用Qt实现的是一个本地音乐播放器,可以播放下载在计算机本地的音乐,提供了添加歌曲,歌曲列表,清空列表的功能.默认歌曲列表循环播放.音乐播放的实现主要依赖的是Qt 的多媒体框架phonon.该音乐 ...
- SE Springer小组之《Spring音乐播放器》可行性研究报告三、四
3 对现有系统的分析 由于本次可行性分析主要是建立在团队自行实现一个音乐软件的目标上,并不是在一个现有系统的基础上开发改进的新系统.因此这里将分析一款市面上已经存在的音乐软件(以下称为W音乐),并为之 ...
- 卡拉OK效果的实现-iOS音乐播放器
自己编写的音乐播放器偶然用到这个模块,发现没有思路,而且上网搜了搜,关于这方面的文章不是很多,没找到满意的结果,然后自己也是想了想,最终实现了这种效果,想通了发现其实很简单. 直接上原理: 第一种: ...
- 小菜学习Winform(二)WMPLib实现音乐播放器
前言 现在网上有很多的音乐播放器,但好像都不是.net平台做的,在.net中实现音乐文件的播放功能很简单,下面就简单实现下. SoundPlayer类 在.net提供了音乐文件的类:SoundPlay ...
- 【大结局】《从案例中学习JavaScript》之酷炫音乐播放器(四)
这是之前写的用H5制作的音乐播放器,前三节其实已经做得差不多了,音轨的制作原理已经在上一节说明,不过一直还没有和音乐对接. 本章作为该系列的一个完结篇,我会专门把动态音轨的实现代码贴出来,demo地址 ...
- Andriod小项目——在线音乐播放器
转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...
- Android开发6:Service的使用(简单音乐播放器的实现)
前言 啦啦啦~各位好久不见啦~博主最近比较忙,而且最近一次实验也是刚刚结束~ 好了不废话了,直接进入我们这次的内容~ 在这篇博文里我们将学习Service(服务)的相关知识,学会使用 Service ...
- android 音乐播放器
本章以音乐播放器为载体,介绍android开发中,通知模式Notification应用.主要涉及知识点Notification,seekbar,service. 1.功能需求 完善音乐播放器 有播放列 ...
随机推荐
- bzoj4671 异或图(斯特林反演,线性基)
bzoj4671 异或图(斯特林反演,线性基) 祭奠天国的bzoj. 题解时间 首先考虑类似于容斥的东西. 设 $ f_{ i } $ 为至少有 $ i $ 个连通块的方案数, $ g_{ i } $ ...
- APUE1--3.8-3.10wirte、read函数以及IO效率
1read函数 #include<unistd.h> ssize_t read(int fd,void* buf,size_t nbytes) 返回值:读到的字节数,若已到文件尾,返回0; ...
- Bean实例化方式
https://blog.csdn.net/diaosinixiheixiu/article/details/78919395 https://www.cnblogs.com/deng-cc/p/89 ...
- 实现一个函数功能:sum(1,2,3,4..n)转化为 sum(1)(2)(3)(4)…(n)?
// 使用柯里化 + 递归function curry ( fn ) { var c = (...arg) => (fn.length === arg.length) ? ...
- Java堆空间的划分:新生代、老年代
参考链接:Java堆空间的划分:新生代.老年代
- Postgres数据库知识点
1.批量插入: test_list = []for i in range(100): test_list.append(models.Testmodel(name=i, message="{ ...
- Maven的Scored介绍
Maven的Scored值的介绍:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.ht ...
- npm run start 后台运行
yum provides */nohup nohup npm start & 原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用. 停止程序 ps -ef ...
- c++中的赋值函数
在c++中,对于任意一个类Class A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline 的默认函数,这4个函数最常见的形式为: A() //默认构 ...
- 【动态系统的建模与分析】8_频率响应_详细数学推导 G(jw)_滤波器