20 if(url.isEmpty() && !
id.isEmpty())
38 if(prop.m_bitrate == bitrate)
44 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v1 module");
47 if((format.contains(
"MP3128") || format.contains(
"128kmp3")) && bitrate ==
TTK_BN_128)
51 else if((format.contains(
"MP3192") || format.contains(
"192kmp3")) && bitrate ==
TTK_BN_192)
55 else if((format.contains(
"MP3H") || format.contains(
"320kmp3")) && bitrate ==
TTK_BN_320)
59 else if((format.contains(
"FLAC") || format.contains(
"2000kflac")) && bitrate ==
TTK_BN_1000)
61 quality =
"2000kflac";
68 QNetworkRequest request;
82 QVariantMap value = json.
toVariant().toMap();
83 if(value[
"code"].toInt() == 200 && value.contains(
"data"))
85 value = value[
"data"].toMap();
91 const QString &format = value[
"format"].toString();
95 prop.
m_url = value[
"url"].toString();
109 if(prop.m_bitrate == bitrate)
115 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v2 module");
118 if((format.contains(
"MP3128") || format.contains(
"128kmp3")) && bitrate ==
TTK_BN_128)
122 else if((format.contains(
"MP3192") || format.contains(
"192kmp3")) && bitrate ==
TTK_BN_192)
126 else if((format.contains(
"MP3H") || format.contains(
"320kmp3")) && bitrate ==
TTK_BN_320)
130 else if((format.contains(
"FLAC") || format.contains(
"2000kflac")) && bitrate ==
TTK_BN_1000)
132 quality =
"2000kflac";
142 QNetworkRequest request;
152 if(!bytes.contains(
"res not found"))
154 const QString text(bytes);
155 const QRegExp regx(
".*url=(.*)\r\nsig=");
157 if(regx.indexIn(text) != -1)
160 prop.
m_url = regx.cap(1);
179 if(prop.m_bitrate == bitrate)
185 TTK_INFO_STREAM(
"parse song" << bitrate <<
"kbps property in v3 module");
187 if(((format.contains(
"MP3128") || format.contains(
"128kmp3")) && bitrate ==
TTK_BN_128) ||
188 ((format.contains(
"MP3H") || format.contains(
"320kmp3")) && bitrate ==
TTK_BN_320) ||
189 ((format.contains(
"FLAC") || format.contains(
"2000kflac")) && bitrate ==
TTK_BN_1000))
TTK_MODULE_EXPORT QString charactersReplace(const QString &value)
static void parseSongPropertyV3(TTK::MusicSongInformation *info, const QString &format, int bitrate)
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
static constexpr const char * KW_SONG_PATH_V1_URL
static void parseSongPropertyV1(TTK::MusicSongInformation *info, const QString &suffix, const QString &format, int bitrate)
QVariant toVariant() const
The class of the music song property.
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
static constexpr const char * KW_ALBUM_COVER_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)
TTK_MODULE_EXPORT void makeUserAgentHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
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)
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
TTK_MODULE_EXPORT bool isNetworkUrl(const QString &path) noexcept
TTK_MODULE_EXPORT QString suffix(const QString &name)
#define TTK_INFO_STREAM(msg)
The class of the des wrapper.
static constexpr const char * KW_SONG_PATH_V2_URL
static constexpr const char * QUERY_KW_INTERFACE
static constexpr const char * KW_SONG_PATH_V2_DATA_URL
QString makeSongArtist(const QString &name)
void makeRequestRawHeader(QNetworkRequest *request) noexcept
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)