TTKMusicPlayer  4.3.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicwyqueryartistlistrequest.cpp
Go to the documentation of this file.
2 
3 static constexpr const char *WY_ARTIST_LIST_URL = "dkxWWG8wQTVVa0xkY1dydjlwTWtNNGtSb3RBWWZqbURVZGtCWHMraFlSNVVRWG9rSnEwSzI4M3o4SDg9";
4 static constexpr const char *WY_ARTIST_LIST_DATA_URL = "eWJCN095NWdwcXlZRkpIN1luQlVQV21vZXVxSytrUnIyUDFabFBDWUhvd2N0bkVhbkZyYVU3OXNjR3hJOVF5cUUzWDVQcFQ2RDh1cE1mRG52ZExFVTF0UEJDb09KdUkyWXV4T3p3PT0=";
5 static constexpr const char *WY_HOT_ARTIST_LIST_URL = "c1l3a204QlJmWnJ0WVhxOTZlNU9RdWJVeGZRWDIvaU83RWxWTTIrRW84aExRajVWWEZXMnJmZlowRFpmWFdEV2NoM29IQT09";
6 static constexpr const char *WY_HOT_ARTIST_LIST_DATA_URL = "TG9pYmlKeWRiaG45TFlHalhUNWtzYUxDUEZZL0VVdGJEOFlTTkFuaWdmb3hDempSRUMwNkJmSkdpeFU9";
7 
10 {
13 }
14 
16 {
17  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__ << offset);
18 
19  deleteAll();
20  m_totalSize = m_pageSize; // 0
22 
23  QString catId = "1001", initial = "-1";
24  const QStringList &dds = m_queryValue.split(TTK_SPLITER);
25 
26  if(dds.count() == 2)
27  {
28  catId = dds[0];
29  if(catId.isEmpty())
30  {
31  catId = "1001";
32  }
33 
34  int id = dds[1].toInt();
35  if(id <= 0)
36  {
37  id = -1;
38  }
39  else if(id > 0 && id <= 26)
40  {
41  id += 65 - 1;
42  }
43  else if(id > 26)
44  {
45  id = 0;
46  }
47 
48  initial = QString::number(id);
49  }
50 
51  QNetworkRequest request;
52  const QByteArray &parameter = ReqWYInterface::makeTokenRequest(&request,
54  TTK::Algorithm::mdII(WY_ARTIST_LIST_DATA_URL, false).arg(catId, initial).arg(m_pageSize * offset).arg(m_pageSize));
55 
56  m_reply = m_manager.post(request, parameter);
57  connect(m_reply, SIGNAL(finished()), SLOT(downloadFinished()));
59 }
60 
62 {
63  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__);
64 
66  if(m_reply && m_reply->error() == QNetworkReply::NoError)
67  {
68  QJsonParseError ok;
69  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
71  {
72  QVariantMap value = json.toVariant().toMap();
73  if(value["code"].toInt() == 200 && value.contains("artists"))
74  {
75  const QVariantList &datas = value["artists"].toList();
76  for(const QVariant &var : qAsConst(datas))
77  {
78  if(var.isNull())
79  {
80  continue;
81  }
82 
83  value = var.toMap();
85 
87  item.m_id = value["id"].toString();
88  item.m_name = value["name"].toString();
89  Q_EMIT createArtistListItem(item);
90  }
91  }
92  }
93  }
94 
95 // Q_EMIT downloadDataChanged({});
96  deleteAll();
97 }
98 
99 
100 
103 {
106  m_totalSize = 100;
107 }
108 
110 {
111  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__ << offset);
112 
113  deleteAll();
115 
116  QNetworkRequest request;
117  const QByteArray &parameter = ReqWYInterface::makeTokenRequest(&request,
120 
121  m_reply = m_manager.post(request, parameter);
122  connect(m_reply, SIGNAL(finished()), SLOT(downloadFinished()));
124 }
125 
127 {
128  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__);
129 
131  if(m_reply && m_reply->error() == QNetworkReply::NoError)
132  {
133  QJsonParseError ok;
134  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
136  {
137  QVariantMap value = json.toVariant().toMap();
138  if(value["code"].toInt() == 200 && value.contains("artists"))
139  {
140  const QVariantList &datas = value["artists"].toList();
141  for(const QVariant &var : qAsConst(datas))
142  {
143  if(var.isNull())
144  {
145  continue;
146  }
147 
148  value = var.toMap();
150 
151  MusicResultDataItem item;
152  item.m_id = value["id"].toString();
153  item.m_name = value["name"].toString();
154  item.m_coverUrl = value["picUrl"].toString();
155  Q_EMIT createArtistListItem(item);
156  }
157  }
158  }
159  }
160 
161  Q_EMIT downloadDataChanged({});
162  deleteAll();
163 }
#define TTK_NETWORK_QUERY_CHECK(VALUE)
The class of the search result data item.
virtual void deleteAll()
virtual void downloadFinished() overridefinal
QNetworkReply * m_reply
void downloadDataChanged(const QString &bytes)
QVariant toVariant() const
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
#define TTK_PAGE_SIZE_30
#define TTK_PAGE_SIZE_100
#define TTK_SPLITER
Definition: ttkglobal.h:275
static constexpr const char * WY_ARTIST_LIST_URL
The class of the query artist list data from net.
MusicWYQueryHotArtistListRequest(QObject *parent=nullptr)
MusicWYQueryArtistListRequest(QObject *parent=nullptr)
voidpf uLong offset
Definition: ioapi.h:142
ParseError error
#define qAsConst
Definition: ttkqtglobal.h:57
static constexpr const char * QUERY_WY_INTERFACE
virtual void startToPage(int offset) overridefinal
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
static constexpr const char * WY_HOT_ARTIST_LIST_URL
QNetworkAccessManager m_manager
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:177
static constexpr const char * WY_HOT_ARTIST_LIST_DATA_URL
static constexpr const char * WY_ARTIST_LIST_DATA_URL
virtual void downloadFinished() override
void createArtistListItem(const MusicResultDataItem &item)
QByteArray makeTokenRequest(QNetworkRequest *request, const QString &query, const QString &data)
virtual void startToPage(int offset) overridefinal
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59