Skip to content

Commit 6db103a

Browse files
authored
Merge pull request #753 from imsyy/dev-stream
feat: 新增流媒体支持
2 parents 020c35c + 75348d2 commit 6db103a

47 files changed

Lines changed: 3720 additions & 178 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@
5555

5656
- ✨ 支持扫码登录
5757
- 📱 支持手机号登录
58-
- 📅 自动进行每日签到及云贝签到
58+
- ~~📅 自动进行每日签到及云贝签到~~
5959
- 💻 支持桌面歌词
6060
- 💻 支持切换为本地播放器,此模式将不会连接网络
6161
- 🎨 封面主题色自适应,支持全站着色
6262
- 🌚 Light / Dark / Auto 模式自动切换
6363
- 📁 本地歌曲管理及分类(建议先使用 [音乐标签](https://www.cnblogs.com/vinlxc/p/11347744.html) 进行匹配后再使用)
64-
- 📁 简易的本地音乐标签编辑及封面修改
64+
- 📁 本地音乐标签编辑及封面修改
6565
- 🎵 **支持播放部分无版权歌曲(可能会与原曲不匹配,客户端独占功能)**
6666
- ⬇️ 下载歌曲 / 批量下载( 最高支持 Hi-Res,需具有相应会员账号 )
6767
- ➕ 新建歌单及歌单编辑
@@ -72,6 +72,7 @@
7272
- 📂 云盘内歌曲播放
7373
- 🔄 云盘内歌曲纠正
7474
- 🗑️ 云盘歌曲删除
75+
- 🌐 支持 Subsonic / Navidrome 流媒体服务(多服务器支持、自动连接)
7576
- 📝 支持逐字歌词
7677
- 🔄 歌词滚动以及歌词翻译
7778
- 📹 MV 与视频播放
@@ -80,7 +81,7 @@
8081
- 🔄 支持 PWA
8182
- 💬 支持评论区
8283
- 🎵 支持 Last.fm Scrobble(播放记录上报)
83-
- ~~📱 移动端基础适配~~
84+
- 📱 移动端基础适配
8485

8586
## 🖼️ 界面展示
8687

@@ -182,7 +183,7 @@ docker run -d --name SPlayer -p 25884:25884 imsyy/splayer:latest
182183

183184
> 其他部署平台大致相同,在此不做说明
184185
185-
1. 本程序依赖 [NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi) 运行,请确保您已成功部署该项目或兼容的项目,并成功取得在线访问地址
186+
1. 本程序依赖 [NeteaseCloudMusicApi](https://github.com/neteasecloudmusicapienhanced/api-enhanced) 运行,请确保您已成功部署该项目或兼容的项目,并成功取得在线访问地址
186187
2. 点击本仓库右上角的 `Fork`,复制本仓库到你的 `GitHub` 账号
187188
3. 复制 `/.env.example` 文件并重命名为 `/.env`
188189
4.`.env` 文件中的 `VITE_API_URL` 改为第一步得到的 API 地址
@@ -254,7 +255,7 @@ docker run -d --name SPlayer -p 25884:25884 imsyy/splayer:latest
254255

255256
特此感谢为本项目提供支持与灵感的项目:
256257

257-
- [NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi)
258+
- [NeteaseCloudMusicApi](https://github.com/neteasecloudmusicapienhanced/api-enhanced)
258259
- [YesPlayMusic](https://github.com/qier222/YesPlayMusic)
259260
- [UnblockNeteaseMusic](https://github.com/UnblockNeteaseMusic/server)
260261
- [applemusic-like-lyrics](https://github.com/Steve-xmh/applemusic-like-lyrics)

components.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ declare module 'vue' {
162162
SongListMenu: typeof import('./src/components/Menu/SongListMenu.vue')['default']
163163
SongPlayList: typeof import('./src/components/List/SongPlayList.vue')['default']
164164
SongUnlockManager: typeof import('./src/components/Modal/Setting/SongUnlockManager.vue')['default']
165+
StreamingServerConfig: typeof import('./src/components/Modal/Setting/StreamingServerConfig.vue')['default']
166+
StreamingSetting: typeof import('./src/components/Setting/StreamingSetting.vue')['default']
165167
SvgIcon: typeof import('./src/components/Global/SvgIcon.vue')['default']
166168
TextContainer: typeof import('./src/components/Global/TextContainer.vue')['default']
167169
ThirdSetting: typeof import('./src/components/Setting/ThirdSetting.vue')['default']

docs/.vitepress/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export default defineConfig({
2929
items: [
3030
{ text: "下载", link: "/download" },
3131
{ text: "使用指南", link: "/guide" },
32+
{ text: "流媒体服务", link: "/streaming" },
3233
],
3334
},
3435
{

docs/guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ docker run -d --name SPlayer -p 25884:25884 imsyy/splayer:latest
4848

4949
### Vercel 部署
5050

51-
1. 先部署 [NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi) 并获取 API 地址
51+
1. 先部署 [NeteaseCloudMusicApi](https://github.com/neteasecloudmusicapienhanced/api-enhanced) 并获取 API 地址
5252
2. Fork 本仓库到你的 GitHub 账号
5353
3. 复制 `/.env.example``/.env` 并配置:
5454
```

docs/streaming.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# 流媒体服务支持
2+
3+
SPlayer 支持连接兼容 Subsonic 协议的流媒体服务器(如 Navidrome、Subsonic、Airsonic 等),为您提供云端音乐播放体验。
4+
5+
## 功能特性
6+
7+
- **多服务器支持**:您可以同时配置多个服务器,并随时切换。
8+
- **自动连接**:应用启动时会自动连接到上次使用的服务器。
9+
- **歌词支持**:支持解析 Subsonic 协议返回的歌词(包括 Plain 文本和 Structured 格式),并自动转换为 LRC 格式显示。
10+
- **分类浏览**:支持按 **单曲****歌手****专辑****歌单** 分类浏览库中资源。
11+
- **无缝集成**:流媒体音乐可以像本地音乐一样加入播放列表、收藏和播放。
12+
13+
## 配置指南
14+
15+
1. 进入 **设置** -> **流媒体服务**,或在侧边栏点击 **流媒体** 页面。
16+
2. 点击 **添加服务器** 按钮。
17+
3. 填写服务器信息:
18+
- **名称**:自定义服务器名称(如 "My Navidrome")。
19+
- **地址**:服务器的 URL(包含端口,如 `https://music.example.com`)。
20+
- **用户名**:您的账号。
21+
- **密码**:您的密码(或 Token)。
22+
- **类型**:选择 Navidrome 或 Subsonic。
23+
4. 点击 **确认** 保存并连接。
24+
25+
## 常见问题
26+
27+
### 连接失败?
28+
29+
- 请检查服务器地址是否正确,是否包含 `http://``https://`
30+
- 确认服务器支持 Subsonic API,并已开启相关权限。
31+
- 若使用自签名证书,应用可能默认拦截,请尝试配置 HTTPS 忽略证书错误(目前需自行确保网络环境安全)。
32+
33+
### 歌词不显示?
34+
35+
- 请确认服务端已正确刮削并存储了歌词。
36+
- 对于 Navidrome,支持读取内嵌歌词或 `.lrc` 文件。
37+
38+
### 播放列表同步
39+
40+
- 目前支持读取服务端的歌单,在客户端创建的歌单暂不直接同步回服务端(取决于后续更新)。

src/api/streaming/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
* 流媒体 API 统一入口
3+
*/
4+
5+
export * as subsonicApi from "./subsonic";
6+
export * as jellyfinApi from "./jellyfin";
7+
8+
export { default as subsonic } from "./subsonic";
9+
export { default as jellyfin } from "./jellyfin";

0 commit comments

Comments
 (0)