C++ Python网易云音乐播放器

程序示例精选
网易云音乐播放器
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《网易云音乐播放器》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


运行结果


文章目录

一、所需工具软件
二、使用步骤
1. 主要代码
2. 运行结果
三、在线协助

一、所需工具软件

1. VS2019, Qt
2. C++

二、使用步骤

代码如下(示例):
cpp 复制代码
#include "NetEasyMusicPlayer.h"
#include "mypyvirtualbox.h"
#include "NetEasyModual.h"
#include <QMessageBox>
#include <QtCore>
#include <QFileInfo>
NetEasyMusicPlayer::NetEasyMusicPlayer(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

	m_selectIndex = -1;
	m_musicmodel = new QStandardItemModel(ui.tableView);
	m_player = new QMediaPlayer(this);
	connect(ui.tableView, &QTableView::doubleClicked, this, &NetEasyMusicPlayer::slotDoubleClicked);
	connect(ui.tableView, &QTableView::clicked, this, &NetEasyMusicPlayer::slotClicked);


	setWindowTitle(QString::fromLocal8Bit("网易云音乐播放器"));
	auto box = MyPyVirtualBox::getInstance();
	auto bindTable = [=]() {
		m_musicmodel->clear();
		QStringList headers = QStringList() << QStringLiteral("音乐ID") << QStringLiteral("音乐名称") << QStringLiteral("歌手ID") << QStringLiteral("歌手名称")
			<< QStringLiteral("下载地址") << QStringLiteral("音乐封面");
		m_musicmodel->setHorizontalHeaderLabels(headers);     //设置列头
		ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
		ui.tableView->horizontalHeader()->setStyleSheet("QHeaderView::section{color:#800080;}");
	};
	QFileInfo info("2884035.json");
	if (info.exists())
	{
		//如果存在JSON文件就使用JSON的数据
		NetEasyModual mo;
		datalist = mo.getToplistData("2884035.json");

		//for (int i = 0; i < datalist.size(); i++)
		//{
		//	auto item = datalist.at(i);
		//	QString  strItem = QString::fromStdString(item);
		//	qDebug() << strItem;
		//}

		bindTable();
	}
	connect(ui.pushButton, &QPushButton::clicked, this, [=]() {

		NetEasyModual mo;
		/*mo.sayHello();*/

		datalist = mo.cacheAndGetToplistData("http://music.163.com/api/playlist/detail?id=2884035");
		if (datalist.size() <= 1)
		{
			QMessageBox::information(NULL, QString::fromLocal8Bit("请重试!"), QString::fromLocal8Bit("服务器繁忙,请重试!"));
			return;
		}

		binTable();
	});
	connect(ui.pushButton_download, &QPushButton::clicked, this, [=]() {

		qDebug() << "download click";

		if (m_selectIndex == -1)
		{
			QMessageBox::information(NULL, QString::fromLocal8Bit("SORRY!"), QString::fromLocal8Bit("请选好歌在下载!"));
			return;
		}
		auto s = datalist.at(m_selectIndex);
		QStringList row = QString::fromStdString(s).split(QString(','));
		QString songname = row[1];
		QString songid = row[0];
		qDebug() << songname << songid;
		auto songfile = QString("./mp3/%1.mp3").arg(songid);
		qDebug() << songfile;
		QFileInfo info(songfile);
		if (info.exists())
		{
			QMessageBox::information(NULL, QString::fromLocal8Bit("SORRY!"), QString::fromLocal8Bit("此MP3已经缓存直接播放即可!"));
			return;
		}
		NetEasyModual mo;
		if (mo.downloadMp3(songid.toStdString()))
		{
			qDebug() << "downoad!";
			QMessageBox::information(NULL, QString::fromLocal8Bit("Download!"), QString::fromLocal8Bit("此MP3下载成功!"));

			return;
		}
		else
		{
			QMessageBox::information(NULL, QString::fromLocal8Bit("Sorry!"), QString::fromLocal8Bit("下载失败!"));
			return;
		}
	});
		auto s = datalist.at(m_selectIndex);
		QStringList row = QString::fromStdString(s).split(QString(','));
		QString songname = row[1];
		QString songid = row[0];
		qDebug() << songname << songid;
		auto songfile = QString("./mp3/%1.mp3").arg(songid);
		qDebug() << songfile;
		QFileInfo info(songfile);
		if (info.exists())
		{
			m_player->setMedia(QUrl::fromLocalFile(songfile));
			m_player->play();
		}
		else
		{
			QMessageBox::information(NULL, QString::fromLocal8Bit("Sorry!"), QString::fromLocal8Bit("MP3不存在请下载!"));
			return;
	});
	connect(ui.pushButton_stop, &QPushButton::clicked, this, [=]() {
		m_player->stop();
	});
}
运行结果

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作
5)云服务器申请
6)网站制作

当前文章连接: https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里: https://blog.csdn.net/alicema1111?type=blog

博主推荐:
Python人脸识别考勤打卡系统:
https://blog.csdn.net/alicema1111/article/details/133434445
Python果树水果识别https://blog.csdn.net/alicema1111/article/details/130862842
Python+Yolov8+Deepsort入口人流量统计: https://blog.csdn.net/alicema1111/article/details/130454430
Python+Qt人脸识别门禁管理系统: https://blog.csdn.net/alicema1111/article/details/130353433
Python+Qt指纹录入识别考勤系统: https://blog.csdn.net/alicema1111/article/details/129338432
Python Yolov5火焰烟雾识别源码分享: https://blog.csdn.net/alicema1111/article/details/128420453
Python+Yolov8路面桥梁墙体裂缝识别: https://blog.csdn.net/alicema1111/article/details/133434445

相关推荐
2zcode28 分钟前
基于MATLAB深度学习的乳腺钼靶影像乳腺癌智能诊断系统设计与实现
开发语言·深度学习·matlab·乳腺癌
MoonBit月兔32 分钟前
错过大赛报名?MoonBit 开源大赛- 8 月黑客松正式开启
开发语言·ai-native·moonbit
小猴子爱上树34 分钟前
一站式解决图片视频翻译难题的高效AI工具
人工智能·python·音视频
fqbqrr43 分钟前
2607d,C++细节比不上d
c++·d
^yi44 分钟前
【C++】继承的那些事儿~
c++·继承·菱形继承·隐藏·final·继承原理·多继承的指针偏移
weixin_538601971 小时前
智能体测开Day31
开发语言·python
lbb 小魔仙1 小时前
Git + Python 项目工作流最佳实践:pre-commit、CI、CHANGELOG 自动化
git·python·ci/cd
dyxal1 小时前
最长公共子序列(LCS)
python·算法
geovindu1 小时前
java: Facade Pattern
java·开发语言·后端·外观模式·结构型模式
listening7771 小时前
HarmonyOS 6.1 元服务深度优化:从“秒开”到“常驻”的极致体验
java·开发语言·spring