4 static constexpr
const char *
KG_UA_URL =
"cGhYNDZVdmNaVG5KZk50NVFvcUJyYWVQdmdNTkFTMmM=";
5 static constexpr
const char *
KG_COOKIE_URL =
"M1BlYjdvWUlwdHJIYXgzeGpUVDlWbnB6ZGZPaUxWVzhKdEZ2RHBHR1RBckFUbG82ZzlOOHRnMW0wUUZpVmdDNGNQMFFjTXd1OVhidmwvdHh6NjNkZ08reXEzWUl0ZXl3d21Ka3ErM1Q1eEp3WUs0YkYvV3dWVUFDSVd3YmI3c3U3c09pZTlIM1FQRFUyMG43Z2ZqRXJVTHhubkhjRC9EN3hVbzhia1QzdUZQU3orRzZZRmRncGZLazhkMD0=";
28 QNetworkRequest request;
42 QVariantMap value = json.
toVariant().toMap();
43 if(value[
"errcode"].toInt() == 0 && value.contains(
"data"))
45 value = value[
"data"].toMap();
47 info->
m_artistId = value[
"singerid"].toString();
49 info->
m_coverUrl = value[
"imgurl"].toString().replace(
"{size}",
"480");
71 if(hash.isEmpty() || album.isEmpty())
76 QNetworkRequest request;
90 QVariantMap value = json.
toVariant().toMap();
91 if(value[
"error_code"].toInt() == 0 && value.contains(
"data"))
93 QVariantList datas = value[
"data"].toList();
94 for(
const QVariant &var :
qAsConst(datas))
101 for(
const QVariant &al : var.toList())
109 item->
m_id = value[
"album_id"].toString();
112 item->
m_time = value[
"publish_date"].toString();
113 item->
m_category = value[
"language"].toString();
125 if(prop.m_bitrate == bitrate)
131 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v1 module");
135 QNetworkRequest request;
146 const QVariantMap &value = json.
toVariant().toMap();
147 if(value.contains(
"status") && value[
"status"].toInt() == 1)
150 prop.
m_url = value[
"url"].toString();
152 prop.
m_format = value[
"extName"].toString();
164 if(prop.m_bitrate == bitrate)
170 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v2 module");
172 const QString &mid =
TTK::Algorithm::mdII(
"Wk51dktMOHJXUTdmM1VsVUVXTFM5RTlYQ05laDE0Z2lZMzFPL1M1VUJSaHd1N0kwRDQxdkpWVFJPZTQ9",
false);
173 const QString &sign =
TTK::Algorithm::mdII(
"SVhlNmFTaWpqdVhYVTAwaHh4QllwRkFGSmJpY0VSZUhXQmQrV2Q4WHo0eXVCWm1zK1p0RkVRPT0=",
false);
174 const QString &user =
"0";
177 QNetworkRequest request;
179 request.setRawHeader(
"x-router",
TTK::Algorithm::mdII(
"MTJnUGtpL0hqWXhZQmlCNE9hVzVyREF0QXZmeVBNNVc=",
false).toUtf8());
189 const QVariantMap &value = json.
toVariant().toMap();
190 if(value.contains(
"status") && value[
"status"].toInt() == 1)
192 const QVariantList &datas = value[
"url"].toList();
196 prop.
m_url = datas.front().toString();
198 prop.
m_format = value[
"extName"].toString();
212 QNetworkRequest request;
223 QVariantMap value = json.
toVariant().toMap();
224 if(value.contains(
"data") && value[
"err_code"].toInt() == 0)
226 value = value[
"data"].toMap();
227 id = value[
"encode_album_audio_id"].toString();
229 const int rate = value[
"bitrate"].toInt();
230 const QString &url = value[
"play_url"].toString();
232 if(rate == bitrate && !url.isEmpty())
250 if(prop.m_bitrate == bitrate)
256 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v3 module");
271 if(prop.m_bitrate == bitrate)
277 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v4 module");
331 info->
m_formatProps = key[
"hash"].toString() +
"|" + key[
"128hash"].toString() +
"|" + key[
"320hash"].toString() +
"|" + key[
"sqhash"].toString();
TTK_MODULE_EXPORT QString charactersReplace(const QString &value)
static void parseSongPropertyV2(TTK::MusicSongInformation *info, const QString &hash, int bitrate)
TTK_MODULE_EXPORT QByteArray md5(const QByteArray &data)
The class of the search result data item.
static constexpr const char * KG_SONG_INFO_URL
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
static qint64 currentTimestamp() noexcept
QVariant toVariant() const
The class of the music song property.
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
static constexpr const char * QUERY_KG_INTERFACE
static constexpr const char * KG_SONG_PATH_V3_URL
QString makeSongArtist(const QString &name)
TTK_MODULE_EXPORT QString sizeByteToLabel(qint64 size)
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
static constexpr const char * KG_SONG_PATH_V3_DATA_URL
static constexpr const char * MDII_UA_KEY
static void parseSongProperty(TTK::MusicSongInformation *info, const QString &hash, int bitrate)
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
#define TTK_INFO_STREAM(msg)
static void parseSongPropertyV1(TTK::MusicSongInformation *info, const QString &hash, int bitrate)
static constexpr wchar_t key[]
static constexpr const char * KG_SONG_LRC_URL
static void parseSongPropertyV4(TTK::MusicSongInformation *info, const QString &hash, int bitrate)
static constexpr const char * KG_COOKIE_URL
TTK_MODULE_EXPORT QString toString(Record type) noexcept
static constexpr const char * KG_SONG_PATH_V2_URL
static constexpr const char * KG_ALBUM_INFO_URL
void parseFromSongAlbumLrc(TTK::MusicSongInformation *info)
void parseFromSongAlbumInfo(TTK::MusicSongInformation *info, const QString &album)
void parseFromSongProperty(TTK::MusicSongInformation *info, const QString &type, const QString &id, int bitrate)
void parseFromSongProperty(TTK::MusicSongInformation *info, int bitrate)
void makeRequestRawHeader(QNetworkRequest *request) noexcept
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
static void parseSongPropertyV3(TTK::MusicSongInformation *info, const QString &module, QString &id, int bitrate)
static constexpr const char * KG_SONG_PATH_V1_URL
static constexpr const char * KG_UA_URL