TTKMusicPlayer  4.2.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicblqueryinterface.cpp
Go to the documentation of this file.
2 #include "musicabstractnetwork.h"
3 
4 static constexpr const char *BL_MOVIE_DATA_URL = "ak5VTmcwemNhNXNpU1NCcXFTb28rWmo5TEdmMmtHNkh1ZUdHWWEveHFCWG80MnRyVkpHWHVNQ2VIN0dhUDJvOGRGVmdDei9paTFNPQ==";
5 static constexpr const char *BL_MOVIE_PLAY_URL = "REMzSnh1WU1mZ0dkTnIvUzFpZTZDOHJ1QjRFb3IxSituTHkrMGRmRlJHRERwTHd1bFJsOEJCR2JYcnNlMDdCQk1VR2JlMzJNVUhJYWxtNS84TTFzY2h4T0w1a3pReXJXVk50WTBzQlBMSjhZZGlyU3Z6aElLbTdhVUhrMmc0RnM=";
6 static constexpr const char *BL_COOKIE_URL = "R0FJc1BoY0MzL0ZtdlUzbE5UcXNWY0xqZCszUE9ReDJEZ254bDkxaTdnOFQ1REllUEpFUkJUV21ac0xNNitkYXZudDc5RTNaTHdPSzFrQ25OZFYvc2RrQVpOdVU1dDRDa3VJeEp3aStuV2hwazZoNVdYSFAxeGJ4L2MrV3hqSzd1RVJSZlZwbUdQazNIUmt3TlMvT0xSQkFUUXBicUp2aDg0OU5YS0ZCcFQvMk8xTGtiZzFsc2paeEI3WnpTZkx3QUJvai82VytwYmQrelpWbUljbTdEaVZXejg0UmlHUWZNM0xmMjc4QzlUZ2VSRi9mM1FEZzQwUTFPcjRyWDU0L0t5cWl3QmZ6K0s5SEtmeW44R1l5RHRUOXZnZHNXVlpvc09nNEJ3V0tTUk1ZQzFhQWZ4N2tHS1k4Skw0PQ==";
7 
8 void ReqBLInterface::makeRequestRawHeader(QNetworkRequest *request) noexcept
9 {
10  request->setRawHeader("Cookie", TTK::Algorithm::mdII(BL_COOKIE_URL, false).toUtf8());
11 
12  TTK::setSslConfiguration(request);
14 }
15 
17 {
18  QNetworkRequest request;
19  request.setUrl(TTK::Algorithm::mdII(BL_MOVIE_DATA_URL, false).arg(info->m_songId));
21 
22  const QByteArray &bytes = TTK::syncNetworkQueryForGet(&request);
23  if(bytes.isEmpty())
24  {
25  return;
26  }
27 
28  QJsonParseError ok;
29  const QJsonDocument &json = QJsonDocument::fromJson(bytes, &ok);
31  {
32  QVariantMap value = json.toVariant().toMap();
33  if(value["code"].toInt() == 0 && value.contains("data"))
34  {
35  const QVariantList &datas = value["data"].toList();
36  for(const QVariant &var : qAsConst(datas))
37  {
38  if(var.isNull())
39  {
40  continue;
41  }
42 
43  value = var.toMap();
44 
45  cid = value["cid"].toString();
46  break;
47  }
48  }
49  }
50 }
51 
53 {
54  QNetworkRequest request;
55  request.setUrl(TTK::Algorithm::mdII(BL_MOVIE_PLAY_URL, false).arg(info->m_songId, cid).arg(32));
57 
58  const QByteArray &bytes = TTK::syncNetworkQueryForGet(&request);
59  if(bytes.isEmpty())
60  {
61  return;
62  }
63 
64  QJsonParseError ok;
65  const QJsonDocument &json = QJsonDocument::fromJson(bytes, &ok);
67  {
68  QVariantMap value = json.toVariant().toMap();
69  if(value["code"].toInt() == 0 && value.contains("data"))
70  {
71  value = value["data"].toMap();
72 
73  const QVariantList &datas = value["durl"].toList();
74  for(const QVariant &var : qAsConst(datas))
75  {
76  if(var.isNull())
77  {
78  continue;
79  }
80 
81  value = var.toMap();
82 
84  prop.m_url = value["url"].toString();
85  prop.m_url.replace(HTTPS_PROTOCOL, HTTP_PROTOCOL);
86  prop.m_size = TTK::Number::sizeByteToLabel(value["size"].toInt());
88  prop.m_bitrate = TTK_BN_250;
89  info->m_songProps.append(prop);
90  info->m_duration = TTKTime::formatDuration(value["length"].toInt());
91  break;
92  }
93  }
94  }
95 }
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
#define HTTP_PROTOCOL
Definition: ttkglobal.h:285
QVariant toVariant() const
The class of the music song property.
Definition: musicobject.h:237
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
MusicSongPropertyList m_songProps
Definition: musicobject.h:309
TTK_MODULE_EXPORT QString sizeByteToLabel(qint64 size)
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
#define TTK_BN_250
Definition: ttkglobal.h:430
static constexpr const char * BL_MOVIE_PLAY_URL
ParseError error
#define HTTPS_PROTOCOL
Definition: ttkglobal.h:286
#define MP4_FILE_SUFFIX
Definition: musicobject.h:60
#define qAsConst
Definition: ttkqtglobal.h:57
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
static constexpr const char * BL_MOVIE_DATA_URL
void parseFromMovieInfo(TTK::MusicSongInformation *info, QString &cid)
static constexpr const char * BL_COOKIE_URL
void makeRequestRawHeader(QNetworkRequest *request) noexcept
void parseFromMovieProperty(TTK::MusicSongInformation *info, const QString &cid)
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
The class of the music song information.
Definition: musicobject.h:295
static qint64 formatDuration(const QString &time) noexcept
Definition: ttktime.cpp:123