Skip to content

Commit

Permalink
feat:增加部分接口
Browse files Browse the repository at this point in the history
  • Loading branch information
overwriter committed Nov 11, 2023
1 parent 87d8d76 commit 55ba1df
Show file tree
Hide file tree
Showing 4 changed files with 141 additions and 8 deletions.
115 changes: 114 additions & 1 deletion QCloudMusicApi/module.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1429,6 +1429,49 @@ const QVariantMap NeteaseCloudMusicApi::event(QVariantMap query) {
);
}

// 垃圾桶
const QVariantMap NeteaseCloudMusicApi::fm_trash(QVariantMap query) {
const QVariantMap data {
{ "songId", query["id"] }
};
return createRequest(
QNetworkAccessManager::PostOperation,
"https://music.163.com/weapi/radio/trash/add?alg=RT&songId="
+ query["id"].toString()
+ QStringLiteral("&time=")
+ query.value("time", 25).toString(),
data,
QVariantMap {
{ "crypto", "weapi" },
{ "cookie", query["cookie"] },
{ "proxy", query["proxy"] },
{ "realIP", query["realIP"] }
}
);
}

// 关注与取消关注用户
const QVariantMap NeteaseCloudMusicApi::follow(QVariantMap query) {
QVariantMap cookie = query["cookie"].toMap();
cookie["os"] = "pc";
query["cookie"] = cookie;
query["t"] = query["t"].toInt() == 1 ? "follow" : "delfollow";
return createRequest(
QNetworkAccessManager::PostOperation,
"https://music.163.com/weapi/user/"
+ query["t"].toString()
+ QStringLiteral("/")
+ query["id"].toString(),
{},
QVariantMap {
{ "crypto", "weapi" },
{ "cookie", query["cookie"] },
{ "proxy", query["proxy"] },
{ "realIP", query["realIP"] }
}
);
}

