TTKMusicPlayer  4.2.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() << __FUNCTION__);
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() << __FUNCTION__);
30 
32  if(m_reply && m_reply->error() == QNetworkReply::NoError)
33  {
34  QJsonParseError ok;
35  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
37  {
38  QVariantMap value = json.toVariant().toMap();
39  value = value["trans_result"].toMap();
40 
41  const QVariantList &datas = value["data"].toList();
42  for(const QVariant &var : qAsConst(datas))
43  {
44  if(var.isNull())
45  {
46  continue;
47  }
48 
49  value = var.toMap();
51 
52  if(value.isEmpty() || value["dst"].toString().isEmpty())
53  {
54  continue;
55  }
56 
57  Q_EMIT downLoadDataChanged(value["dst"].toString());
58  deleteAll();
59  return;
60  }
61  }
62  }
63 
64  TTK_ERROR_STREAM("Translation source data error");
65  Q_EMIT downLoadDataChanged({});
66  deleteAll();
67 }
68 
70 {
71  switch(type)
72  {
73  case Language::Auto: return "auto";
74  case Language::Chinese: return "zh";
75  default: return {};
76  }
77 }
#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
virtual void downLoadFinished() overridefinal
QVariant toVariant() const
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
The class of the translation words request.
virtual void downLoadFinished()
virtual void startToRequest(const QString &data) overridefinal
ParseError error
#define qAsConst
Definition: ttkqtglobal.h:57
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
QNetworkAccessManager m_manager
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:177
TTK_MODULE_EXPORT QString toString(Record type) noexcept
MusicBDTranslationRequest(QObject *parent=nullptr)
static constexpr const char * TRANSLATION_URL
QString mapToString(Language type) const
#define TTK_ERROR_STREAM(msg)
Definition: ttklogger.h:76
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59