Skip to content

Latest commit

 

History

History
126 lines (96 loc) · 3.22 KB

README.md

File metadata and controls

126 lines (96 loc) · 3.22 KB

Dart 音乐 API

特性

相关项目

TODOS

  • 实现真正的 CombinedApi,支持融合搜索
  • 解决代码中的 TODO
  • 语义化错误处理
  • logs
  • rename NetEasyApi to NetEaseApi
  • rename NetEasyCrypto.desktop to client
  • support web (cookie handle, set credentials to true on front)
  • 处理网易云 code 301 (需要登录)

开发

确保已经安装了最新版本的 Dart SDK,然后执行:

安装依赖

dart pub get

开始开发之前,运行 build_runner 来生成代码

dart pub run build_runner watch

支持的操作

  • 搜索
    • 搜索单曲 (支持分页)
    • 搜索歌单 (支持分页)
    • 搜索歌手 (支持分页)
    • 搜索专辑 (支持分页)
    • 搜索歌词 (支持分页)
    • 聚合搜索 (支持分页)
  • 音乐
    • (聚合)音乐详情
    • 播放文件地址
    • 歌词&歌词翻译
  • 专辑
    • 专辑详情
  • 歌单
    • 歌单详情
    • 歌单音乐 (支持分页)
  • 歌手
    • 歌手细节
    • 歌手音乐 (支持分页)

使用

使用方式参考 ./example/dart_music_api.dart, 执行 dart run 命令来运行 example

基础使用

所有平台的 Api 都基于抽象类 MusicApi, 因此你可以在这里查看所有支持的 Api 方法的签名。

枚举类型 Platform 表示所有支持的音乐平台, 使用 Platform.xx.api 来获取某一平台的 Api 实例:

import 'package:dart_music_api/music_api.dart';

void main() {
  final api = MusicPlatform.netEasy.api;
}

使用 MusicPlatformApi.combinedApi 来获取所有平台的聚合 Api 实例。

配置接口

  • 调用 MusicApi.configureDio 来配置 dio 实例
  • 调用 MusicApi.init 来初始化 Api

调用 MusicApi.init 方法不是必须的,这里处理了例如匿名登录的逻辑,如果要调用该 API,需要在 MusicApi.configureDio 之后调用。

分页

对于可分页的 Api, 将返回 ResultCursor 类型来支持分页操作,以下是 ResultCursor 的用法。

首先, 以搜索歌曲为例:

void main() {
  MusicPlatformApi.combinedApi.searchSongs('安静');
}

设置数量限制 (你不用手动设置偏移,偏移将从0开始自动计算)

void main() {
    MusicPlatformApi.combinedApi
         .searchSongs('安静')
         .limit(50);
}

开始执行搜索并返回结果 (ResultCursor 只有调用nextPage后才会真正开始进行搜索等操作)

void main() {
  MusicPlatformApi.combinedApi
      .searchSongs('安静')
      .limit(50)
      .nextPage();
}

支持的网络音乐平台

版权

License: MIT

MIT License

Copyright (c) 2021 fusée-code-lab

LICENSE file