// 粉丝年龄比例
const QVariantMap NeteaseCloudMusicApi::fanscenter_basicinfo_age_get(QVariantMap query) {
const QVariantMap data { };
Expand Down Expand Up @@ -1558,6 +1601,76 @@ const QVariantMap NeteaseCloudMusicApi::login_cellphone(QVariantMap query) {
return result;
}

// 二维码检测扫码状态接口
const QVariantMap NeteaseCloudMusicApi::login_qr_check(QVariantMap query) {
const QVariantMap data {
{ "key", query["key"] },
{ "type", 1 }
};
QVariantMap result = createRequest(
QNetworkAccessManager::PostOperation,
"https://music.163.com/weapi/login/qrcode/client/login",
data,
QVariantMap {
{ "crypto", "weapi" },
{ "cookie", query["cookie"] },
{ "proxy", query["proxy"] },
{ "realIP", query["realIP"] }
}
);
auto body = result["body"].toMap();
body["cookie"] = result["cookie"];
result = QVariantMap {
{ "status", 200 },
{ "body", body },
{ "cookie", result["cookie"] }
};
return result;
}

// 二维码 key 生成接口
const QVariantMap NeteaseCloudMusicApi::login_qr_key(QVariantMap query) {
const QVariantMap data {
{ "type", 1 }
};
QVariantMap result = createRequest(
QNetworkAccessManager::PostOperation,
"https://music.163.com/weapi/login/qrcode/unikey",
data,
QVariantMap {
{ "crypto", "weapi" },
{ "cookie", query["cookie"] },
{ "proxy", query["proxy"] },
{ "realIP", query["realIP"] }
}
);
result = QVariantMap {
{ "status", 200 },
{ "body", QVariantMap {
{ "data", result["body"] },
{ "code", 200}
} },
{ "cookie", result["cookie"] }
};
return result;
}

// 二维码生成接口
const QVariantMap NeteaseCloudMusicApi::login_qr_create(QVariantMap query) {
const QString url = "https://music.163.com/login?codekey=" + query["key"].toString();
auto result = QVariantMap {
{ "code", 200 },
{ "status", 200 },
{ "body", QVariantMap {
{ "code", 200},
{ "data", QVariantMap {
{ "qrurl", url }
} }
} }
};
return result;
}

// 退出登录
const QVariantMap NeteaseCloudMusicApi::logout(QVariantMap query) {
return createRequest(
Expand Down Expand Up @@ -1858,7 +1971,7 @@ const QVariantMap NeteaseCloudMusicApi::song_wiki_summary(QVariantMap query) {
// 年度听歌报告2017-2022
const QVariantMap NeteaseCloudMusicApi::summary_annual(QVariantMap query) {
QVariantMap data { };
const QString key = QList<QString>({ "2017", "2018", "2019 "}).indexOf(query["year"].toString()) > -1 ? "userdata" : "data";
const QString key = QStringList { "2017", "2018", "2019 "}.indexOf(query["year"].toString()) > -1 ? "userdata" : "data";
return createRequest(
QNetworkAccessManager::PostOperation,
"https://music.163.com/weapi/activity/summary/annual/" + query["year"].toString() + "/" + key,
Expand Down
15 changes: 15 additions & 0 deletions QCloudMusicApi/module.h
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,12 @@ class QCLOUDMUSICAPI_EXPORT NeteaseCloudMusicApi: public QObject {
// 动态
Q_INVOKABLE const QVariantMap event(QVariantMap);

// 垃圾桶
Q_INVOKABLE const QVariantMap fm_trash(QVariantMap);

// 关注与取消关注用户
Q_INVOKABLE const QVariantMap follow(QVariantMap);

// 粉丝年龄比例
Q_INVOKABLE const QVariantMap fanscenter_basicinfo_age_get(QVariantMap);

Expand All @@ -289,6 +295,15 @@ class QCLOUDMUSICAPI_EXPORT NeteaseCloudMusicApi: public QObject {
// 手机登录
Q_INVOKABLE const QVariantMap login_cellphone(QVariantMap);

// 二维码检测扫码状态接口
Q_INVOKABLE const QVariantMap login_qr_check(QVariantMap);

// 二维码生成接口
Q_INVOKABLE const QVariantMap login_qr_create(QVariantMap);

// 二维码 key 生成接口
Q_INVOKABLE const QVariantMap login_qr_key(QVariantMap);

// 退出登录
Q_INVOKABLE const QVariantMap logout(QVariantMap);

Expand Down
12 changes: 5 additions & 7 deletions QCloudMusicApi/request.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,10 @@ static auto createRequest(QNetworkAccessManager::Operation method, QString urlSt
));
}
else {
request.setHeader(QNetworkRequest::CookieHeader, QVariant::fromValue(QList<QNetworkCookie>({
request.setHeader(QNetworkRequest::CookieHeader, QVariant::fromValue(QList<QNetworkCookie> {
QNetworkCookie("__remember_me", QVariant(true).toByteArray()),
QNetworkCookie("NMTID", "xxx")
})));
}));
}

if(options["crypto"].toString() == "weapi") {
Expand Down Expand Up @@ -268,10 +268,8 @@ static auto createRequest(QNetworkAccessManager::Operation method, QString urlSt
if(!QJsonDocument::fromJson(body).isNull()) answer["body"] = QJsonDocument::fromJson(body).toVariant().toMap();
else answer["body"] = QString::fromUtf8(body);
}
answer["status"] = answer["body"].toMap().contains("code")
? answer["body"].toMap()["code"]
: reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if(QList<int>({201, 302, 400, 502, 800, 801, 802, 803}).indexOf(answer["body"].toMap()["code"].toInt()) > -1) {
answer["status"] = answer["body"].toMap().value("code", reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt());
if(QList<int> { 201, 302, 400, 502, 800, 801, 802, 803 }.indexOf(answer["body"].toMap()["code"].toInt()) > -1) {
answer["status"] = 200;
}

Expand All @@ -286,7 +284,7 @@ static auto createRequest(QNetworkAccessManager::Operation method, QString urlSt
request.setUrl(url);
if (method == QNetworkAccessManager::PostOperation) {
QUrlQuery urlQuery;
for(QMap<QString, QVariant>::iterator i = data.begin(); i != data.end(); ++i) {
for(QVariantMap::iterator i = data.begin(); i != data.end(); ++i) {
urlQuery.addQueryItem(i.key(), i.value().toString());
}
QNetworkReply* reply = manager.post(request, urlQuery.toString().toUtf8());
Expand Down
7 changes: 7 additions & 0 deletions Test/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -198,5 +198,12 @@
},
"dj_subscriber": {
"id": "335425050"
},
"fm_trash": {
"id": "347230"
},
"follow": {
"id": "79248480",
"t": 1
}
}

0 comments on commit 55ba1df

Please sign in to comment.