TTKMusicPlayer  4.2.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musickgcommentsrequest.cpp
Go to the documentation of this file.
2 #include "musickgqueryrequest.h"
3 
5  : MusicCommentsRequest(parent)
6 {
8 }
9 
11 {
12  TTK_INFO_STREAM(className() << __FUNCTION__ << offset);
13 
14  deleteAll();
15  m_totalSize = 0;
17 
18  QNetworkRequest request;
19  request.setUrl(TTK::Algorithm::mdII(KG_COMMENT_SONG_URL, false).arg(m_id).arg(offset + 1).arg(m_pageSize));
21 
22  m_reply = m_manager.get(request);
23  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
25 }
26 
28 {
29  TTK_INFO_STREAM(className() << __FUNCTION__ << value);
30 
31  TTKEventLoop loop;
32  MusicKGQueryRequest query(this), *d = &query;
33  connect(d, SIGNAL(downLoadDataChanged(QString)), &loop, SLOT(quit()));
35  d->startToSearch(value);
36  loop.exec();
37 
38  m_id.clear();
39  if(!d->isEmpty())
40  {
41  MusicCommentsRequest::startToSearch(d->items().front().m_songId);
42  }
43 }
44 
46 {
47  TTK_INFO_STREAM(className() << __FUNCTION__);
48 
50  if(m_reply && m_reply->error() == QNetworkReply::NoError)
51  {
52  QJsonParseError ok;
53  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
55  {
56  QVariantMap value = json.toVariant().toMap();
57  if(value["err_code"].toInt() == 0)
58  {
59  m_totalSize = value["count"].toInt();
60 
61  const QVariantList &datas = value["list"].toList();
62  for(const QVariant &var : qAsConst(datas))
63  {
64  if(var.isNull())
65  {
66  continue;
67  }
68 
69  value = var.toMap();
71 
73  item.m_count = value["like"].toMap()["count"].toString();
74  item.m_time = TTKDateTime::format(value["addtime"].toString(), TTK_DATE_TIMES_FORMAT);
75  item.m_description = value["content"].toString();
76  item.m_nickName = value["user_name"].toString();
77  item.m_coverUrl = value["user_pic"].toString();
78  Q_EMIT createCommentItem(item);
79  }
80  }
81  }
82  }
83 
84  Q_EMIT downLoadDataChanged({});
85  deleteAll();
86 }
87 
88 
89 
91  : MusicCommentsRequest(parent)
92 {
94 }
95 
97 {
98  TTK_INFO_STREAM(className() << __FUNCTION__ << offset);
99 
100  deleteAll();
101  m_totalSize = 0;
103 
104  QNetworkRequest request;
105  request.setUrl(TTK::Algorithm::mdII(KG_COMMENT_PLAYLIST_URL, false).arg(m_id).arg(offset + 1).arg(m_pageSize));
107 
108  m_reply = m_manager.get(request);
109  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
111 }
112 
114 {
115  TTK_INFO_STREAM(className() << __FUNCTION__);
116 
118  if(m_reply && m_reply->error() == QNetworkReply::NoError)
119  {
120  QJsonParseError ok;
121  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
123  {
124  QVariantMap value = json.toVariant().toMap();
125  if(value["err_code"].toInt() == 0)
126  {
127  m_totalSize = value["count"].toInt();
128 
129  const QVariantList &datas = value["list"].toList();
130  for(const QVariant &var : qAsConst(datas))
131  {
132  if(var.isNull())
133  {
134  continue;
135  }
136 
137  value = var.toMap();
139 
140  MusicResultDataItem item;
141  item.m_count = value["like"].toMap()["count"].toString();
142  item.m_time = TTKDateTime::format(value["addtime"].toString(), TTK_DATE_TIMES_FORMAT);
143  item.m_description = value["content"].toString();
144  item.m_nickName = value["user_name"].toString();
145  item.m_coverUrl = value["user_pic"].toString();
146  Q_EMIT createCommentItem(item);
147  }
148  }
149  }
150  }
151 
152  Q_EMIT downLoadDataChanged({});
153  deleteAll();
154 }
const TTK::MusicSongInformationList & items() const noexcept
#define TTK_NETWORK_QUERY_CHECK(VALUE)
The class of the search result data item.
virtual void deleteAll()
void downLoadDataChanged(const QString &bytes)
void setQueryMode(QueryMode mode) noexcept
static constexpr const char * KG_COMMENT_PLAYLIST_URL
QNetworkReply * m_reply
static constexpr const char * KG_COMMENT_SONG_URL
comment url
virtual void startToPage(int offset) overridefinal
virtual void startToPage(int offset) overridefinal
QVariant toVariant() const
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
void createCommentItem(const MusicResultDataItem &item)
int exec(ProcessEventsFlags flags=AllEvents)
virtual void downLoadFinished()
virtual void startToSearch(const QString &value)
The class of the ttk event loop.
Definition: ttkeventloop.h:29
MusicKGSongCommentsRequest(QObject *parent=nullptr)
The class of the kugou query download data from net.
voidpf uLong offset
Definition: ioapi.h:142
ParseError error
#define qAsConst
Definition: ttkqtglobal.h:57
The class of the query song comments download data from net.
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
QNetworkAccessManager m_manager
#define TTK_DATE_TIMES_FORMAT
Definition: ttkglobal.h:312
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:177
MusicKGPlaylistCommentsRequest(QObject *parent=nullptr)
#define COMMENT_PAGE_SIZE
TTK_MODULE_EXPORT QString toString(Record type) noexcept
virtual void downLoadFinished() overridefinal
virtual void startToSearch(const QString &value) overridefinal
virtual void startToSearch(const QString &value) override
static QString format(const QString &time, const QString &format)
Definition: ttktime.cpp:254
void makeRequestRawHeader(QNetworkRequest *request) noexcept
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