TTKMusicPlayer  4.1.3.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  TTKSemaphoreLoop 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  QJson::Parser json;
49  bool ok = false;
50  const QVariant &data = json.parse(m_reply->readAll(), &ok);
51  if(ok)
52  {
53  QString url;
54  QVariantMap value = data.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 }
static constexpr const char * WY_SONG_PATH_V3_URL
void downLoadDataChanged(const QString &bytes)
QNetworkReply * m_reply
static constexpr const char * WY_COVER_URL
virtual void deleteAll() overridefinal
int exec(ProcessEventsFlags flags=AllEvents)
virtual void downLoadFinished()
static constexpr const char * WY_COVER_DATA_URL
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:68
virtual void startToRequest(const QString &url) overridefinal
QNetworkAccessManager m_manager
MusicWYCoverSourceRequest(QObject *parent=nullptr)
virtual void replyError(QNetworkReply::NetworkError error) override
QVariant parse(QIODevice *io, bool *ok=0)
Read JSON string from the I/O Device and converts it to a QVariant object.
Definition: parser.cpp:69
#define TTK_SLOT
Definition: ttkqtglobal.h:181
virtual void startToSearch(const QString &value) override
The class of the cover data download request.
Main class used to convert JSON data to QVariant objects.
Definition: parser.h:40
const TTK::MusicSongInformationList & items() const
#define TTK_ERROR_STREAM(msg)
Definition: ttklogger.h:70
The class of the semaphore event loop.
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