TTKMusicPlayer  4.3.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicwycoverrequest.cpp
Go to the documentation of this file.
1 #include "musicwycoverrequest.h"
3 
4 static constexpr const char *WY_COVER_URL = "VUFVWVFwcE90dTIzME9XR2NsY3JYYldmTmpWZEJWZ0k5d0U1UXZUN1Jobz0=";
5 static constexpr const char *WY_COVER_DATA_URL = "STE3dncrRTVPdVBiRVlZaHk5M2FRRXhQamM4PQ==";
6 static constexpr const char *WY_COVER_BASE_URL = "cmNsdVp5dFI1TG5VMVg1N2w1bnZwOEx0TGlUazZuZ1JFMkg0dVcvS0ZKbExPL2d0UW9kT0RaZHNhMzFXcjZiVytiZmtLY2hvYjk0bVEyZDhWaldiTmx6V0pmaz0=";
7 
9  : MusicCoverRequest(parent)
10 {
11 
12 }
13 
15 {
16  TTKEventLoop loop;
17  MusicWYQuerySongRequest query(this), *req = &query;
18  connect(req, SIGNAL(downloadDataChanged(QString)), &loop, SLOT(quit()));
20  req->startToSearch(url);
21  loop.exec();
22 
23  if(req->isEmpty())
24  {
25  TTK_INFO_STREAM(metaObject()->className() << "downloadFinished");
26  Q_EMIT downloadDataChanged({});
27  deleteAll();
28  return;
29  }
30 
31  QNetworkRequest request;
32  const QByteArray &parameter = ReqWYInterface::makeTokenRequest(&request,
35  TTK::Algorithm::mdII(WY_COVER_DATA_URL, false).arg(req->items().first().m_songId));
36 
37  m_reply = m_manager.post(request, parameter);
38  connect(m_reply, SIGNAL(finished()), SLOT(downloadFinished()));
40 }
41 
43 {
44  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__);
45 
47  if(m_reply && m_reply->error() == QNetworkReply::NoError)
48  {
49  QJsonParseError ok;
50  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
52  {
53  QString url;
54  QVariantMap value = json.toVariant().toMap();
55 
56  if(value["code"].toInt() == 200)
57  {
58  value = value["data"].toMap();
59  url = value["videoPlayUrl"].toString();
60  }
61 
62  Q_EMIT downloadDataChanged(url);
63  deleteAll();
64  }
65  }
66  else
67  {
68  TTK_ERROR_STREAM("Download dynamic cover data error");
69  Q_EMIT downloadDataChanged({});
70  deleteAll();
71  }
72 }
virtual void downloadFinished() overridefinal
const TTK::MusicSongInformationList & items() const noexcept
The class of the wangyi query song data from net.
void setQueryMode(QueryMode mode) noexcept
QNetworkReply * m_reply
void downloadDataChanged(const QString &bytes)
QVariant toVariant() const
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
static constexpr const char * WY_COVER_URL
virtual void deleteAll() overridefinal
int exec(ProcessEventsFlags flags=AllEvents)
The class of the ttk event loop.
Definition: ttkeventloop.h:29
ParseError error
static constexpr const char * WY_COVER_DATA_URL
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
virtual void startToRequest(const QString &url) overridefinal
QNetworkAccessManager m_manager
MusicWYCoverSourceRequest(QObject *parent=nullptr)
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:177
virtual void downloadFinished()
virtual void startToSearch(const QString &value) override
The class of the cover data download request.
#define TTK_ERROR_STREAM(msg)
Definition: ttklogger.h:76
static constexpr const char * WY_COVER_BASE_URL
QByteArray makeTokenRequest(QNetworkRequest *request, const QString &query, const QString &data)
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59