TTKMusicPlayer  4.3.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicwycommentsrequest.cpp
Go to the documentation of this file.
3 
4 static constexpr const char *WY_COMMENT_SONG_URL = "VjJRaU8vR2xYZmIxM0RIMUNxU2NJRzlLSDVqZTY5ZVVXNlhUWndSWkc1TmlEajFKaGRwaS9TRThKRCtyL0Z4SWVSWmovSzhqMzFKV1R3QmxwUVBHSzA5ZGx0d2VmN0JMaVRFaVRnPT0=";
5 static constexpr const char *WY_COMMENT_PLAYLIST_URL = "aURTWlNhUlJISEc3VmExQ2FsUXZqS1lXOVdGSzBOc3dmaHNMK3M0U2tScnNIdHc3Y2NJSGJBVVhhUTc1eHIrNEJrdmgzUlpCOU96UmNsZEEwbnIvQkZQU0tFZU9oY0JKazNlRWZRPT0=";
6 static constexpr const char *WY_COMMENT_DATA_URL = "c0RITC8rR0FPY1VXdVpzT2Rsb0hJYVBITUM5cDR4d0YxTERqRzJMUUpPWlhUemt3Z2l0M0dMNTQ2MkJ0aVdCTUZaYW5pdkRDWTdsbTE5aEM=";
7 
9  : MusicCommentsRequest(parent)
10 {
12 }
13 
15 {
16  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__ << offset);
17 
18  deleteAll();
19  m_totalSize = 0;
21 
22  QNetworkRequest request;
23  const QByteArray &parameter = ReqWYInterface::makeTokenRequest(&request,
25  TTK::Algorithm::mdII(WY_COMMENT_DATA_URL, false).arg(m_id).arg(m_pageSize * offset).arg(m_pageSize));
26 
27  m_reply = m_manager.post(request, parameter);
28  connect(m_reply, SIGNAL(finished()), SLOT(downloadFinished()));
30 }
31 
33 {
34  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__ << value);
35 
36  TTKEventLoop loop;
37  MusicWYQuerySongRequest query(this), *req = &query;
38  connect(req, SIGNAL(downloadDataChanged(QString)), &loop, SLOT(quit()));
40  req->startToSearch(value);
41  loop.exec();
42 
43  m_id.clear();
44  if(!req->isEmpty())
45  {
46  MusicCommentsRequest::startToSearch(req->items().first().m_songId);
47  }
48 }
49 
51 {
52  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__);
53 
55  if(m_reply && m_reply->error() == QNetworkReply::NoError)
56  {
57  QJsonParseError ok;
58  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
60  {
61  QVariantMap value = json.toVariant().toMap();
62  if(value["code"].toInt() == 200)
63  {
64  m_totalSize = value["total"].toInt();
65 
66  const QVariantList &datas = value["comments"].toList();
67  for(const QVariant &var : qAsConst(datas))
68  {
69  if(var.isNull())
70  {
71  continue;
72  }
73 
74  value = var.toMap();
76 
78  const QVariantMap &user = value["user"].toMap();
79  item.m_nickName = user["nickname"].toString();
80  item.m_coverUrl = user["avatarUrl"].toString();
81  item.m_count = value["likedCount"].toString();
82  item.m_time = value["time"].toString();
83  item.m_description = value["content"].toString();
84  Q_EMIT createCommentItem(item);
85  }
86  }
87  }
88  }
89 
90  Q_EMIT downloadDataChanged({});
91  deleteAll();
92 }
93 
94 
95 
97  : MusicCommentsRequest(parent)
98 {
100 }
101 
103 {
104  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__ << offset);
105 
106  deleteAll();
107  m_totalSize = 0;
109 
110  QNetworkRequest request;
111  const QByteArray &parameter = ReqWYInterface::makeTokenRequest(&request,
113  TTK::Algorithm::mdII(WY_COMMENT_DATA_URL, false).arg(m_id).arg(m_pageSize * offset).arg(m_pageSize));
114 
115  m_reply = m_manager.post(request, parameter);
116  connect(m_reply, SIGNAL(finished()), SLOT(downloadFinished()));
118 }
119 
121 {
122  TTK_INFO_STREAM(metaObject()->className() << __FUNCTION__);
123 
125  if(m_reply && m_reply->error() == QNetworkReply::NoError)
126  {
127  QJsonParseError ok;
128  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
130  {
131  QVariantMap value = json.toVariant().toMap();
132  if(value["code"].toInt() == 200)
133  {
134  m_totalSize = value["total"].toInt();
135 
136  const QVariantList &datas = value["comments"].toList();
137  for(const QVariant &var : qAsConst(datas))
138  {
139  if(var.isNull())
140  {
141  continue;
142  }
143 
144  value = var.toMap();
146 
147  MusicResultDataItem item;
148  const QVariantMap &user = value["user"].toMap();
149  item.m_nickName = user["nickname"].toString();
150  item.m_coverUrl = user["avatarUrl"].toString();
151  item.m_count = value["likedCount"].toString();
152  item.m_time = value["time"].toString();
153  item.m_description = value["content"].toString();
154  Q_EMIT createCommentItem(item);
155  }
156  }
157  }
158  }
159 
160  Q_EMIT downloadDataChanged({});
161  deleteAll();
162 }
const TTK::MusicSongInformationList & items() const noexcept
#define TTK_NETWORK_QUERY_CHECK(VALUE)
The class of the search result data item.
virtual void deleteAll()
The class of the wangyi query song data from net.
void setQueryMode(QueryMode mode) noexcept
QNetworkReply * m_reply
void downloadDataChanged(const QString &bytes)
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() overridefinal
virtual void startToSearch(const QString &value)
The class of the ttk event loop.
Definition: ttkeventloop.h:29
static constexpr const char * WY_COMMENT_SONG_URL
voidpf uLong offset
Definition: ioapi.h:142
ParseError error
MusicWYPlaylistCommentsRequest(QObject *parent=nullptr)
#define qAsConst
Definition: ttkqtglobal.h:57
The class of the query song comments data from net.
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
QNetworkAccessManager m_manager
virtual void startToSearch(const QString &value) overridefinal
virtual void downloadFinished() overridefinal
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:177
static constexpr const char * WY_COMMENT_PLAYLIST_URL
#define TTK_PAGE_SIZE_20
virtual void downloadFinished()
MusicWYSongCommentsRequest(QObject *parent=nullptr)
virtual void startToPage(int offset) overridefinal
virtual void startToSearch(const QString &value) override
static constexpr const char * WY_COMMENT_DATA_URL
QByteArray makeTokenRequest(QNetworkRequest *request, const QString &query, const QString &data)
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
virtual void startToPage(int offset) overridefinal
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59