冰冷冷
本帖最后由 冰冷冷 于 2021-2-25 09:11 编辑
简介
使用OrangeAPI可以高效的调用网易云音乐的API
OrangeAPI所有接口均为直接访问网易云音乐或Bilibili并不会访问第三方API
因为作者高三并没有整理更多的API,可以参考Binaryify/NeteaseCloudMusicApi中给的api地址,后面会做说明
等高考完会继续完善Bilibili的API 目前仅完成了一个视频下载的功能
项目起源于VexMusic(目前暂时已弃坑,并部分开源)OrangeAPI是VexMusic服务端的代码整理而来


包含
目前仅有
  • 网易云音乐
  • Bilibili

要求
必须使用JDK 8或以上

快速使用
OrangeAPI已经提交到Maven中央仓库,所以您可以直接添加依赖到您的项目中

Maven
  1. <dependency>
  2.   <groupId>ltd.icecold</groupId>
  3.   <artifactId>OrangeAPI</artifactId>
  4.   <version>1.0.1</version>
  5. </dependency>
复制代码

Gradle

  1. compile group: 'ltd.icecold', name: 'OrangeAPI', version: '1.0.1'
复制代码

Jar:
Github Releases

使用示例
JavaDoc:https://gcecold.github.io/OrangeAPI/javadoc/
目前仅封装了4种可以直接使用的API
  • NeteasePlayListAPI
  • NeteaseSearchAPI
  • NeteaseSongAPI
  • NeteaseUserAPI

1. 登录网易云音乐账号
  1. NeteaseUserAPI neteaseUserAPI = new NeteaseUserAPI();
  2. //密码需要经过md5处理
  3. //邮箱登录
  4. neteaseUserAPI.login("[email protected]","7b7bc2512ee1fedcd76bdc68926d4f7b");
  5. //手机登录
  6. neteaseUserAPI.loginPhone("13333333333","7b7bc2512ee1fedcd76bdc68926d4f7b");
复制代码
login和loginPhone返回的NeteaseResponseBody中的body下的code如果为200则登录成功将cookie保存下来即可,502为账号或密码错误

2. 获取音乐链接
  1. NeteaseSongAPI.musicUrl("25841337","999000",new HashMap<>());
复制代码
如果歌曲在网易云中是VIP专享只能试听,需要传入一个拥有黑胶的网易云账号的cookie

3. 自定义API
这里以
NeteasePlayListAPI#playlistDetail的代码为例,对应NeteaseCloudMusicApi中的module/playlist_detail.js

NeteasePlayListAPI

  1. public static NeteaseResponseBody playlistDetail(String id,String s,Map<String,String> cookie){
  2.     Map<String, String> data = new HashMap<>();
  3.     data.put("id", id);
  4.     data.put("n", "100000");
  5.     data.put("s", s);
  6.     NeteaseRequestOptions requestOptions = new NeteaseRequestOptions("https://music.163.com/api/v6/playlist/detail", NeteaseCrypto.CryptoType.LINUXAPI, cookie, Request.UserAgentType.PC);
  7.     return NeteaseRequest.postRequest(requestOptions, data);
  8. }
复制代码
playlist_detail.js
  1. module.exports = (query, request) => {
  2.   const data = {
  3.     id: query.id,
  4.     n: 100000,
  5.     s: query.s || 8,
  6.   }
  7.   return request('POST', `https://music.163.com/api/v6/playlist/detail`, data, {
  8.     crypto: 'api',
  9.     cookie: query.cookie,
  10.     proxy: query.proxy,
  11.     realIP: query.realIP,
  12.   })
  13. }
复制代码
const data与Map data相对应

playlist_detail.js request中的url对应NeteaseRequestOptions中的url

crypto中在NeteaseCrypto.CryptoType中有4中与NeteaseCloudMusicApi中命名相同
“api”为新版本NeteaseCloudMusicApi新增的(至少在我写VexMusic的时候还没有出现)经过尝试NeteaseCrypto.CryptoType.LINUXAPI加密方式可以正常访问api,或者使用NeteaseCrypto.CryptoType.API

NeteaseRequest.postRequest(requestOptions , data)即可访问网易云API

4.BilibiliVideoDownload
只完工了一个视频下载的API,并且代码封装比较混乱,但是功能可以正常使用 (无需登录下载1080p视频)
  1. new BilibiliVideoAPI().getVideoUrlV1("BV1uv411z7MB").download(new File("1.flv"), 10);
复制代码
注意:文件格式为flv,该API获取到的长视频会被分割成多个视频文件

最后
由衷的感谢Binaryify/NeteaseCloudMusicApi,没有它不会诞生最初的Music和OrangeAPI
GitHub:https://github.com/GceCold/OrangeAPI
如果对各位大佬的开发有帮助,这是我莫大的荣幸


来自群组: PluginsCDTribe

速食冻橘
这个API非常方便,解决了开发的很多问题!

Smlie_xx

这个API非常方便,解决了开发的很多问题!

豆沙2333
greaaaaat!

弓鱼
MCBBS有你更精彩~

冰冷冷
本帖最后由 冰冷冷 于 2021-2-25 09:12 编辑

基于大橙子API的点歌机器人(Mirai),我第一次使用kotlin所以代码写的比较混乱 重复代码比较多 个人懒得改了 但是不影响正常使用
用于解析json的bean是插件自动生成的比较乱

https://github.com/GceCold/MusicBot

  1. fun musicDetail(musicId: String, cookie: Map<String, String>): NeteaseResponseBody {
  2.     val data = mutableMapOf("c" to "[{"id":$musicId}]", "ids" to "[$musicId]")
  3.     val neteaseRequestOptions = NeteaseRequestOptions(
  4.         "https://music.163.com/weapi/v3/song/detail",
  5.         NeteaseCrypto.CryptoType.WEAPI,
  6.         cookie,
  7.         Request.UserAgentType.PC
  8.     )
  9.     return NeteaseRequest.postRequest(neteaseRequestOptions, data)
  10. }
复制代码

承峰解说
greaaaaat!

Durham
这个API非常方便,解决了开发的很多问题!