TTKMusicPlayer  4.2.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musickwdownloadimagerequest.cpp
Go to the documentation of this file.
3 
4 static constexpr const char *ART_BACKGROUND_URL = "NUJnNFVlSHprVzdaMWxMdXRvbEp5a3lldU51Um9GeU5RKzRDWFNER2FHL3pSRE1uK1VNRzVhVk53Y1JBUTlMbnhjeFBvRFMySnpUSldlY21xQjBkWE5GTWVkVXFsa0lNa1RKSnE3VHEwMDFPdVRDbXhUSThhWkM4TFI4RUZqbHFzVFFnQkpOY2hUR2c2YWdzb3U2cjBKSUdMYnpnZktucEJpbDVBTDlzMGF0QVMwcEtLR2JWVnc9PQ==";
5 
6 MusicKWDownloadBackgroundRequest::MusicKWDownloadBackgroundRequest(const QString &name, const QString &path, QObject *parent)
7  : MusicAbstractDownloadImageRequest(name, path, parent)
8 {
9 
10 }
11 
13 {
14  TTK_INFO_STREAM(className() << __FUNCTION__);
15 
17 
18  QNetworkRequest request;
19  request.setUrl(TTK::Algorithm::mdII(ART_BACKGROUND_URL, false).arg(m_name));
20  TTK::setSslConfiguration(&request);
22 
23  m_reply = m_manager.get(request);
24  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
26 }
27 
29 {
30  TTK_INFO_STREAM(className() << __FUNCTION__);
31 
33  if(m_reply && m_reply->error() == QNetworkReply::NoError)
34  {
35  const QByteArray &bytes = m_reply->readAll();
36  if(bytes != "NO_PIC")
37  {
38  QJsonParseError ok;
39  const QJsonDocument &json = QJsonDocument::fromJson(bytes, &ok);
41  {
42  QString lastUrl;
43  QVariantMap value = json.toVariant().toMap();
44 
45  const QVariantList &datas = value["array"].toList();
46  for(const QVariant &var : qAsConst(datas))
47  {
48  if(var.isNull())
49  {
50  continue;
51  }
52 
53  value = var.toMap();
55 
56  if(m_counter < m_remainCount && !value.isEmpty())
57  {
58  const QString &url = value.values().front().toString();
59  if(url.isEmpty() || url == lastUrl)
60  {
61  continue;
62  }
63 
64  lastUrl = url;
66  connect(d, SIGNAL(downLoadDataChanged(QString)), SLOT(downLoadDataFinished()));
67  d->startToRequest();
68  }
69  }
70  }
71  }
72  }
73 
74  TTK_INFO_STREAM(className() << "download image size" << m_counter);
75  Q_EMIT downLoadDataChanged(QString::number(m_counter));
76  //
77  if(m_counter == 0)
78  {
79  deleteAll();
80  }
81 }
#define TTK_NETWORK_QUERY_CHECK(VALUE)
virtual void deleteAll()
void downLoadDataChanged(const QString &bytes)
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
QNetworkReply * m_reply
QVariant toVariant() const
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
The class of the download the type of data.
virtual void downLoadFinished()
ParseError error
#define qAsConst
Definition: ttkqtglobal.h:57
const char * name
Definition: http_parser.c:458
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
virtual void downLoadFinished() overridefinal
QNetworkAccessManager m_manager
MusicKWDownloadBackgroundRequest(const QString &name, const QString &path, QObject *parent=nullptr)
#define BACKGROUND_DIR_FULL
Definition: musicobject.h:143
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:177
The class of the download art background image.
virtual void startToRequest() overridefinal
static constexpr const char * ART_BACKGROUND_URL
#define SKN_FILE
Definition: musicobject.h:69
virtual void startToRequest() override
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59