TTKMusicPlayer  4.3.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musickwqueryartistlistrequest.cpp
Go to the documentation of this file.
2 
3 static constexpr const char *KW_ARTIST_LIST_URL = "NEtJeVhYZFJ4NE4reDlqU2paYVhpUlZqVWtWWXBnbUVnTGVFRVdkbzBTb2dldXhtdnpaNlhVTHZzSk1yaU0wTHowZTR2dWxiYzg4c2xybmtsNU1FU2w1aFZKcTdsWERvMzVKUVdNSWNQemdUQ1FLMVF3V3RUdE1iVTZmQ1FRK3g=";
4 static constexpr const char *KW_HOT_ARTIST_LIST_URL = KW_ARTIST_LIST_URL;
5 
8 {
11 }
12 
14 {
15  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__ << offset);
16 
17  deleteAll();
18  m_totalSize = 0;
20 
21  QString catId = "0", initial;
22  const QStringList &dds = m_queryValue.split(TTK_SPLITER);
23 
24  if(dds.count() == 2)
25  {
26  catId = dds[0];
27  if(catId.isEmpty())
28  {
29  catId = "0";
30  }
31 
32  const int id = dds[1].toInt();
33  if(id > 0 && id <= 26)
34  {
35  initial = QString("&prefix=%1").arg(TTKStaticCast(char, id + 65 - 1));
36  }
37  }
38 
39  QNetworkRequest request;
40  request.setUrl(TTK::Algorithm::mdII(KW_ARTIST_LIST_URL, false).arg(catId).arg(offset).arg(m_pageSize) + initial);
42 
43  m_reply = m_manager.get(request);
44  connect(m_reply, SIGNAL(finished()), SLOT(downloadFinished()));
46 }
47 
49 {
50  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__);
51 
53  if(m_reply && m_reply->error() == QNetworkReply::NoError)
54  {
55  QJsonParseError ok;
56  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll().replace("'", "\""), &ok);
58  {
59  QVariantMap value = json.toVariant().toMap();
60  if(value.contains("artistlist"))
61  {
62  m_totalSize = value["total"].toInt();
63 
64  const QVariantList &datas = value["artistlist"].toList();
65  for(const QVariant &var : qAsConst(datas))
66  {
67  if(var.isNull())
68  {
69  continue;
70  }
71 
72  value = var.toMap();
74 
76  item.m_id = value["id"].toString();
77  item.m_name = value["name"].toString();
78  Q_EMIT createArtistListItem(item);
79  }
80  }
81  }
82  }
83 
84 // Q_EMIT downloadDataChanged({});
85  deleteAll();
86 }
87 
88 
89 
92 {
95  m_totalSize = 100;
96 }
97 
99 {
100  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__ << offset);
101 
102  deleteAll();
104 
105  QNetworkRequest request;
106  request.setUrl(TTK::Algorithm::mdII(KW_HOT_ARTIST_LIST_URL, false).arg(0).arg(offset).arg(m_pageSize));
108 
109  m_reply = m_manager.get(request);
110  connect(m_reply, SIGNAL(finished()), SLOT(downloadFinished()));
112 }
113 
115 {
116  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__);
117 
119  if(m_reply && m_reply->error() == QNetworkReply::NoError)
120  {
121  QJsonParseError ok;
122  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll().replace("'", "\""), &ok);
124  {
125  QVariantMap value = json.toVariant().toMap();
126  if(value.contains("artistlist"))
127  {
128  m_totalSize = value["total"].toInt();
129 
130  const QVariantList &datas = value["artistlist"].toList();
131  for(const QVariant &var : qAsConst(datas))
132  {
133  if(var.isNull())
134  {
135  continue;
136  }
137 
138  value = var.toMap();
140 
141  MusicResultDataItem item;
142  item.m_id = value["id"].toString();
143  item.m_name = value["name"].toString();
145  Q_EMIT createArtistListItem(item);
146  }
147  }
148  }
149  }
150 
151  Q_EMIT downloadDataChanged({});
152  deleteAll();
153 }
MusicKWQueryArtistListRequest(QObject *parent=nullptr)
#define TTKStaticCast(x, y)
Definition: ttkglobal.h:231
#define TTK_NETWORK_QUERY_CHECK(VALUE)
The class of the search result data item.
virtual void deleteAll()
static constexpr const char * KW_ARTIST_LIST_URL
QNetworkReply * m_reply
virtual void startToPage(int offset) overridefinal
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
The class of the query artist list data from net.
MusicKWQueryHotArtistListRequest(QObject *parent=nullptr)
voidpf uLong offset
Definition: ioapi.h:142
ParseError error
#define qAsConst
Definition: ttkqtglobal.h:57
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
QNetworkAccessManager m_manager
virtual void replyError(QNetworkReply::NetworkError error) override
QString makeArtistPixmapUrl(const QString &url)
static constexpr const char * QUERY_KW_INTERFACE
#define TTK_SLOT
Definition: ttkqtglobal.h:177
TTK_MODULE_EXPORT QString toString(Record type) noexcept
void makeRequestRawHeader(QNetworkRequest *request) noexcept
virtual void startToPage(int offset) overridefinal
virtual void downloadFinished() override
static constexpr const char * KW_HOT_ARTIST_LIST_URL
void createArtistListItem(const MusicResultDataItem &item)
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
virtual void downloadFinished() overridefinal
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59