TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicbarragerequest.cpp
Go to the documentation of this file.
1 #include "musicbarragerequest.h"
4 
5 static constexpr const char *QUERY_URL = "QmhheGMwZFNKS3lzQjFEMGJSQ2VCVFdsZVc3Rms5cXJrNGtFM3pkVHMxU3dydVZiVHR4ZGVBPT0=";
6 
8  : MusicAbstractNetwork(parent)
9 {
10 
11 }
12 
13 void MusicBarrageRequest::startToRequest(const QString &data)
14 {
15  TTK_INFO_STREAM(className() << "startToRequest" << data);
16 
17  QNetworkRequest request;
18  request.setUrl(TTK::Algorithm::mdII(BL_MOVIE_URL, false).arg(data).arg(1));
20 
21  m_reply = m_manager.get(request);
22  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
24 }
25 
27 {
28  TTK_INFO_STREAM(className() << "downLoadFinished");
29 
31  if(m_reply && m_reply->error() == QNetworkReply::NoError)
32  {
33  QJson::Parser json;
34  bool ok = false;
35  const QVariant &data = json.parse(m_reply->readAll(), &ok);
36  if(ok)
37  {
38  QVariantMap value = data.toMap();
39  if(value["code"].toInt() == 0 && value.contains("data"))
40  {
41  value = value["data"].toMap();
42 
43  const QVariantList &datas = value["result"].toList();
44  for(const QVariant &var : qAsConst(datas))
45  {
46  if(var.isNull())
47  {
48  continue;
49  }
50 
51  value = var.toMap();
53 
55  info.m_songId = value["bvid"].toString();
56  info.m_songName = TTK::String::charactersReplace(value["title"].toString());
57 
58  QString cid;
60 
61  if(!cid.isEmpty())
62  {
64  connect(d, SIGNAL(downLoadRawDataChanged(QByteArray)), SIGNAL(downLoadRawDataChanged(QByteArray)));
65  d->startToRequest(TTK::Algorithm::mdII(QUERY_URL, false).arg(cid));
66 
67  deleteAll();
68  return;
69  }
70  }
71  }
72  }
73  }
74 
75  Q_EMIT downLoadDataChanged({});
76  deleteAll();
77 }
TTK_MODULE_EXPORT QString charactersReplace(const QString &value)
static constexpr const char * QUERY_URL
#define TTK_NETWORK_QUERY_CHECK(VALUE)
MusicBarrageRequest(QObject *parent=nullptr)
virtual void deleteAll()
void downLoadDataChanged(const QString &bytes)
void downLoadRawDataChanged(const QByteArray &bytes)
QNetworkReply * m_reply
virtual void downLoadFinished() overridefinal
static constexpr const char * BL_MOVIE_URL
virtual void downLoadFinished()
void startToRequest(const QString &data)
#define qAsConst
Definition: ttkqtglobal.h:53
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:67
The class of the data source download request.
QNetworkAccessManager m_manager
void parseFromMovieInfo(TTK::MusicSongInformation *info, QString &cid)
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
The class of the abstract network.
void startToRequest(const QString &url)
TTK_MODULE_EXPORT QString toString(Record type)
Main class used to convert JSON data to QVariant objects.
Definition: parser.h:40
void makeRequestRawHeader(QNetworkRequest *request)
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
The class of the music song information.
Definition: musicobject.h:281
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59