23 QNetworkRequest request;
35 const QVariant &data = json.
parse(bytes, &ok);
38 QVariantMap value = data.toMap();
39 if(value[
"errcode"].toInt() == 0 && value.contains(
"data"))
41 value = value[
"data"].toMap();
43 info->
m_artistId = value[
"singerid"].toString();
45 info->
m_coverUrl = value[
"imgurl"].toString().replace(
"{size}",
"480");
67 if(hash.isEmpty() || album.isEmpty())
72 QNetworkRequest request;
84 const QVariant &data = json.
parse(bytes, &ok);
87 QVariantMap value = data.toMap();
88 if(value[
"error_code"].toInt() == 0 && value.contains(
"data"))
90 QVariantList datas = value[
"data"].toList();
91 for(
const QVariant &var :
qAsConst(datas))
98 for(
const QVariant &al : var.toList())
106 item->
m_id = value[
"album_id"].toString();
110 item->
m_category = value[
"language"].toString();
127 if(prop.m_bitrate == bitrate)
133 bool foundProp =
false;
135 const QByteArray &encodedData =
TTK::Algorithm::md5(QString(
"%1kgcloudv2").arg(hash).toUtf8());
137 QNetworkRequest request;
146 const QVariant &data = json.
parse(bytes, &ok);
149 const QVariantMap &value = data.toMap();
150 if(value.contains(
"status") && value[
"status"].toInt() == 1)
153 prop.
m_url = value[
"url"].toString();
155 prop.
m_format = value[
"extName"].toString();
166 const QString &mid =
TTK::Algorithm::mdII(
"Wk51dktMOHJXUTdmM1VsVUVXTFM5RTlYQ05laDE0Z2lZMzFPL1M1VUJSaHd1N0kwRDQxdkpWVFJPZTQ9",
false);
167 const QString &sign =
TTK::Algorithm::mdII(
"SVhlNmFTaWpqdVhYVTAwaHh4QllwRkFGSmJpY0VSZUhXQmQrV2Q4WHo0eXVCWm1zK1p0RkVRPT0=",
false);
168 const QString &user =
"0";
171 QNetworkRequest request;
173 request.setRawHeader(
"x-router",
TTK::Algorithm::mdII(
"MTJnUGtpL0hqWXhZQmlCNE9hVzVyREF0QXZmeVBNNVc=",
false).toUtf8());
181 const QVariant &data = json.
parse(bytes, &ok);
184 const QVariantMap &value = data.toMap();
185 if(value.contains(
"status") && value[
"status"].toInt() == 1)
189 prop.
m_format = value[
"extName"].toString();
192 const QVariantList &datas = value[
"url"].toList();
195 prop.
m_url = datas.front().toString();
238 info->
m_formatProps = key[
"hash"].toString() +
"|" + key[
"128hash"].toString() +
"|" + key[
"320hash"].toString() +
"|" + key[
"sqhash"].toString();
static constexpr const char * KG_UA_URL
cookie url
TTK_MODULE_EXPORT QString charactersReplace(const QString &value)
TTK_MODULE_EXPORT QByteArray md5(const QByteArray &data)
The class of the search result data item.
static constexpr const char * KG_SONG_INFO_URL
The class of the music song property.
static constexpr wchar_t key[]
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone)
QString makeSongArtist(const QString &name)
TTK_MODULE_EXPORT QString sizeByteToLabel(qint64 size)
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
void makeRequestRawHeader(QNetworkRequest *request)
static constexpr const char * KG_SONG_DETAIL_OLD_URL
static constexpr const char * ALG_UA_KEY
static void parseSongProperty(TTK::MusicSongInformation *info, const QString &hash, int bitrate)
static constexpr const char * KG_SONG_LRC_URL
QVariant parse(QIODevice *io, bool *ok=0)
Read JSON string from the I/O Device and converts it to a QVariant object.
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={})
TTK_MODULE_EXPORT QString toString(Record type)
static constexpr const char * KG_ALBUM_INFO_URL
void parseFromSongAlbumLrc(TTK::MusicSongInformation *info)
static constexpr const char * KG_SONG_DETAIL_URL
TTK_MODULE_EXPORT int bitrateToNormal(int bitrate)
Main class used to convert JSON data to QVariant objects.
void parseFromSongAlbumInfo(TTK::MusicSongInformation *info, const QString &album)
void parseFromSongProperty(TTK::MusicSongInformation *info, int bitrate)
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)