喜欢的歌曲不在一个平台怎么办?你需要一个自己专属的音乐播放器
前言
网易云音乐,QQ音乐,酷狗音乐,是我们经常会用到的音乐软件,当然有时候我们因为一首歌,需要在各大音乐平台上跳转,那么我们完全可以使用python自己打造一款音乐播放器
知识点:
1.python基础知识
2.requests库
3.time
4.pygame
5.tkinter
6.线程
环境:
windows + pycharm + python3
适合零基础的同学
1、导入工具
from PyQt5 import QtWidgets,QtGui,QtCore
from PyQt5.QtMultimedia import QMediaContent,QMediaPlayer
import qtawesome as qta
import requests,traceback
2、创建一个类
class Music(QtWidgets.QMainWindow):def __init__(self):super().__init__()# 窗口大小self.setFixedSize(400,200)# 标题self.setWindowTitle("Mark")# 初始化界面self.init_ui()# 设置样式self.custom_style()#self.playing = False # 播放状态初始化为否self.player = QMediaPlayer(self)self.timer = QtCore.QTimer()self.timer.setInterval(1000)self.timer.start()self.timer.timeout.connect(self.check_music_status)
3、设置样式
def custom_style(self):self.setStyleSheet('''#main_widget{border-radius:5px;}#play_btn,#pervious_btn,#next_btn{border:none;}#play_btn:hover,#pervious_btn:hover,#next_btn:hover{background:gray;border-radius:5px;cursor:pointer;}''')self.close_btn.setStyleSheet('''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''')self.status_label.setStyleSheet('''QLabel{background:#F7D674;border-radius:5px;}''')
4、初始化UI界面
def init_ui(self):# 窗口布局self.main_widget = QtWidgets.QWidget()self.main_widget.setObjectName("main_widget")self.main_layout = QtWidgets.QGridLayout()self.main_widget.setLayout(self.main_layout)# 标题self.title_lable = QtWidgets.QLabel("乐者,音之所由生也")# 关闭按钮self.close_btn = QtWidgets.QPushButton("") # 关闭按钮self.close_btn.clicked.connect(self.close_btn_event)self.close_btn.setFixedSize(15,15)# 音乐状态按钮self.status_label = QtWidgets.QLabel("")# self.swith_btn.clicked.connect(self.swith_background)self.status_label.setFixedSize(15,15)# 播放按钮play_icon = qta.icon("fa.play-circle",)self.play_btn = QtWidgets.QPushButton(play_icon,"")self.play_btn.setIconSize(QtCore.QSize(80, 80))self.play_btn.setFixedSize(82,82)self.play_btn.setObjectName("play_btn")self.play_btn.clicked.connect(self.play_music)# 下一首按钮next_icon = qta.icon("fa.play-circle-o")self.next_btn = QtWidgets.QPushButton(next_icon,"")self.next_btn.setIconSize(QtCore.QSize(80,80))self.next_btn.setFixedSize(82,82)self.next_btn.setObjectName("next_btn")self.next_btn.clicked.connect(self.next_music)# 进度条self.process_bar = QtWidgets.QProgressBar()self.process_value = 0self.process_bar.setValue(self.process_value)self.process_bar.setFixedHeight(5)self.process_bar.setTextVisible(False)self.main_layout.addWidget(self.close_btn,0,0,1,1)self.main_layout.addWidget(self.title_lable,0,1,1,1)self.main_layout.addWidget(self.status_label,1,0,1,1)self.main_layout.addWidget(self.play_btn, 1, 1, 1, 1)self.main_layout.addWidget(self.next_btn, 1, 2, 1, 1)self.main_layout.addWidget(self.process_bar,2,0,1,3)self.setCentralWidget(self.main_widget)# self.setWindowOpacity(0.9) # 设置窗口透明度# self.setAttribute(QtCore.Qt.WA_TranslucentBackground) # 设置窗口背景透明self.setWindowFlag(QtCore.Qt.FramelessWindowHint) # 隐藏边框
5、播放器各功能设置
# 关闭程序def close_btn_event(self):self.close()# 鼠标长按事件def mousePressEvent(self, event):if event.button() == QtCore.Qt.LeftButton:self.m_drag = Trueself.m_DragPosition = event.globalPos() - self.pos()event.accept()self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))# 鼠标移动事件def mouseMoveEvent(self, QMouseEvent):if QtCore.Qt.LeftButton and self.m_drag:self.move(QMouseEvent.globalPos() - self.m_DragPosition)QMouseEvent.accept()# 鼠标释放事件def mouseReleaseEvent(self, QMouseEvent):self.m_drag = Falseself.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))# 播放音乐def play_music(self):try:# 播放音乐if self.playing is False:self.playing = True # 设置播放状态为是self.play_btn.setIcon(qta.icon("fa.pause-circle")) # 设置播放图标player_status = self.player.mediaStatus() # 获取播放器状态# print("当前播放状态:",player_status)if player_status == 6:# 设置状态标签为绿色self.status_label.setStyleSheet('''QLabel{background:#6DDF6D;border-radius:5px;}''')self.player.play()else:self.next_music()# 暂停音乐else:# 设置状态为蓝色self.status_label.setStyleSheet('''QLabel{background:#0099CC;border-radius:5px;}''')self.playing = Falseself.play_btn.setIcon(qta.icon("fa.play-circle"))self.player.pause()except Exception as e:print(repr(e))# 下一首音乐def next_music(self):try:# 设置状态为黄色self.status_label.setStyleSheet('''QLabel{background:#F7D674;border-radius:5px;}''')self.playing = True # 设置播放状态为是self.play_btn.setIcon(qta.icon("fa.pause-circle")) # 修改播放图标self.process_value = 0 # 重置进度值# 获取网络歌曲self.get_music_thread = GetMusicThread()self.get_music_thread.finished_signal.connect(self.init_player)self.get_music_thread.start()except Exception as e:print(traceback.print_exc())# 设置播放器def init_player(self,url):# print("获取到音乐链接:",url)content = QMediaContent(QtCore.QUrl(url))self.player.setMedia(content)self.player.setVolume(50)self.player.play()self.duration = self.player.duration() # 音乐的时长# 设置状态为绿色self.status_label.setStyleSheet('''QLabel{background:#6DDF6D;border-radius:5px;}''')# 进度条计时器self.process_timer = QtCore.QTimer()self.process_timer.setInterval(1000)self.process_timer.start()self.process_timer.timeout.connect(self.process_timer_status)# 定时器def check_music_status(self):player_status = self.player.mediaStatus()player_duration = self.player.duration()# print("音乐时间:",player_duration)# print("当前播放器状态",player_status)if player_status == 7:self.next_music()if player_duration > 0:self.duration = player_duration# 进度条定时器def process_timer_status(self):try:if self.playing is True:self.process_value += (100 / (self.duration/1000))# print("当前进度:",self.process_value)self.process_bar.setValue(self.process_value)except Exception as e:print(repr(e))
运行代码, 效果如下图:
如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。获取方式,私信小编 “ 资料 ”,即可免费获取哦!
喜欢的歌曲不在一个平台怎么办?你需要一个自己专属的音乐播放器相关推荐
- Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51448597 项目源码(打赏5积分请点这边):http://download.csdn ...
- 用户可以通过音乐播放器来选择以及学习自己喜欢的歌曲
很多人都难以理解音乐发烧友对音乐的热爱,虽然静哥也难以理解.如今随着移动互联网的发展,音乐产品在移动端的需求并没有下降.根据CNNIC发布的第33次<中国互联网发展状况统计报告>显示,在2 ...
- 三款Android平台音乐播放器多方位对比
音乐播放器作为重要的娱乐工具,在PC端异常重要,在移动端同样如此.移动端的音乐播放器很多,巨头们纷纷在这个领域布局,腾讯百度等均拥有各自的移动端音乐播放器.爱好音乐的机友们也面临较多的选择. 小编在这 ...
- ehshig蒙文歌曲_额格希格音乐播放器_额格希格音乐播放器安卓版下载_额格希格音乐播放器最新版app下载_好趣手游网...
额格希格蒙语版是一款颇具民族特色的蒙文歌曲下载软件.额格希格音乐播放器收集了最全的蒙文歌曲曲库,各种经典的蒙文歌曲以及当前流行的蒙文流行歌全都有,深受广大内蒙用户喜爱! 软件介绍 想了解蒙语音乐或者想 ...
- 学习笔记:在WIN11及UBUNTU平台下的基于Tkinter、pydub、pyaudio的音乐播放器
目录 一.总述 二.文件结构 三.打包方式 四.使用pydub进行音乐播放 main2.py all_music.py show2.py 五.pydub使用中遇到的一些问题 六.新的尝试--pyaud ...
- 基于智能手机Android平台音乐播放器全程开发实战
基于android开发的智能手机平台的应用越来越多,目前也是一块比较热门的技术,本项目为基于android系统的音乐播放器项目,学习本项目的目的是为了让学员尽快掌握android领域的小应用的开发.项 ...
- mac 平台显示歌词最好的音乐播放器软件 —— Vox + LyricsX
2018年10月更新: Vox + LyricsX 滚动歌词,显示歌词面板 完美支持 iTunes, Spotify, Vox, 可随播放器启动 自动搜索歌词.下载歌词(~/Music/LyricsX ...
- 基于android平台多媒体播放器的设计与实现,基于Android的多媒体音乐播放器设计论文...
中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2016)03-0240-02 随着计算机网络与手机的迅速发展,各种音乐资源成为人们生活中必不可少的一部分,音乐播放软件成了手机必 ...
- 在Winform(C++/CLR)平台设计的(本地在线)音乐播放器(基于WMP(Windows Media Player)控件实现)
首先,祝贺阿根廷获得2022世界杯冠军! 文章目录 简介 功能展示 1.用户注册.登录.自定义主题 2.本地歌曲导入.播放并读取歌词文件 3.在线歌曲搜索.收藏.播放 4.歌词同步及桌面歌词 5.在线 ...
最新文章
- 阶乘分解质因数[经典题组合数学枚举质因子]
- Gurobi 生产计划调度学习案例(含代码实现) (生产切换、装配计划)
- websockets_使用用户名/密码和Servlet安全性保护WebSockets
- Git学习的最佳教程
- java中的IO操作之File类
- 天池csv转成grt代码里的luna的csv,pandas库来操作csv文件(pd.DataFrame,pd.concat,pd.Series,to_csv等)实现
- Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换
- 视频教程-ArcGIS与CASS在地籍建库中的结合应用-大数据
- 2017年数学建模c题MATLAB,数学建模C题优秀论文.doc
- POI生成Word水印watermark(兼容WPS)的终极解决方案
- 关于站内信的开发思路
- Android面试题【高级工程师版】
- 第二课,绘制几何图形
- HDU 6441 Find Integer
- Xcode 10 无开发者账号通过无线网络真机调试
- [Thoughts]敏捷方法大全
- Mysql的MMM高可用群集
- 南京廖华里mysql测试题1答案_MySQL数据库考试试题及答案
- 鸿蒙系统电动车,鸿蒙系统被刷屏,新日电动车在其中是什么角色?
- 上云时代,看“探路者”如何赋能云端生态?