6 static constexpr
const char *
KW_SONG_PATH_V1_URL =
"eVZwd0d3aGhUSmNoNHBHZTFFYldyOGZjY0trcldsMlphUWtNL0thR3AyTjRkU0xyZGJuSlBGQTBueURhaDM3bTVrNUE5S0I5dWpjcWRHeTNaanJPUXc1YkNOQm9pNlJrbVFFTWI3YVdpcFFWS2tUSGNoSk5RUDl3WDhSZlZaUzd2TnRpaDBTS0psbVE0Tmk5YlJHQXdtY2tGaGlERmU4RnFXSGVZdWFWeGo4dUFpbm4zWUJTemlFYVhkREM0Q0pSNytUK05VYlBVcUdVRnhLSUJ3TXg3ZEc2UzBxVGVMOFZqdnJJN1E9PQ==";
7 static constexpr
const char *
KW_SONG_PATH_V2_URL =
"VlpjeWIxQkZNbDdkNHA3eUFRMHVnNmVVanpITWJ6MEp1T1ZraElNc2JXaGIvVytMcmFNZVFKNEQ2UXRrcHZyV2dXTjJqQT09";
8 static constexpr
const char *
KW_SONG_PATH_V2_DATA_URL =
"NUVnZE5SbWFmNHRGemdTeHd6RHlwYjF2TllaR1R5TkNKRUt6NWpxcDVEcW9JdkREN0QzRmNGOVM0R0lQK29wTTZwaHBHa3FkR3dWbEx6M3ZHVnZBM1NseWF1eUoyN0wwZmQwT3BJaXFzbWcraDlISnAyVnN0VTdGT3ZxZWlicVFGcjFkYWc3QlJ0czlGdFVrTW1WeTd3U1c1S0wwQjRrNDM0S0EySU9pOVg4QmVYSW5GUUIwWWcwMlM5Sng2YVIvYmpYL0xib2NnRlFLV3A2aXBJMWxEalNMNVpnPQ==";
9 static constexpr
const char *
KW_SONG_PATH_V3_URL =
"UElteEluQm8zUnRXTERvMkkwYTVhNitEUG9rRVA0Wk80VFFOb3dKL1ZsNldLc1RDVFJQZ3llaTN1MXhzL3NSM3ovaVhTTld5L1NpTE9hdTlBM3NuNjBQbWpOTT0=";
10 static constexpr
const char *
KW_ALBUM_COVER_URL =
"NkhRaDluWTFxV2wvTEl6ZkszRmRUa1MvS0JlQUl6MDJVUkpqcjFnYzJ4djZ0b0xmcjhzZHJnV0xscW89";
11 static constexpr
const char *
KW_ARTIST_COVER_URL =
"YW4xU3FFQnprWG11R0J5QjVGREFHdy9Yd0w3dEZZcFJIWm5FMXQ5QkJJN0EzQTd4TnBwR1BQZ0d5Qzg9";
28 return in.isEmpty() ? artistName : (in +
";" + artistName);
38 if(url.isEmpty() && !
id.isEmpty())
56 if(prop.m_bitrate == bitrate)
62 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v1 module");
65 if((format.contains(
"MP3128") || format.contains(
"128kmp3")) && bitrate ==
TTK_BN_128)
69 else if((format.contains(
"MP3192") || format.contains(
"192kmp3")) && bitrate ==
TTK_BN_192)
73 else if((format.contains(
"MP3H") || format.contains(
"320kmp3")) && bitrate ==
TTK_BN_320)
77 else if((format.contains(
"FLAC") || format.contains(
"2000kflac")) && bitrate ==
TTK_BN_1000)
79 quality =
"2000kflac";
86 QNetworkRequest request;
100 QVariantMap value = json.
toVariant().toMap();
101 if(value[
"code"].toInt() == 200 && value.contains(
"data"))
103 value = value[
"data"].toMap();
109 const QString &format = value[
"format"].toString();
113 prop.
m_url = value[
"url"].toString();
127 if(prop.m_bitrate == bitrate)
133 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v2 module");
136 if((format.contains(
"MP3128") || format.contains(
"128kmp3")) && bitrate ==
TTK_BN_128)
140 else if((format.contains(
"MP3192") || format.contains(
"192kmp3")) && bitrate ==
TTK_BN_192)
144 else if((format.contains(
"MP3H") || format.contains(
"320kmp3")) && bitrate ==
TTK_BN_320)
148 else if((format.contains(
"FLAC") || format.contains(
"2000kflac")) && bitrate ==
TTK_BN_1000)
150 quality =
"2000kflac";
160 QNetworkRequest request;
170 if(!bytes.contains(
"res not found"))
172 const QString text(bytes);
175 if(regx.
match(text) != -1)
197 if(prop.m_bitrate == bitrate)
203 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v3 module");
206 if((format.contains(
"MP3128") || format.contains(
"128kmp3")) && bitrate ==
TTK_BN_128)
210 else if((format.contains(
"MP3192") || format.contains(
"192kmp3")) && bitrate ==
TTK_BN_192)
214 else if((format.contains(
"MP3H") || format.contains(
"320kmp3")) && bitrate ==
TTK_BN_320)
218 else if((format.contains(
"FLAC") || format.contains(
"2000kflac")) && bitrate ==
TTK_BN_1000)
220 quality =
"lossless";
227 QNetworkRequest request;
241 QVariantMap value = json.
toVariant().toMap();
242 if(value[
"code"].toInt() == 200 && value.contains(
"data"))
244 value = value[
"data"].toMap();
251 prop.
m_url = value[
"url"].toString();
252 prop.
m_size = value[
"size"].toString();
264 if(prop.m_bitrate == bitrate)
270 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in unity module");
272 if(((format.contains(
"MP3128") || format.contains(
"128kmp3")) && bitrate ==
TTK_BN_128) ||
273 ((format.contains(
"MP3H") || format.contains(
"320kmp3")) && bitrate ==
TTK_BN_320) ||
274 ((format.contains(
"FLAC") || format.contains(
"2000kflac")) && bitrate ==
TTK_BN_1000))
TTK_MODULE_EXPORT QString charactersReplace(const QString &value)
TTK_MODULE_EXPORT void setUserAgentHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
QString captured(int index) const
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
static void parseSongPropertyV1(TTK::MusicSongInformation *info, const QString &suffix, const QString &format, int bitrate)
static constexpr const char * KW_SONG_PATH_V1_URL
QVariant toVariant() const
The class of the music song property.
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
static constexpr const char * KW_ARTIST_COVER_URL
static constexpr const char * KW_SONG_PATH_V2_DATA_URL
static constexpr const char * KW_ALBUM_COVER_INFO_URL
QString makeCoverPixmapUrl(const QString &url, const QString &id)
QByteArray encrypt(const QByteArray &in, const QByteArray &key)
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
static void parseSongPropertyV2(TTK::MusicSongInformation *info, const QString &suffix, const QString &format, int bitrate)
static void parseSongProperty(TTK::MusicSongInformation *info, const QString &suffix, const QString &format, int bitrate)
static void parseSongPropertyV3(TTK::MusicSongInformation *info, const QString &suffix, const QString &format, int bitrate)
TTK_MODULE_EXPORT bool isNetworkUrl(const QString &path) noexcept
TTK_MODULE_EXPORT QString suffix(const QString &name)
static constexpr const char * KW_SONG_PATH_V2_URL
#define TTK_INFO_STREAM(msg)
The class of the des wrapper.
static void parseSongPropertyUnity(TTK::MusicSongInformation *info, const QString &format, int bitrate)
bool isEmpty() const noexcept
TTK_MODULE_EXPORT void setContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
QString makeArtistPixmapUrl(const QString &url)
static constexpr const char * QUERY_KW_INTERFACE
QString makeSongArtist(const QString &name)
static constexpr const char * KW_ALBUM_COVER_URL
The class of the regular expression.
void makeRequestRawHeader(QNetworkRequest *request) noexcept
int match(const QString &str, int pos=0)
void parseFromSongProperty(TTK::MusicSongInformation *info, const QString &type, const QString &id, int bitrate)
static constexpr const char * MDII_SHR_KEY
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
void parseFromSongProperty(TTK::MusicSongInformation *info, int bitrate)
static constexpr const char * KW_SONG_PATH_V3_URL