TTKMusicPlayer  4.2.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"
2 #include "musicwyqueryrequest.h"
3 
4 static constexpr const char *WY_COVER_URL = "VUFVWVFwcE90dTIzME9XR2NsY3JYYldmTmpWZEJWZ0k5d0U1UXZUN1Jobz0=";
5 static constexpr const char *WY_COVER_DATA_URL = "STE3dncrRTVPdVBiRVlZaHk5M2FRRXhQamM4PQ==";
6 
8  : MusicCoverRequest(parent)
9 {
10 
11 }
12 
14 {
15  TTKEventLoop loop;
16  MusicWYQueryRequest query(this), *d = &query;
17  connect(d, SIGNAL(downLoadDataChanged(QString)), &loop, SLOT(quit()));
19  d->startToSearch(url);
20  loop.exec();
21 
22  if(d->isEmpty())
23  {
24  TTK_INFO_STREAM(className() << "downLoadFinished");
25  Q_EMIT downLoadDataChanged({});
26  deleteAll();
27  return;
28  }
29 
30  QNetworkRequest request;
31  const QByteArray &parameter = ReqWYInterface::makeTokenRequest(&request,
34  TTK::Algorithm::mdII(WY_COVER_DATA_URL, false).arg(d->items().front().m_songId));
35 
36  m_reply = m_manager.post(request, parameter);
37  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
39 }
40 
42 {
43  TTK_INFO_STREAM(className() << __FUNCTION__);
44 
46  if(m_reply && m_reply->error() == QNetworkReply::NoError)
47  {
48  QJsonParseError ok;
49  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
51  {
52  QString url;
53  QVariantMap value = json.toVariant().toMap();
54 
55  if(value["code"].toInt() == 200)
56  {
57  value = value["data"].toMap();
58  url = value["videoPlayUrl"].toString();
59  }
60 
61  Q_EMIT downLoadDataChanged(url);
62  deleteAll();
63  }
64  }
65  else
66  {
67  TTK_ERROR_STREAM("Download dynamic cover data error");
68  Q_EMIT downLoadDataChanged({});
69  deleteAll();
70  }
71 }
const TTK::MusicSongInformationList & items() const noexcept
static constexpr const char * WY_SONG_PATH_V3_URL
void downLoadDataChanged(const QString &bytes)
void setQueryMode(QueryMode mode) noexcept
QNetworkReply * m_reply
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)
virtual void downLoadFinished()
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 startToSearch(const QString &value) override
The class of the cover data download request.
#define TTK_ERROR_STREAM(msg)
Definition: ttklogger.h:76
QByteArray makeTokenRequest(QNetworkRequest *request, const QString &query, const QString &data)
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
The class of the wangyi query download data from net.
virtual void downLoadFinished() overridefinal
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59