Skip to content

Commit

Permalink
feat: 增加歌单相关接口
Browse files Browse the repository at this point in the history
  • Loading branch information
Ahdbshsnsndnnm committed May 4, 2024
1 parent 34b09d6 commit b30159b
Show file tree
Hide file tree
Showing 11 changed files with 763 additions and 53 deletions.
592 changes: 556 additions & 36 deletions QCloudMusicApi/module.cpp

Large diffs are not rendered by default.

80 changes: 78 additions & 2 deletions QCloudMusicApi/module.h
Original file line number Diff line number Diff line change
Expand Up @@ -410,15 +410,91 @@ class QCLOUDMUSICAPI_EXPORT NeteaseCloudMusicApi: public QObject {
// 歌词
Q_INVOKABLE QVariantMap lyric(QVariantMap);

// 歌曲相关视频
Q_INVOKABLE QVariantMap mlog_music_rcmd(QVariantMap);

// 将mlog id转为video id
Q_INVOKABLE QVariantMap mlog_to_video(QVariantMap);

// mlog链接
Q_INVOKABLE QVariantMap mlog_url(QVariantMap);

// 重复昵称检测
Q_INVOKABLE QVariantMap nickname_check(QVariantMap);

// 游客登录
Q_INVOKABLE QVariantMap register_anonimous(QVariantMap);
// 全部歌单分类
Q_INVOKABLE QVariantMap playlist_catlist(QVariantMap);

// 歌单封面上传
Q_INVOKABLE QVariantMap playlist_cover_update(QVariantMap);

// 创建歌单
Q_INVOKABLE QVariantMap playlist_create(QVariantMap);

// 删除歌单
Q_INVOKABLE QVariantMap playlist_delete(QVariantMap);

// 更新歌单描述
Q_INVOKABLE QVariantMap playlist_desc_update(QVariantMap);

// 初始化名字
Q_INVOKABLE QVariantMap playlist_detail_dynamic(QVariantMap);

// 歌单详情
Q_INVOKABLE QVariantMap playlist_detail(QVariantMap);

// 精品歌单 tags
Q_INVOKABLE QVariantMap playlist_highquality_tags(QVariantMap);

// 热门歌单分类
Q_INVOKABLE QVariantMap playlist_hot(QVariantMap);

// 获取点赞过的视频
Q_INVOKABLE QVariantMap playlist_mylike(QVariantMap);

// 更新歌单名
Q_INVOKABLE QVariantMap playlist_name_update(QVariantMap);

// 编辑歌单顺序
Q_INVOKABLE QVariantMap playlist_order_update(QVariantMap);

// 公开隐私歌单
Q_INVOKABLE QVariantMap playlist_privacy(QVariantMap);

// 收藏与取消收藏歌单
Q_INVOKABLE QVariantMap playlist_subscribe(QVariantMap);

// 歌单收藏者
Q_INVOKABLE QVariantMap playlist_subscribers(QVariantMap);

// 更新歌单标签
Q_INVOKABLE QVariantMap playlist_tags_update(QVariantMap);

// 收藏视频到视频歌单
Q_INVOKABLE QVariantMap playlist_track_add(QVariantMap);

// 通过传过来的歌单id拿到所有歌曲数据
// 支持传递参数limit来限制获取歌曲的数据数量 例如: /playlist/track/all?id=7044354223&limit=10
Q_INVOKABLE QVariantMap playlist_track_all(QVariantMap);

// 收藏单曲到歌单 从歌单删除歌曲
Q_INVOKABLE QVariantMap playlist_track_delete(QVariantMap);

// 收藏单曲到歌单 从歌单删除歌曲
Q_INVOKABLE QVariantMap playlist_tracks(QVariantMap);

// 歌单打卡
Q_INVOKABLE QVariantMap playlist_update_playcount(QVariantMap);

// 编辑歌单
Q_INVOKABLE QVariantMap playlist_update(QVariantMap);

// 最近播放的视频
Q_INVOKABLE QVariantMap playlist_video_recent(QVariantMap);

// 游客登录
Q_INVOKABLE QVariantMap register_anonimous(QVariantMap);

// 相关歌单
Q_INVOKABLE QVariantMap related_playlist(QVariantMap);

Expand Down
4 changes: 3 additions & 1 deletion QCloudMusicApi/util/crypto.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
#include <QVariantMap>

namespace QCloudMusicApi {

// 加解密管理类,参考原项目文件util/crypto.js
class QCLOUDMUSICAPI_EXPORT Crypto {
public:
static const QString iv;
Expand All @@ -29,7 +31,7 @@ class QCLOUDMUSICAPI_EXPORT Crypto {
static QVariantMap eapi(QString url, QJsonDocument object);

static QByteArray decrypt(QByteArray cipherBuffer);

};

}
#endif // CRYPTO_H
2 changes: 2 additions & 0 deletions QCloudMusicApi/util/index.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
#include <QVariantMap>

namespace QCloudMusicApi {

class QCLOUDMUSICAPI_EXPORT Index {
public:
static QVariantMap stringToMap(const QString &cookie);
static QString mapToString(const QVariantMap &cookie);
static QVariantMap mergeMap(const QVariantMap &map0, const QVariantMap &map1);
};

}
#endif // INDEX_H
2 changes: 2 additions & 0 deletions QCloudMusicApi/util/logger.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
#define LOGGER_NAME ApiLogger

namespace QCloudMusicApi {

Q_DECLARE_LOGGING_CATEGORY(LOGGER_NAME)

}

#define DEBUG qCDebug(LOGGER_NAME)
Expand Down
3 changes: 3 additions & 0 deletions QCloudMusicApi/util/request.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#include "../global.h"

namespace QCloudMusicApi {

// 请求管理类,参考原项目文件util/request.js
class QCLOUDMUSICAPI_EXPORT Request {
public:
static QString chooseUserAgent(QString ua = "");
Expand All @@ -25,6 +27,7 @@ class QCLOUDMUSICAPI_EXPORT Request {
const QByteArray &data,
QNetworkProxy proxy = QNetworkProxy::NoProxy);
};

}

#endif // REQUEST_H
77 changes: 77 additions & 0 deletions Test/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -277,5 +277,82 @@
"login_cellphone": {
"phone": "xxx",
"password": "xxx"
},
"login_qr_create": {
"key": "xxx"
},
"login_qr_check": {
"key": "xxx"
},
"mlog_music_rcmd": {
"songid": "2058263032"
},
"mlog_to_video": {
"id": "a1qOVPTWKS1ZrK8"
},
"mlog_url": {
"id": "a1qOVPTWKS1ZrK8"
},
"playlist_create": {
"name": "测试歌单"
},
"playlist_delete": {
"id": "xxx, xxx"
},
"playlist_desc_update": {
"id": "24381616",
"desc": "描述"
},
"playlist_detail_dynamic": {
"id": "24381616"
},
"playlist_detail": {
"id": "24381616"
},
"playlist_name_update": {
"id": "24381616",
"name": "歌单名"
},
"playlist_order_update": {
"ids": "[111, 222]"
},
"playlist_privacy": {
"id": "24381616"
},
"playlist_subscribe": {
"id": "24381616",
"t": 1
},
"playlist_subscribers": {
"id": "24381616"
},
"playlist_tags_update": {
"id": "24381616",
"tags": "学习"
},
"playlist_track_add": {
"pid": "24381616",
"ids": "186041,186041"
},
"playlist_track_all": {
"id": "24381616"
},
"playlist_track_delete": {
"pid": "24381616",
"ids": "186041,186041"
},
"playlist_tracks": {
"pid": "24381616",
"op": "add",
"tracks": "186041,186041"
},
"playlist_update_playcount": {
"id": "24381616"
},
"playlist_update": {
"id": "24381616",
"name": "新歌单",
"desc": "描述",
"tags": "欧美"
}
}
38 changes: 26 additions & 12 deletions Test/customwidget/tabapi_c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,18 +84,8 @@ void TabApi_c::update(QVariantMap ret)

void TabApi_c::on_pushButton_select_clicked()
{
auto filePath = QFileDialog::getOpenFileName(this);
if (!filePath.isEmpty()) {
library.unload();
library.setFileName(filePath);
if (library.load()) {
ui->lineEdit_library_fileName->setText(filePath);
libarayLoadSucceed();
}
else {
libraryLoadFailed();
}
}
auto fileName = QFileDialog::getOpenFileName(this);
libraryLoad(fileName);
}

void TabApi_c::libarayLoadSucceed()
Expand Down Expand Up @@ -129,3 +119,27 @@ void TabApi_c::on_pushButton_unload_clicked()
}
}


