QCloudMusicApi

Qt C++版 网易云音乐 API NetEaseCloudMusicAPI

View the Project on GitHub s12mmm3/QCloudMusicApi

QCloudMusicApi - Qt版 网易云音乐 API

GitHub Actions CI Status GitHub Actions CI Status GitHub Actions CI Status FOSSA Status

C++ version Qt version Qt version GitHub license

简介

本项目翻译自Node.js项目Binaryify/NeteaseCloudMusicApi

更新尽量与原项目同步,实现了大部分接口;支持跨语言调用,支持跨平台编译,支持多种编译器编译

使用方式参考原项目文档,参数与返回结果与原项目完全一致;支持设置Http服务器(需要Qt6.4及以上)

目录


需求和依赖

使用说明

可参考文档API 参考

使用ApiHelper类

该类实现了API的cookie管理;支持Qt反射调用

通过对应方法字符串调用

#include "apihelper.h"

ApiHelper helper;
qDebug() << helper.invoke("lyric_new", { { "id", "1408586353" } });

传入Url调用

ApiHelper helper;
qDebug() << helper.invokeUrl("/song/url/v1?id=2058263032, 2057797340&level=exhigh");
qDebug() << helper.invokeUrl("http://localhost:3000/activate/init/profile");

使用NeteaseCloudMusicApi类

若无需保存cookie,可直接使用该类,直接调用类函数; 支持Qt反射调用,所有方法均注册至Qt元对象系统中

#include "module.h"

NeteaseCloudMusicApi api;
qDebug() << api.lyric_new({ { "id", "1408586353" } });

跨语言调用

动态库提供C接口,开放给Python、Java和C#等支持与C语言交互的语言调用

/**
 * @brief 反射调用API的成员函数。
 * @param memberName 调用成员函数的名称
 * @param value 参数的JSON格式字符串
 * @return 调用结果的JSON格式字符串
 */
const char* invoke(char* memberName, char* value);

调用例子参考跨语言调用

引用动态库文件

在CMakeLists.txt文件中加上

set(LIBRARY_DIR "${PROJECT_SOURCE_DIR}/QCloudMusicApi")
# 添加头文件路径
include_directories(${LIBRARY_DIR}/include)
# 添加库文件路径
link_directories(${LIBRARY_DIR}/bin)

在项目中引用CMake项目

在CMakeLists.txt文件中加上

add_subdirectory(QCloudMusicApi)
add_executable(${PROJECT_NAME}
    ./QCloudMusicApi/QCloudMusicApi/apihelper.h
  main.cpp
)
target_compile_definitions(${PROJECT_NAME} PRIVATE QCLOUDMUSICAPI_LIBRARY)
target_link_libraries(${PROJECT_NAME}  QCloudMusicApi)

引用头文件

#include "QCloudMusicApi/QCloudMusicApi/apihelper.h"

编译方式

git clone --recursive https://github.com/s12mmm3/QCloudMusicApi.git
cd QCloudMusicApi
cmake -B build
cmake --build build -j

License

The MIT License (MIT)

FOSSA Status