3 static constexpr
const char *
QT_BASE_URL =
"TDNBRFd3S3lvRnVBNzFCblJSQmRHRFhrdVNnQk9qMlBEbzdjWUpSdS95VT0=";
4 static constexpr
const char *
QT_CATEGORY_URL =
"N2VwdWNwUGxOL0ZWZCtrN3V6ekd4SUZqUXVQZ3p1Y2pyeEpsc01RZzR6blNnK0o5L3Q4NWRPRCswVzkrTURKV1VvdzMvQkJ4VEVrPQ==";
5 static constexpr
const char *
QT_CHANNEL_URL =
"UHJCNEJXWlZhQVowVE1ndXZnajFKQ2tsb1c1SDdlaEE0a0pDWEM2RGJMaktmWXpNZFR6WTcxbmRNb0ZTRTVwQXo5cE92REJOMlhjPQ==";
6 static constexpr
const char *
QT_SONG_URL =
"OTB3emRpcnNRVDI3eVBtZ2Nwbk9jZXQyQ2hUZjJ1ZjdFdEJIN1V4WHU1WnUvMjk4MEtNWFYrUXRwUlZkWG96TA==";
7 static constexpr
const char *
XI_SONG_URL =
"ZE1EK2xZcVdTd0hpaksxQXFob0Jjdk8zTSswSU5lRnlZTzRNZ3dkNUNXND0=";
22 QNetworkRequest request;
34 MusicFMCategoryList items;
43 QVariantMap value = json.
toVariant().toMap();
44 if(value.contains(
"data"))
46 value = value[
"data"].toMap();
47 value = value[
"radioPage"].toMap();
48 const QVariantList &datas = value[
"classes"].toList();
49 for(
const QVariant &var :
qAsConst(datas))
61 category.
m_category = value[
"title"].toString();
70 if(manager.
load(
"qingtingfm.xml"))
84 QNetworkRequest request;
100 QVariantMap value = json.
toVariant().toMap();
101 if(value.contains(
"data"))
103 value = value[
"data"].toMap();
104 value = value[
"radioPage"].toMap();
105 value = value[
"contents"].toMap();
109 const QVariantList &datas = value[
"items"].toList();
110 for(
const QVariant &var :
qAsConst(datas))
122 channel.
m_name = value[
"title"].toString();
123 channels->append(channel);
143 QNetworkRequest request;
155 MusicFMCategoryList items;
167 for(
int i = 0; i < nodes.count(); ++i)
169 const QDomNodeList &chnNodes = nodes.item(i).childNodes();
172 for(
int j = 0; j < chnNodes.count(); ++j)
174 const QDomElement &element = chnNodes.item(j).toElement();
175 if(element.nodeName() ==
"server_name")
177 item.
m_name = element.text();
179 else if(element.nodeName() ==
"listen_url")
181 item.
m_url = element.text();
185 if(!item.
m_name.isEmpty() && !item.
m_url.isEmpty())
191 items.append(category);
196 if(manager.
load(
"xiph.xml"))
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPost(QNetworkRequest *request, const QByteArray &data)
bool pageValid() const noexcept
#define TTK_NETWORK_QUERY_CHECK(VALUE)
The class of the ttk xml interface.
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
MusicFMChannelList m_items
void downloadDataChanged(const QString &bytes)
QVariant toVariant() const
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
The class of the fm config manager.
The class of the abstract download page query request.
#define TTK_INFO_STREAM(msg)
QDomNodeList findDomNodes(const QString &node) const
QNetworkAccessManager m_manager
bool fromByteArray(const QByteArray &data)
The class of the fm channel item.
virtual bool writeBuffer(const MusicFMCategoryList &items) overridefinal
TTK_MODULE_EXPORT void setContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
virtual void replyError(QNetworkReply::NetworkError error) override
The class of the abstract network.
virtual void downloadFinished()
bool load(const QString &name)
The class of the fm category item.
TTK_MODULE_EXPORT QString mdII(const QString &data, bool encode)
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.