diff --git a/.github/ISSUE_TEMPLATE/bug-report--提交-bug-.md b/.github/ISSUE_TEMPLATE/bug-report--提交-bug-.md index 10ae6af..b3471bd 100644 --- a/.github/ISSUE_TEMPLATE/bug-report--提交-bug-.md +++ b/.github/ISSUE_TEMPLATE/bug-report--提交-bug-.md @@ -7,10 +7,10 @@ assignees: gitbobobo --- -**Describe the bug (BUG 描述)** +**Describe the bug (BUG 描述,多条问题请分别建立 issue)** A clear and concise description of what the bug is. -**To Reproduce (复现步骤)** +**To Reproduce (复现步骤,复现问题是处理问题的必要条件)** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' @@ -31,5 +31,8 @@ If applicable, add screenshots to help explain your problem. **Music Server Type (音乐服务器类型)** e.g. emby 4.17. +- [ ] Direct Mode(直连模式) +- [ ] Library Mode(媒体库模式) + **Additional context (额外信息)** Add any other context about the problem here. diff --git a/README.md b/README.md index 54a3284..57a6f78 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ iOS 可直接在 AppStore 搜索 **[音流](https://apps.apple.com/cn/app/%E9%9F - [x] 窗口标题修改 - [x] 媒体信息通知 -- [ ] 任务栏预览 +- [x] 任务栏快捷操作 - [ ] 桌面歌词 - [x] 最小化到系统托盘 - [ ] 适配桌面平台 UI diff --git a/docs/features.md b/docs/features.md index 24eb43a..9a18fd6 100644 --- a/docs/features.md +++ b/docs/features.md @@ -70,7 +70,7 @@ sidebar_position: 3 内容请包含(缺一不可): -1. 会员购买凭证(Apple 的邮件收据截图或支付宝的订单购买记录截图,需包含订单号信息) +1. 会员购买凭证(Apple 的邮件收据截图或支付宝的订单购买记录截图,需包含订单号信息,无法辨认的图片将被忽略) 2. 接收邀请的邮箱(注册 Apple 账户时使用的邮箱) 3. 常用的音乐服务器类型 diff --git a/docs/guides/install.md b/docs/guides/install.md index 329ff51..1020e72 100644 --- a/docs/guides/install.md +++ b/docs/guides/install.md @@ -12,6 +12,12 @@ Android 一共提供四个安装包,分别对应不同的芯片架构。 一般最近几年的手机选择 `app-arm64-v8a-release.apk` 即可,若不确定自己手机的芯片架构,请选择 `app-release.apk` 下载安装。 +:::caution + +不同架构的安装包不能覆盖安装,只能选择卸载重装。 + +::: + ## Windows Windows 版音流目前只提供 x64 架构的 msix 格式安装包,这是微软应用商店的安装格式,因此在商店外安装,需要先在电脑上安装开发者对应的证书。 diff --git a/docs/guides/interfaces.md b/docs/guides/interfaces.md index 0f58c5a..8f23aff 100644 --- a/docs/guides/interfaces.md +++ b/docs/guides/interfaces.md @@ -75,6 +75,12 @@ sidebar_position: 4 响应码:若响应码不是`20x`,则提示用户「歌词确认异常」,没有异常则不提示信息。 +:::note + +自 1.3.1 开始,调整歌词偏移后点击对勾按钮也会触发歌词确认接口,此时请求的数据中不包含 `lyricsId` 字段。 + +::: + ### 获取封面 请求方式:GET diff --git a/docs/guides/others.md b/docs/guides/others.md index 89b4f2c..9b2dbfc 100644 --- a/docs/guides/others.md +++ b/docs/guides/others.md @@ -21,12 +21,6 @@ sidebar_position: 5 ![](https://oss.aqzscn.cn/resource/blog/img/2024/90011-293fd6ac80a1ce9bc85adf176c807e19.png) -:::tip - -歌曲在播放到 1/4 位置时会向服务器发送滚动播放记录的请求(AudioStation 不支持此接口)。 - -::: - 在某个专辑的歌曲列表中,序号指的是音轨号,而右上角的数字表示碟号。 ![](https://oss.aqzscn.cn/resource/blog/img/2024/90642-5882f5ffcf3b92988a49aaa5dac913c3.png) @@ -48,4 +42,23 @@ sidebar_position: 5 1. 扫码同步功能涉及到的数据仅会在局域网中传输,音流仅对数据做了最基础的加密,因此请尽量在安全的局域网环境中使用,避免泄露您的账号信息。 2. 扫码识别二维码使用了 [mobile_scanner](https://github.com/juliansteenbakker/mobile_scanner) 插件,可能有部分识别不到的情况,可尝试返回重进更换一个新的二维码。 -::: \ No newline at end of file +::: + +## 歌词 + +目前只支持 LRC 格式的歌词,详细可参考 [维基百科](https://zh.wikipedia.org/wiki/LRC%E6%A0%BC%E5%BC%8F)。 + +对于双语歌词,目前支持以下两种格式: + +**相同时间轴** + +``` +[00:01.123] 歌词 +[00:01.123] 翻译 +``` + +**以【】包裹** + +``` +[00:01.123] 歌词【翻译】 +``` \ No newline at end of file diff --git a/docs/notes/plugins.md b/docs/notes/plugins.md index c3034fa..197ef66 100644 --- a/docs/notes/plugins.md +++ b/docs/notes/plugins.md @@ -32,7 +32,7 @@ sidebar_position: 1 ![](https://oss.aqzscn.cn/resource/blog/img/2024/faae1-9ad0cf3582cd7ff590b3e02645f19bc7.png) -## 平台相关 +## 平台特性 ### macos_window_utils @@ -42,6 +42,58 @@ sidebar_position: 1 [flutter_acrylic](https://github.com/alexmercerind/flutter_acrylic) 可以在 macOS、Windows、Linux 平台实现窗口模糊/透明效果,其中 macOS 依赖了 `macos_window_utils` 插件,因此如果使用此插件就无需再引入 `macos_window_utils` 了。 +### window_manager + +[window_manager](https://pub.dev/packages/window_manager) 可用于在桌面端控制窗口的一系列属性。 + +### tray_manager + +[tray_manager](https://pub.dev/packages/tray_manager) 可以定义桌面端的系统托盘。 + +### windows_taskbar + +[windows_taskbar](https://pub.dev/packages/windows_taskbar) 用于在 Windows 的任务栏图标上添加预览按钮与进度条,对于音乐播放器来说非常实用。 + +### flutter_carplay + +[flutter_carplay](https://pub.dev/packages/flutter_carplay) 可用于在 iOS 平台实现 CarPlay 功能,最低支持 iOS 14. + +作者已经很久没有更新过了,可以尝试其他开发者的修改版本。 + +目前一个比较困扰我的问题是如何在打开 CarPlay 时启动 Flutter 引擎,同时保证再从手机上打开 APP 时界面不会卡住。 + + + +## 网络 + +### dio + +[dio](https://pub.dev/packages/dio) 是一个强大的 HTTP 网络请求库,其中的拦截器、请求取消、自定义适配器等特色功能都很好用,社区还提供了一些插件可让网络请求的处理更加轻松。 + +dart 的 HTTP 请求是自己实现的,仅适配了标准的 HTTP 请求,处理一些非标准的 HTTP 请求就会出问题,在这一点上是不如原生平台的网络请求的。 + +虽然 dio 目前也已经有了 [native_dio_adapter](https://github.com/cfug/dio/tree/main/plugins/native_dio_adapter) 插件可以通过原生平台发送请求,但只在安卓和 iOS 平台有效,这对于音流来说显然是不够的。 + +最近新出了个 [rhttp](https://github.com/Tienisto/rhttp),原理是使用 FRB 插件通过 Rust 发送网络请求,可以观察一段时间,如果稳定的话可能会尝试切换到这个插件上。 + +### shelf + +[shelf](https://pub.dev/packages/shelf) 可用于创建本地的 HTTP 服务器,可通过 [shelf_proxy](https://pub.dev/packages/shelf_proxy) 等相关插件简化处理步骤。 + +需要注意的是,iOS 平台创建的本地服务器会在应用不再位于前台后停用,应用需要检测本地服务是否可用并准备重启。 + +### connectivity_plus + +[connectivity_plus](https://pub.dev/packages/connectivity_plus) 可用于检测应用当前的网络环境。 + +### network_info_plus + +[network_info_plus](https://pub.dev/packages/network_info_plus) 可用于获取 Wi-Fi 信息,比如 IP 地址。 + +### url_launcher + +[url_launcher](https://pub.dev/packages/url_launcher) 可用于在浏览器中打开链接。 + ## 音频 ### media_kit @@ -442,37 +494,6 @@ if (Platform.isAndroid) { | OGG | `Vorbis Comments` | ✅ | | Opus | `Vorbis Comments` | ✅ | -### taggy - -[taggy](https://github.com/DMouayad/taggy) 同样也是一款读取/写入音乐文件标签信息的插件,但底层连接的是 [lofty](https://github.com/Serial-ATA/lofty-rs/),拥有更为广泛的格式支持: - -| File Format | Metadata Format(s) | -|-------------|------------------------------| -| AAC (ADTS) | `ID3v2`, `ID3v1` | -| Ape | `APE`, `ID3v2`\*, `ID3v1` | -| AIFF | `ID3v2`, `Text Chunks` | -| FLAC | `Vorbis Comments`, `ID3v2`\* | -| MP3 | `ID3v2`, `ID3v1`, `APE` | -| MP4 | `iTunes-style ilst` | -| MPC | `APE`, `ID3v2`\*, `ID3v1`\* | -| Opus | `Vorbis Comments` | -| Ogg Vorbis | `Vorbis Comments` | -| Speex | `Vorbis Comments` | -| WAV | `ID3v2`, `RIFF INFO` | -| WavPack | `APE`, `ID3v1` | - -\* The tag will be **read only**, due to lack of official support - -:::info - -既然 taggy 这么强大,我为什么还要先介绍 audio_metadata_reader 呢? - -因为我只能在安卓平台成功运行起 taggy😭,其他平台不知是我使用方法问题还是作者并未测试,我这里是无法运行的。 - -因此目前音流会在安卓平台使用 taggy 解析音乐标签,而在其他平台使用 audio_metadata_reader 解析音乐标签。 - -::: - ## Flutter 社区 ### Flutter Candies diff --git a/docs/notes/resources.md b/docs/notes/resources.md index 9a62b91..3b61505 100644 --- a/docs/notes/resources.md +++ b/docs/notes/resources.md @@ -8,8 +8,16 @@ sidebar_position: 3 ## 图片背景 +- [歌曲列表默认封面](https://pixabay.com/zh/vectors/record-disk-disc-music-musical-23281/) by Clker-Free-Vector-Images - [tv端歌手详情页面默认背景](https://pixabay.com/zh/photos/concert-singer-singing-stage-2566002/) by StockSnap +## 彩色插画 + +- [警告](https://pixabay.com/zh/vectors/warning-caution-alert-icon-media-145066/) by OpenClipart-Vectors +- [成功](https://pixabay.com/zh/vectors/icon-symbol-confirmation-hook-ok-803718/) by Leovinus +- [错误](https://pixabay.com/zh/vectors/error-button-failure-warning-24842/) by Clker-Free-Vector-Images +- [信息](https://pixabay.com/zh/vectors/info-information-tips-icon-support-148099/) by OpenClipart-Vectors + ## 单色插画 - [tv端会员页面插画](https://pixabay.com/zh/vectors/jewelry-crown-king-royal-queen-2025491/) by OpenClipart-Vectors diff --git a/docs/notes/services/emby.md b/docs/notes/services/emby.md index f704c05..2ce74e3 100644 --- a/docs/notes/services/emby.md +++ b/docs/notes/services/emby.md @@ -196,6 +196,12 @@ response: } ``` +### AlbumArtists 获取专辑艺术家列表 + +GET: `[host]/Artists/AlbumArtists` + +其他格式与歌手列表一致。 + ### Artists 获取歌手列表 参见 Jellyfin 的 [Artists](./jellyfin#artists-获取歌手列表) 接口。 @@ -1084,6 +1090,61 @@ response: ### PlayedItems/[id] 滚动播放记录 +**播放开始** + +POST:`[host]/Sessions/Playing` + +body: + +| 参数名 | 备注 | +| --- | --- | +| ItemId | 歌曲ID | +| PlaySessionId | 会话ID | +| PositionTicks | 播放进度 | +| IsPaused | 是否暂停 | +| PlaybackRate | 播放速度 | +| PlayMethod | 播放方式,可选值:`Transcode`, `DirectPlay`, `DirectStream` | + +**播放进度** + +POST:`[host]/Sessions/Playing/Progress` + +body: + +| 参数名 | 备注 | +| --- | --- | +| ItemId | 歌曲ID | +| PlaySessionId | 会话ID | +| PositionTicks | 播放进度 | +| IsPaused | 是否暂停 | +| PlaybackRate | 播放速度 | +| PlayMethod | 播放方式,可选值:`Transcode`, `DirectPlay`, `DirectStream` | + +Emby 文档中对播放进度的报告时机说明如下: + +- 每 10 秒自动报告一次(用于校准服务器上的自动进度增量) +- 在用户于播放器进行任何交互后立即进行 + +报告进度的原因如下,音流仅会对勾选的事件报告进度: + +- [x] TimeUpdate 时间更新 +- [x] Pause 暂停 +- [x] Unpause 取消暂停 +- [ ] VolumeChange 音量变化 +- [ ] RepeatModeChange 重复模式更改 +- [ ] AudioTrackChange 音轨更改 +- [ ] SubtitleTrackChange 字幕更改 +- [ ] PlaylistItemMove 播放列表项移动 +- [ ] PlaylistItemRemove 播放列表项删除 +- [ ] PlaylistItemAdd 播放列表项添加 +- [ ] QualityChange 质量变革 +- [ ] SubtitleOffsetChange 字幕偏移 +- [x] PlaybackRateChange 播放速度改变 + +**标记为已播放** + +> 向 Emby 上报**播放开始**状态时,播放次数已经自动+1,因此无需使用此接口。 + POST: `[host]/Users/[UserId]/PlayedItems/[id]` query: @@ -1092,6 +1153,21 @@ query: | --- | --- | | datePlayed | 播放时间,yyyyMMddHHmmss | +Last.fm 开发者文档中对 scrobble 的条件有以下要求: + +- 曲目时长必须超过 30 秒 +- 曲目已经播放了 4 分钟或总时长的一半(以较早发生者为准) + +满足这些条件后,随时可以发送 scrobble 请求,通常最方便的做法是在曲目播放完毕后发送。 + +:::info + +在 1.3.0 及之前版本,音流会在歌曲播放到 1/4 时上报播放记录。 + +在 1.3.1 及之后版本,音流将遵循上述文档中建议的做法来上报播放记录。 + +::: + ### Similar 获取相似歌曲 GET: `[host]/Items/[id]/Similar` @@ -1674,7 +1750,165 @@ response: ### Items 获取歌单中的歌曲 -参见 Jellyfin 的 [Items](jellyfin#items-获取歌单中的歌曲) 接口。 +GET: `[host]/Users/[UserId]/Items` + +query: + +| 参数名 | 备注 | +| --- | --- | +| SortBy | 排序方式列表,可选值: `ListItemOrder`, `SortName`, `Album,ParentIndexNumber,IndexNumber`, `Artist,Album,ParentIndexNumber,IndexNumber,SortName` | +| SortOrder | 排序,可选值: `Ascending`, `Descending` | +| Fields | 包含的字段列表,可选值:`PrimaryImageAspectRatio`, `MediaSources`, `AudioInfo`, `DateCreated`, `ProductionYear` | +| ImageTypeLimit | 返回的每个图片类型图片数量 | +| StartIndex | 起始行数 | +| Limit | 最大数量,可选 | +| ParentId | 歌单ID | + +response: + +```json +{ + "Items": [ + { + "Name": "9420", + "ServerId": "54068b26c84949dc809677381d1267a9", + "Id": "50985", + "DateCreated": "2021-11-27T08:31:24.0000000Z", + "Container": "mp3", + "SortName": "9420", + "MediaSources": [ + { + "Protocol": "File", + "Id": "74ec19f32687018d22e64b9a41eb6336", + "Path": "/volume1/music/麦小兜/9420/9420.mp3", + "Type": "Default", + "Container": "mp3", + "Size": 9225558, + "Name": "9420", + "IsRemote": false, + "RunTimeTicks": 2291983670, + "SupportsTranscoding": true, + "SupportsDirectStream": true, + "SupportsDirectPlay": true, + "IsInfiniteStream": false, + "RequiresOpening": false, + "RequiresClosing": false, + "RequiresLooping": false, + "SupportsProbing": false, + "MediaStreams": [ + { + "Codec": "mp3", + "TimeBase": "1/14112000", + "DisplayTitle": "Und MP3 stereo", + "IsInterlaced": false, + "ChannelLayout": "stereo", + "BitRate": 320000, + "Channels": 2, + "SampleRate": 44100, + "IsDefault": false, + "IsForced": false, + "Type": "Audio", + "Index": 0, + "IsExternal": false, + "IsTextSubtitleStream": false, + "SupportsExternalStream": false, + "Protocol": "File", + "AttachmentSize": 0 + }, + { + "Codec": "mjpeg", + "ColorSpace": "bt470bg", + "Comment": "Cover (front)", + "TimeBase": "1/90000", + "IsInterlaced": false, + "BitDepth": 8, + "RefFrames": 1, + "IsDefault": false, + "IsForced": false, + "Height": 600, + "Width": 600, + "RealFrameRate": 90000, + "Profile": "Baseline", + "Type": "EmbeddedImage", + "AspectRatio": "1:1", + "Index": 1, + "IsExternal": false, + "IsTextSubtitleStream": false, + "SupportsExternalStream": false, + "Protocol": "File", + "PixelFormat": "yuvj420p", + "Level": -99, + "IsAnamorphic": false, + "AttachmentSize": 0 + }, + { + "Codec": "text", + "Title": "Lyrics", + "Extradata": "[ti:9420]\n[ar:麦小兜]\n[al:9420]\n[00:00.00]9420 - 麦小兜\n[00:05.05]词:可泽\n[00:10.10]曲:可泽\n[00:15.15]编曲:杨栋梁\n[00:20.21]制作公司:Hikoon Music\n[00:25.26]手牵手一起走在幸福的大街\n[00:28.21]微风缓缓的吹来你我相依偎\n[00:31.15]爱的目光如此的热烈\n[00:34.97]\n[00:36.94]这份爱就像是在燃烧的火堆\n[00:39.95]炽热的火焰如同盛开的玫瑰\n[00:42.85]不管白天黑夜继续的沉醉\n[00:46.30]\n[00:47.59]整个世界弥漫\n[00:48.97]\n[00:49.47]薄荷般的气味\n[00:51.45]耳边\n[00:52.34]你的呢喃不停吹\n[00:54.20]所有\n[00:55.14]孤单寂寞 都被悄悄震碎\n[00:59.39]你的眼神就像\n[01:00.49]\n[01:01.08]流淌着的河水\n[01:02.94]流进\n[01:03.42]\n[01:04.01]我的身体润心扉\n[01:05.98]洗涤\n[01:06.95]所有悲伤烦恼带来安慰\n[01:11.08]关于我们\n[01:13.84]我只想说\n[01:16.68]简单一句\n[01:19.53]就是爱你\n[01:22.52]比翼双飞\n[01:25.41]金蝉做媒\n[01:28.26]天造地设的一对\n[01:33.61]\n[01:58.93]手牵手一起走在幸福的大街\n[02:01.91]微风缓缓的吹来你我相依偎\n[02:04.79]爱的目光如此的热烈\n[02:08.76]\n[02:10.76]这份爱就像是在燃烧的火堆\n[02:13.50]炽热的火焰如同盛开的玫瑰\n[02:16.51]不管白天黑夜继续的沉醉\n[02:20.08]\n[02:21.22]整个世界弥漫\n[02:23.12]薄荷般的气味\n[02:25.04]耳边\n[02:25.98]你的呢喃不停吹\n[02:27.90]所有\n[02:28.82]孤单寂寞都被悄悄震碎\n[02:32.96]你的眼神就像\n[02:34.71]流淌着的河水\n[02:36.69]流进\n[02:37.66]我的身体润心扉\n[02:39.57]洗涤\n[02:40.52]所有悲伤烦恼带来安慰\n[02:44.81]关于我们\n[02:47.45]我只想说\n[02:50.28]简单一句\n[02:53.16]就是爱你\n[02:56.07]比翼双飞\n[02:59.08]金蝉做媒\n[03:01.95]天造地设的一对\n[03:07.33]\n[03:08.08]关于我们\n[03:10.90]我只想说\n[03:13.80]简单一句\n[03:16.61]就是爱你\n[03:19.58]比翼双飞\n[03:22.56]金蝉做媒\n[03:25.48]天造地设的一对", + "DisplayTitle": "Und (TEXT)", + "IsInterlaced": false, + "IsDefault": false, + "IsForced": false, + "Type": "Subtitle", + "Index": 2, + "IsExternal": false, + "IsTextSubtitleStream": true, + "SupportsExternalStream": true, + "Protocol": "File", + "AttachmentSize": 0, + "SubtitleLocationType": "InternalStream" + } + ], + "Formats": [], + "Bitrate": 322011, + "RequiredHttpHeaders": {}, + "ReadAtNativeFramerate": false, + "DefaultAudioStreamIndex": 0, + "DefaultSubtitleStreamIndex": 2 + } + ], + "RunTimeTicks": 2291983670, + "Size": 9225558, + "Bitrate": 322011, + "ProductionYear": 2017, + "IndexNumber": 1, + "IsFolder": false, + "Type": "Audio", + "UserData": { + "PlaybackPositionTicks": 0, + "PlayCount": 0, + "IsFavorite": false, + "Played": false + }, + "Artists": [ + "麦小兜" + ], + "ArtistItems": [ + { + "Name": "麦小兜", + "Id": "7855" + } + ], + "Composers": [], + "Album": "9420", + "AlbumId": "7856", + "AlbumPrimaryImageTag": "605950b8b45c1dffe57a5c3d3870916a", + "AlbumArtist": "麦小兜", + "AlbumArtists": [ + { + "Name": "麦小兜", + "Id": "7855" + } + ], + "ImageTags": { + "Primary": "c36a54ac99a7ef10be9fc0626a1d502b" + }, + "MediaType": "Audio" + } + ], + "TotalRecordCount": 19408 +} +``` ### FavoriteItems/[id] 收藏歌曲/专辑/歌手 diff --git a/docs/notes/services/jellyfin.md b/docs/notes/services/jellyfin.md index 339c0fb..9a92283 100644 --- a/docs/notes/services/jellyfin.md +++ b/docs/notes/services/jellyfin.md @@ -334,6 +334,12 @@ response: } ``` +### AlbumArtists 获取专辑艺术家列表 + +GET: `[host]/Artists/AlbumArtists` + +其他格式与歌手列表一致。 + ### Artists 获取歌手列表 GET: `[host]/Artists` @@ -1120,6 +1126,61 @@ response: ### PlayedItems/[id] 滚动播放记录 +**播放开始** + +POST:`[host]/Sessions/Playing` + +body: + +| 参数名 | 备注 | +| --- | --- | +| ItemId | 歌曲ID | +| PlaySessionId | 会话ID | +| PositionTicks | 播放进度 | +| IsPaused | 是否暂停 | +| PlaybackRate | 播放速度 | +| PlayMethod | 播放方式,可选值:`Transcode`, `DirectPlay`, `DirectStream` | + +**播放进度** + +POST:`[host]/Sessions/Playing/Progress` + +body: + +| 参数名 | 备注 | +| --- | --- | +| ItemId | 歌曲ID | +| PlaySessionId | 会话ID | +| PositionTicks | 播放进度 | +| IsPaused | 是否暂停 | +| PlaybackRate | 播放速度 | +| PlayMethod | 播放方式,可选值:`Transcode`, `DirectPlay`, `DirectStream` | + +Emby 文档中对播放进度的报告时机说明如下: + +- 每 10 秒自动报告一次(用于校准服务器上的自动进度增量) +- 在用户于播放器进行任何交互后立即进行 + +报告进度的原因如下,音流仅会对勾选的事件报告进度: + +- [x] TimeUpdate 时间更新 +- [x] Pause 暂停 +- [x] Unpause 取消暂停 +- [ ] VolumeChange 音量变化 +- [ ] RepeatModeChange 重复模式更改 +- [ ] AudioTrackChange 音轨更改 +- [ ] SubtitleTrackChange 字幕更改 +- [ ] PlaylistItemMove 播放列表项移动 +- [ ] PlaylistItemRemove 播放列表项删除 +- [ ] PlaylistItemAdd 播放列表项添加 +- [ ] QualityChange 质量变革 +- [ ] SubtitleOffsetChange 字幕偏移 +- [x] PlaybackRateChange 播放速度改变 + +**标记为已播放** + +> 向 Emby 上报**播放开始**状态时,播放次数已经自动+1,因此无需使用此接口。 + POST: `[host]/Users/[UserId]/PlayedItems/[id]` query: diff --git a/docs/notes/services/plex.md b/docs/notes/services/plex.md index 25c21f1..42e992b 100644 --- a/docs/notes/services/plex.md +++ b/docs/notes/services/plex.md @@ -619,6 +619,22 @@ query: ### scrobble 滚动播放记录 +**更新播放进度** + +GET: `[host]/:/timeline` + +query: + +| 参数名 | 备注 | +| --- | --- | +| ratingKey | 歌曲ID | +| time | 播放进度,单位:ms | +| state | 播放状态,可选值:`playing`, `paused` | + +> 此接口不会将歌曲播放次数+1,需要手动调用下面的接口。 + +**将歌曲标记为已播放** + GET: `[host]/:/scrobble` query: diff --git a/docs/plans.md b/docs/plans.md index 32b84c6..e577af5 100644 --- a/docs/plans.md +++ b/docs/plans.md @@ -6,7 +6,7 @@ sidebar_position: 7 ## 正在进行 -修复 DLNA 功能 +支持安卓与 iOS 桌面组件 ## 上架 xx 商店 diff --git a/docs/problems.md b/docs/problems.md index d0b781e..ff07ea2 100644 --- a/docs/problems.md +++ b/docs/problems.md @@ -38,13 +38,23 @@ sidebar_position: 6 ::: +### 无法模糊搜索 + +在直连模式下,模糊搜索是否可用取决于服务端是否支持。例如,若要开启 Navidrome 的模糊搜索,需要在环境变量中开启`SearchFullString`。 + +媒体库模式下,由客户端提供模糊搜索的特性,若您发现某个页面的模糊搜索功能失效,请及时反馈。 + ## 播放 ### 安卓后台播放自动暂停(没有声音) -请在后台管理中允许音流后台运行,然后重新启动音流。 +步骤1: 音流 - 帮助 - 关闭电池优化 -若依旧有此问题,请检查手机设置中是否有类似「允许后台流量」的选项。 +步骤2: 系统应用设置 - 音流 - 流量和联网 - 允许后台联网 + +第二步这个后台联网在不同手机可能有不同的叫法和设置位置,比如华为是在电池 - 更多电池设置 - 休眠时始终保持网络连接,请自行探索。 + +目前已在 魅族20 和华为平板测过这样的配置就可以保持后台播放。 ### 播放时总时长一直在更新 diff --git a/docs/services.md b/docs/services.md index cb090e3..146f3b4 100644 --- a/docs/services.md +++ b/docs/services.md @@ -9,7 +9,7 @@ sidebar_position: 2 ## 支持版本 - Navidrome 0.49.3 及以上 -- Plex 1.29.2 及以上,支持 OTP 验证码登录 +- Plex 1.29.2 及以上,支持 OTP 验证码登录,暂不支持登陆到共享音乐库 - AudioStation DSM 6 及以上,支持 OTP 验证码登录 - Emby 4.7.14.0 及以上 - Jellyfin 10.8.10 及以上 diff --git a/docs/versions/latest.md b/docs/versions/latest.md index 1957e3c..4b63680 100644 --- a/docs/versions/latest.md +++ b/docs/versions/latest.md @@ -4,13 +4,13 @@ sidebar_position: 99 # 最新版本 -更新于:2024-07-25 +更新于:2024-09-02 :::tip 护甲+1 import DayCounter from '@site/src/components/DayCounter'; -音流发布至今已有 天了,共更新了 30 个版本,还是个很年轻的播放器呢~ +音流发布至今已有 天了,共更新了 31 个版本,还是个很年轻的播放器呢~ 因个人开发经验与精力所限,且要兼顾多个平台与音乐服务,更新速度与 bug 解决速度难免要慢一些,望诸君见谅。 @@ -18,6 +18,107 @@ import DayCounter from '@site/src/components/DayCounter'; ::: +## V1.3.1(2024-09-02) + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Button from '@mui/material/Button'; +import WindowIcon from '@mui/icons-material/Window'; +import AppleIcon from '@mui/icons-material/Apple'; +import AndroidIcon from '@mui/icons-material/Android'; + + + +
+ + MD5: dd95dadfc5e0da5390a56a4c2333b529 +
+
+ + MD5: c6cc33ba5efa185d3daea8f62bdf399a +
+
+ + MD5: be12b8d86a1d9867c6b2b6cfbddcee47 +
+
+ + MD5: 4e8d8000211401a7f1aa5f36a63ef0c7 +
+
+ + +
+ + MD5: 9eb42a5d0d3730034ec76030dee86bb9 +
+ +:::caution + +若安装失败请查看[安装教程](../guides/install) + +::: +
+ + +
+ + MD5: 156a5e98e00c9e0287f36169be4cbf38 +
+ +:::caution + +当前版本修复了与最新版 Mac 系统的兼容问题,安装前需要先在访达 - 应用程序按 `Command + Delete` 删除之前安装的版本,否则会同时存在两个音流。 + +::: +
+
+ +更新内容: + +- [DLNA 功能修复](https://github.com/gitbobobo/StreamMusic/issues/254) +- [Windows 新增任务栏快捷操作与播放进度显示](https://github.com/gitbobobo/StreamMusic/issues/220) +- 新增专辑艺术家列表(仅Emby和Jellyfin有效,其他服务端等同于歌手列表) +- 支持多艺术家跳转(此前默认跳转第一个) +- 支持[配置代理地址](https://github.com/gitbobobo/StreamMusic/issues/447) +- 去掉实时搜索逻辑(可能导致搜索时间过长),需按回车键触发搜索 +- 手机端的首页显示资料库别名 +- 调整纯色主题配色 +- 对话框样式改为各个平台的原生样式,后续将逐步替换其他组件 +- 支持[上报播放中的状态](https://github.com/gitbobobo/StreamMusic/issues/437) +- [歌曲详情显示缓存位置](https://github.com/gitbobobo/StreamMusic/issues/151) +- Emby/Jellyfin 增加全部分区的选项 +- 封面显示逻辑调整回原来的(歌曲展示歌曲封面,专辑展示专辑封面) +- [修改歌曲列表默认封面](https://github.com/gitbobobo/StreamMusic/issues/468) +- 优化重定向歌曲资源的处理逻辑 +- 调整歌词偏移后,按对勾会调用歌词确认接口 +- [调整歌词与翻译的间距](https://github.com/gitbobobo/StreamMusic/issues/474) +- 同步数据的IP地址现可识别多网卡的IP地址 +- [恢复自定义API保存按钮](https://github.com/gitbobobo/StreamMusic/issues/458) +- [媒体库模式文件夹模糊搜索](https://github.com/gitbobobo/StreamMusic/issues/481)不再对大小写敏感 +- [提升歌手详情页按钮可见性](https://github.com/gitbobobo/StreamMusic/issues/477) +- 兼容 [macOS Beta 3](https://github.com/gitbobobo/StreamMusic/issues/414) +- 修复无法导入歌单的问题 +- 修复自定义歌单顺序无法保存的问题 +- 修复首页批量歌单歌曲时只能下载第一首的问题 +- 兼容 [Jellyfin 10.8](https://github.com/gitbobobo/StreamMusic/issues/429) +- 修复 Plex 在 CarPlay 中点击歌曲列表后闪退的问题 +- 修复 [Jellyfin 不显示封面的问题](https://github.com/gitbobobo/StreamMusic/issues/435) +- 修复无法删除已下载的歌曲的问题 +- 修复媒体库模式下最近与最常播放不显示的问题 +- 修复[直连模式下群晖无法按歌手筛选专辑和歌曲的问题](https://github.com/gitbobobo/StreamMusic/issues/433) +- 修复添加 BaseUrl 后无法播放的问题 [#438](https://github.com/gitbobobo/StreamMusic/issues/438) [#396](https://github.com/gitbobobo/StreamMusic/issues/396) +- 修复[无法播放文件夹下歌曲的问题](https://github.com/gitbobobo/StreamMusic/issues/473) +- 修复[媒体库模式下群晖无法按添加时间倒序](https://github.com/gitbobobo/StreamMusic/issues/459)的问题 +- 修复[支付宝订单号恢复页面按钮不可用的问题](https://github.com/gitbobobo/StreamMusic/issues/453) +- 修复[低版本安卓无法恢复购买的问题](https://github.com/gitbobobo/StreamMusic/issues/469) +- 修复 [TV 版第二次打开时可能卡在启动页](https://github.com/gitbobobo/StreamMusic/issues/446)的问题 +- 修复桌面端搜索到多个歌词时无法滚动选择的问题(添加底部指示器) +- 修复[随机播放歌单内歌曲时随机范围过小](https://github.com/gitbobobo/StreamMusic/issues/530)的问题 +- 修复修改系统时区后歌词不会自动滚动的问题 +- 修复[播放高码率文件可能出现电流声](https://github.com/gitbobobo/StreamMusic/issues/518)的问题 + + ## V1.3.0(2024-07-25) :::success 早鸟优惠2 @@ -30,30 +131,23 @@ import DayCounter from '@site/src/components/DayCounter'; ::: -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import Button from '@mui/material/Button'; -import WindowIcon from '@mui/icons-material/Window'; -import AppleIcon from '@mui/icons-material/Apple'; -import AndroidIcon from '@mui/icons-material/Android'; -
- MD5: afe89bf8a90d99b9bff59b564269cae1 + MD5: 1cddbc720c19dde02d9d50d9a2106c35
- MD5: f86ee784113971179266b401f78fda09 + MD5: 445eaba3783884ddb4207e99947ebd52
- MD5: f13062c48f656e8b8d438edc5c0f0a4c + MD5: b9bb45b1be24ca2efb9a1fcbcdc8b668
- MD5: ebe45f09ef85adec90dfc6bbcabda1b2 + MD5: 6ecf08468ec68879f50d78dc14dfd628
diff --git a/package.json b/package.json index 22e03b1..f3482d5 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", - "gen-link": "node ./scripts/link.js 1.3.0 /Users/godbobo/work/music/release" + "gen-link": "node ./scripts/link.js 1.3.1 /Users/godbobo/work/music/release" }, "dependencies": { "@docusaurus/core": "3.1.1", diff --git a/scripts/link.js b/scripts/link.js index 824ecbd..f40151b 100644 --- a/scripts/link.js +++ b/scripts/link.js @@ -82,11 +82,17 @@ import AndroidIcon from '@mui/icons-material/Android'; MD5: ${windowsMd5} + +:::caution + +若安装失败请查看[安装教程](../guides/install) + +:::
- + MD5: ${macMd5}