void TabApi_c::on_pushButton_load_clicked()
{
libraryLoad(ui->lineEdit_library_fileName->text());
}

bool TabApi_c::libraryLoad(QString fileName)
{
bool result = false;
if (!fileName.isEmpty()) {
library.unload();
library.setFileName(fileName);
result = library.load();
if (result) {
ui->lineEdit_library_fileName->setText(fileName);
libarayLoadSucceed();
}
else {
libraryLoadFailed();
}
}
return result;
}

4 changes: 4 additions & 0 deletions Test/customwidget/tabapi_c.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,11 @@ private slots:

void on_pushButton_unload_clicked();

void on_pushButton_load_clicked();

private:
bool libraryLoad(QString fileName);

void libarayLoadSucceed();
void libraryLoadFailed();

Expand Down
7 changes: 7 additions & 0 deletions Test/customwidget/tabapi_c.ui
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_load">
<property name="text">
<string>load</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_unload">
<property name="text">
Expand Down
7 changes: 5 additions & 2 deletions Test/customwidget/tabplaylist_cover_update.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,18 @@ void TabPlaylist_cover_update::on_pushButton_select_file_clicked()
void TabPlaylist_cover_update::on_pushButton_playlist_cover_update_clicked()
{
auto filePath = ui->label_path->property("filePath").toString();
QFile file(filePath);
file.open(QFile::ReadOnly);

QImage image(filePath);
int imgSize = 300;
if (!image.isNull()) {
// 默认以图片宽度为上传尺寸
imgSize = image.width();
}

QFile file(filePath);
file.open(QFile::ReadOnly);
auto data = file.readAll();

auto arg = QVariantMap {
{ "id", ui->lineEdit_id->text() },
{ "imgSize", imgSize },
Expand Down

0 comments on commit b30159b

Please sign in to comment.