4 static constexpr
const char *
KG_UA_URL =
"cGhYNDZVdmNaVG5KZk50NVFvcUJyYWVQdmdNTkFTMmM=";
25 QNetworkRequest request;
37 const QVariant &data = json.
parse(bytes, &ok);
40 QVariantMap value = data.toMap();
41 if(value[
"errcode"].toInt() == 0 && value.contains(
"data"))
43 value = value[
"data"].toMap();
45 info->
m_artistId = value[
"singerid"].toString();
47 info->
m_coverUrl = value[
"imgurl"].toString().replace(
"{size}",
"480");
69 if(hash.isEmpty() || album.isEmpty())
74 QNetworkRequest request;
86 const QVariant &data = json.
parse(bytes, &ok);
89 QVariantMap value = data.toMap();
90 if(value[
"error_code"].toInt() == 0 && value.contains(
"data"))
92 QVariantList datas = value[
"data"].toList();
93 for(
const QVariant &var :
qAsConst(datas))
100 for(
const QVariant &al : var.toList())
108 item->
m_id = value[
"album_id"].toString();
111 item->
m_time = value[
"publish_date"].toString();
112 item->
m_category = value[
"language"].toString();
124 if(prop.m_bitrate == bitrate)
130 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v1 module");
134 QNetworkRequest request;
143 const QVariant &data = json.
parse(bytes, &ok);
146 const QVariantMap &value = data.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());
187 const QVariant &data = json.
parse(bytes, &ok);
190 const QVariantMap &value = data.toMap();
191 if(value.contains(
"status") && value[
"status"].toInt() == 1)
193 const QVariantList &datas = value[
"url"].toList();
197 prop.
m_url = datas.front().toString();
199 prop.
m_format = value[
"extName"].toString();
213 QNetworkRequest request;
222 const QVariant &data = json.
parse(bytes, &ok);
225 QVariantMap value = data.toMap();
226 if(value.contains(
"data") && value[
"err_code"].toInt() == 0)
228 value = value[
"data"].toMap();
229 id = value[
"encode_album_audio_id"].toString();
231 const int rate = value[
"bitrate"].toInt();
232 const QString &url = value[
"play_url"].toString();
234 if(rate == bitrate && !url.isEmpty())
252 if(prop.m_bitrate == bitrate)
258 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v3 module");
269 if(prop.m_bitrate == bitrate)
275 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v4 module");
329 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
static qint64 currentTimestamp() noexcept
The class of the music song property.
static constexpr const char * QUERY_KG_INTERFACE
static constexpr wchar_t key[]
static constexpr const char * KG_SONG_PATH_V3_URL
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)
static constexpr const char * KG_SONG_PATH_V3_DATA_URL
void makeRequestRawHeader(QNetworkRequest *request)
static constexpr const char * MDII_UA_KEY
static void parseSongProperty(TTK::MusicSongInformation *info, const QString &hash, int bitrate)
#define TTK_INFO_STREAM(msg)
static void parseSongPropertyV1(TTK::MusicSongInformation *info, const QString &hash, int bitrate)
static constexpr const char * KG_SONG_LRC_URL
static void parseSongPropertyV4(TTK::MusicSongInformation *info, const QString &hash, int bitrate)
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={})
static constexpr const char * KG_SONG_PATH_V2_URL
TTK_MODULE_EXPORT QString toString(Record type)
static constexpr const char * KG_ALBUM_INFO_URL
void parseFromSongAlbumLrc(TTK::MusicSongInformation *info)
Main class used to convert JSON data to QVariant objects.
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)
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