TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicsongsuggestrequest.cpp
Go to the documentation of this file.
3 
4 static constexpr const char *QUERY_URL = "Y1U5RUVkYWE4R205VEFEQ3pXZlNGQWNEcFlobFBMNVhMUXRxejhkbHZnaFhVbkNNdFE3T1BzdWRQTG11c3FsT2JPYi84ODFYcG9yd1phMFExQi9qVElDZmhPNlFUZDN5";
5 
7  : MusicPageQueryRequest(parent)
8 {
9 
10 }
11 
12 void MusicSongSuggestRequest::startToSearch(const QString &value)
13 {
14  TTK_INFO_STREAM(className() << "startToSearch" << value);
15 
16  deleteAll();
17 
18  QNetworkRequest request;
19  request.setUrl(TTK::Algorithm::mdII(QUERY_URL, false).arg(value));
21 
22  m_reply = m_manager.get(request);
23  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
25 }
26 
28 {
29  TTK_INFO_STREAM(className() << "downLoadFinished");
30 
31  m_items.clear();
33 
34  if(m_reply && m_reply->error() == QNetworkReply::NoError)
35  {
36  QJson::Parser json;
37  bool ok = false;
38  const QVariant &data = json.parse(m_reply->readAll(), &ok);
39  if(ok)
40  {
41  QVariantMap value = data.toMap();
42 
43  if(value["error_code"].toInt() == 0 && value.contains("data"))
44  {
45  const QVariantList &datas = value["data"].toList();
46  for(const QVariant &var : qAsConst(datas))
47  {
48  if(var.isNull())
49  {
50  continue;
51  }
52 
53  value = var.toMap();
55 
56  if(value["LableName"].toString().isEmpty())
57  {
58  for(const QVariant &var : value["RecordDatas"].toList())
59  {
60  if(var.isNull())
61  {
62  continue;
63  }
64 
65  value = var.toMap();
67 
69  item.m_name = TTK::String::charactersReplace(value["HintInfo"].toString());
70  m_items << item;
71  }
72  }
73  break;
74  }
75  }
76  }
77  }
78 
79  Q_EMIT downLoadDataChanged({});
80  deleteAll();
81 }
TTK_MODULE_EXPORT QString charactersReplace(const QString &value)
#define TTK_NETWORK_QUERY_CHECK(VALUE)
MusicSongSuggestRequest(QObject *parent=nullptr)
The class of the search result data item.
virtual void deleteAll()
void downLoadDataChanged(const QString &bytes)
QNetworkReply * m_reply
The class of the abstract download page query request.
virtual void downLoadFinished()
MusicResultDataItemList m_items
void makeRequestRawHeader(QNetworkRequest *request)
#define qAsConst
Definition: ttkqtglobal.h:53
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:67
virtual void startToSearch(const QString &value)
QNetworkAccessManager m_manager
virtual void downLoadFinished() overridefinal
static constexpr const char * QUERY_URL
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:165
TTK_MODULE_EXPORT QString toString(Record type)
Main class used to convert JSON data to QVariant objects.
Definition: parser.h:40
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59