如何使用 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.功能需求 完善音乐播放器 有播放列 ...
随机推荐
- 你应该知道的Redis事务
前两篇 Redis 文章都大几千字,今天我们换个小清新点的 如果你也了解过关系型数据库事务的话,相信这篇文章对你来说是很容易理解的了.具体什么是事务我就不说不多了,直接讲 Redis 事务相关的部分. ...
- 使用docker配置laravel5.5环境
简介 简述一下我用docker来配置laravel环境 软件镜像 php:7.2-rc-fpm-alpine mysql:5.6 nginx:1.12.2-alpine 配置环境 Ubuntu:16. ...
- 保姆教程系列二、Nacos实现注册中心
前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 上篇我们介绍到 保姆教程系列一.Linux搭建Nacos 注册中心原理 一.环境准备 Java版本:1.8+ (Linux ce ...
- 一条SQL语句执行得很慢的原因有哪些
说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你"输入URL回车之后,究竟发生了什么"一样,看看你能说出多少了. 之前腾讯 ...
- 什么是Spring beans?
Spring beans 是那些形成Spring应用的主干的java对象.它们被Spring IOC容器初始化,装配,和管理.这些beans通过容器中配置的元数据创建.比如,以XML文件中 的形式定义 ...
- cornerstone 忽略不必要文件
转:https://www.jianshu.com/p/f48207baa0cd
- 什么是 MyBatis 的接口绑定?有哪些实现方式?
接口绑定,就是在 MyBatis 中任意定义接口,然后把接口里面的方法和 SQL 语句绑 定, 我们直接调用接口方法就可以,这样比起原来了 SqlSession 提供的方法我们可 以有更加灵活的选择和 ...
- 指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处?
concern 是我们想要在应用程序的特定模块中定义的行为.它可以定义为我们想 要实现的功能. cross-cutting concern 是一个适用于整个应用的行为,这会影响整个应用程序. 例如,日 ...
- 数据结构:DHUOJ 单链表ADT模板应用算法设计:长整数加法运算(使用单链表存储计算结果)
单链表ADT模板应用算法设计:长整数加法运算(使用单链表存储计算结果) 时间限制: 1S类别: DS:线性表->线性表应用 题目描述: 输入范例: -5345646757684654765867 ...
- Numpy计算逆矩阵求解线性方程组
对于这样的线性方程组: x + y + z = 6 2y + 5z = -4 2x + 5y - z = 27 可以表示成矩阵的形式: 用公式可以表示为:Ax=b,其中A是矩阵,x和b都是列向量 逆矩 ...