TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicbdtranslationrequest.cpp
Go to the documentation of this file.
2 
3 static constexpr const char *TRANSLATION_URL = "a1ZQMG5kY2dUenpHSGhQUXV6cldhK1A1bkl2c2ROdFJLMTVteTJxeFUzSnlSQXpmRFc0MS9JdlhSMUF0SE1HR2ZYZWcxOXZDalU0SC8rVG8=";
4 
7 {
8 
9 }
10 
12 {
13  TTK_INFO_STREAM(className() << "startToRequest");
14 
16 
17  QNetworkRequest request;
19  TTK::setSslConfiguration(&request);
21 
22  m_reply = m_manager.get(request);
23  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
25 }
26 
28 {
29  TTK_INFO_STREAM(className() << "downLoadFinished");
30 
32  if(m_reply && m_reply->error() == QNetworkReply::NoError)
33  {
34  QJson::Parser json;
35  bool ok = false;
36  const QVariant &data = json.parse(m_reply->readAll(), &ok);
37  if(ok)
38  {
39  QVariantMap value = data.toMap();
40  value = value["trans_result"].toMap();
41 
42  const QVariantList &datas = value["data"].toList();
43  for(const QVariant &var : qAsConst(datas))
44  {
45  if(var.isNull())
46  {
47  continue;
48  }
49 
50  value = var.toMap();
52 
53  if(value.isEmpty() || value["dst"].toString().isEmpty())
54  {
55  continue;
56  }
57 
58  Q_EMIT downLoadDataChanged(value["dst"].toString());
59  deleteAll();
60  return;
61  }
62  }
63  }
64 
65  TTK_ERROR_STREAM("Translation source data error");
66  Q_EMIT downLoadDataChanged({});
67  deleteAll();
68 }
69 
71 {
72  switch(type)
73  {
74  case Language::Auto: return "auto";
75  case Language::Chinese: return "zh";
76  default: return {};
77  }
78 }
#define TTK_NETWORK_QUERY_CHECK(VALUE)
virtual void deleteAll()
void downLoadDataChanged(const QString &bytes)
QNetworkReply * m_reply
virtual void downLoadFinished() overridefinal
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone)
The class of the translation words request.
virtual void downLoadFinished()
virtual void startToRequest(const QString &data) overridefinal
#define qAsConst
Definition: ttkqtglobal.h:53
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:67
QNetworkAccessManager m_manager
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
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={})
TTK_MODULE_EXPORT QString toString(Record type)
MusicBDTranslationRequest(QObject *parent=nullptr)
static constexpr const char * TRANSLATION_URL
Main class used to convert JSON data to QVariant objects.
Definition: parser.h:40
QString mapToString(Language type) const
#define TTK_ERROR_STREAM(msg)
Definition: ttklogger.h:69
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59