TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicpvcounterrequest.cpp
Go to the documentation of this file.
2 #include "ttkabstractxml.h"
3 
4 #include "qsync/qsyncutils.h"
5 
6 static constexpr const char *OS_COUNTER_URL = "resource/counter";
7 
9  : MusicAbstractNetwork(parent)
10 {
11 
12 }
13 
15 {
16  QByteArray bytes;
17  QFile file(APPCACHE_DIR_FULL + OS_COUNTER_URL);
18  if(file.open(QIODevice::ReadOnly))
19  {
20  TTK_ERROR_STREAM("PV counter using local resource config");
21  bytes = file.readAll();
22  file.close();
23  }
24  else
25  {
26  TTK_ERROR_STREAM("PV counter using network resource config");
27  QNetworkRequest request;
29  bytes = TTK::syncNetworkQueryForGet(&request);
30  }
31 
32  if(bytes.isEmpty())
33  {
34  TTK_ERROR_STREAM("Counter PV data error");
36  return;
37  }
38 
39  QNetworkRequest request;
40  request.setUrl(QString::fromUtf8(bytes));
41  TTK::setSslConfiguration(&request);
43 
44  m_reply = m_manager.get(request);
45  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
47 }
48 
50 {
51  bool ok = false;
52 
54  if(m_reply && m_reply->error() == QNetworkReply::NoError)
55  {
56  TTKAbstractXml xml;
57  if(xml.fromByteArray(m_reply->readAll()))
58  {
59  const QStringList &data = xml.readMultiTextByTagName("tspan");
60  if(!data.isEmpty())
61  {
62  ok = true;
63  Q_EMIT downLoadDataChanged(data.join(""));
64  }
65  }
66  }
67 
68  if(!ok)
69  {
70  TTK_ERROR_STREAM("PV counter data error");
72  }
73 
74  deleteAll();
75 }
MusicPVCounterRequest(QObject *parent=nullptr)
virtual void downLoadFinished() overridefinal
virtual void deleteAll()
void downLoadDataChanged(const QString &bytes)
The class of the ttk xml interface.
QNetworkReply * m_reply
#define TTK_DEFAULT_STR
Definition: ttkglobal.h:200
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone)
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
virtual void downLoadFinished()
static constexpr const char * OS_COUNTER_URL
#define APPCACHE_DIR_FULL
Definition: musicobject.h:121
QNetworkAccessManager m_manager
bool fromByteArray(const QByteArray &data)
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:165
The class of the abstract network.
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={})
#define TTK_ERROR_STREAM(msg)
Definition: ttklogger.h:69
QStringList readMultiTextByTagName(const QString &tagName) const
static QString makeDataBucketUrl()
Definition: qsyncutils.cpp:90
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59