AI prompts
base on Flutter移动端+桌面端三方网易云播放器 <p align="center">
<img src="macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png" alt="app_icon_256" style="zoom: 50%;"/>
</p>
<h1 align="center">bujuan</h1>
<p align="center">一个支持Android、iOS、MacOS、Windows、Linux的三方网易云播放器。</p>
#### MacOS (适配中)
![](images/957.png)
#### Android & IOS (UI一致)
| <img src="images/956.jpeg" alt="956" style="zoom:20%;" /> | <img src="images/954.jpeg" alt="954" style="zoom:20%;" /> | <img src="images/955.jpeg" alt="955" style="zoom:20%;" /> |
| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- |
## 功能介绍
- 采用flutter开发,可打包编译为所有平台,采用Skia作为2D渲染引擎,Dart语言作为运行,性能可媲美原生。
- 集成Rust版[UnblockNeteaseMusic](https://github.com/UnblockNeteaseMusic/server-rust),可以获取灰色歌曲音源。
- Api参考于开源项目 [NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi) 。
- 播放器尽量做到简洁美观(由于是个人项目,没有专业的ui设计,适配上面可能暂时会有一些问题。)
- 播放页面模仿YouTube Music,动画流畅精美。
- 网易云账号登录(邮箱、二维码)。
- 每日推荐、私人Fm、电台、云盘。
- 歌手、专辑、搜索
- 去除无用功能,专注于用户音乐。
- 本地音乐已从该版本剔除(考虑后期制作一个单独的本地版本)。
### 开发进度
- ✅ Android & IOS 基本已经完善剩余Bug修复和新增功能
- ☑️ MacOS 正在适配中(届时和横屏模式同时推出)
- ☑️Windows
- ☑️Linux
### 代码部署编译
- 需提前准备好[Flutter](https://flutter.cn/)、[Rust](https://www.rust-lang.org/)环境。
- 关于Rust使用开源项目[flutter_rust_bridge](https://github.com/fzyzcjy/flutter_rust_bridge),请参考。
- `flutter pub get`
- `flutter build apk --release`
- `flutter build ios`
- `flutter build macos`
", Assign "at most 3 tags" to the expected json: {"id":"11500","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"