前言

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


运行结果

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


文章目录

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

一、所需工具软件

       1. VS2019, Qt
       2. C++

二、使用步骤

代码如下(示例):

#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();
	});
}






运行结果

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

三、在线协助:

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

当前文章连接: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

03-03 23:16