TTKMusicPlayer  4.1.3.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musickwcoverrequest.cpp
Go to the documentation of this file.
1 #include "musickwcoverrequest.h"
4 
6  : MusicCoverRequest(parent),
7  m_decodeUrl(false)
8 {
9 
10 }
11 
13 {
14  if(url.isEmpty() || url == "NO_PIC")
15  {
16  deleteAll();
17  return;
18  }
19 
21 
23  connect(d, SIGNAL(downLoadRawDataChanged(QByteArray)), SLOT(downLoadRawDataFinished(QByteArray)));
24  d->startToRequest(url);
25 }
26 
28 {
30 
31  if(m_decodeUrl)
32  {
33  startToRequest(bytes);
34  m_decodeUrl = false;
35  }
36  else
37  {
38  Q_EMIT downLoadRawDataChanged(bytes);
39  deleteAll();
40  }
41 }
42 
43 
44 MusicKWDownLoadCoverRequest::MusicKWDownLoadCoverRequest(const QString &url, const QString &path, QObject *parent)
45  : MusicAbstractDownLoadRequest(url, path, TTK::Download::Cover, parent)
46 {
47 
48 }
49 
51 {
52  if(!m_file || (m_file->exists() && m_file->size() >= 4) || !m_file->open(QIODevice::WriteOnly) || m_url.isEmpty())
53  {
54  Q_EMIT downLoadDataChanged("The kuwo cover file create failed");
55  TTK_ERROR_STREAM(className() << "file create failed");
56  deleteAll();
57  return;
58  }
59 
61  {
62  QNetworkRequest request;
63  request.setUrl(m_url);
65 
66  const QByteArray &bytes = TTK::syncNetworkQueryForGet(&request);
67  if(bytes.isEmpty())
68  {
69  Q_EMIT downLoadDataChanged("The kuwo cover url redirection failed");
70  TTK_ERROR_STREAM(className() << "url redirection failed");
71  deleteAll();
72  return;
73  }
74 
75  m_url = bytes;
76  }
77 
78  m_speedTimer.start();
79 
80  QNetworkRequest request;
81  request.setUrl(m_url);
82  TTK::setSslConfiguration(&request);
84 
85  m_reply = m_manager.get(request);
86  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
87  connect(m_reply, SIGNAL(downloadProgress(qint64, qint64)), SLOT(downloadProgress(qint64, qint64)));
89 }
90 
92 {
94  if(m_reply && m_file && m_reply->error() == QNetworkReply::NoError)
95  {
96  m_file->write(m_reply->readAll());
97  m_file->flush();
98  m_file->close();
99  TTK_INFO_STREAM(className() << "download has finished");
100  }
101 
103  deleteAll();
104 }
void downLoadDataChanged(const QString &bytes)
virtual void downLoadFinished() overridefinal
The class of the abstract download data.
QNetworkReply * m_reply
void downLoadRawDataChanged(const QByteArray &bytes)
virtual void startToRequest() overridefinal
virtual void deleteAll() overridefinal
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone)
static constexpr const char * KW_ALBUM_COVER_INFO_URL
#define TTK_ITEM_SIZE_S
Definition: ttkglobal.h:246
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
void makeRequestRawHeader(QNetworkRequest *request)
virtual void downLoadFinished()
virtual void downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:68
The namespace of the process utils.
Definition: ttkcompat.h:24
The class of the data source download request.
QNetworkAccessManager m_manager
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:181
void startToRequest(const QString &url)
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={})
MusicKWCoverSourceRequest(QObject *parent=nullptr)
virtual void deleteAll() overridefinal
The class of the cover data download request.
MusicKWDownLoadCoverRequest(const QString &url, const QString &path, QObject *parent=nullptr)
#define TTK_ERROR_STREAM(msg)
Definition: ttklogger.h:70
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
void downLoadRawDataFinished(const QByteArray &bytes)
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59
virtual void startToRequest(const QString &url) overridefinal