diff --git a/.github/README.md b/.github/README.md index 45629bbd7..277048472 100644 --- a/.github/README.md +++ b/.github/README.md @@ -178,6 +178,7 @@ | 🟢 | | sonarr | https://sonarr.tv/ | 智能 PVR 适用于新闻组和 BT 用户。 | | | 🟢 | | SpeedTest | https://www.speedtest.net/ | 互联网速度测试 | | | 🟢 | | SpeedTest-Tracker | https://docs.speedtest-tracker.dev/ | Speedtest Tracker 是一款自托管互联网性能跟踪应用程序,可针对 Ookla 的 Speedtest 服务运行速度测试检查 | | +| 🟢 | | SPlayer | https://github.com/imsyy/SPlayer/ | 一个简约的音乐播放器 | | | 🟢 | | Stash | https://stashapp.cc/ | 组织和刮削你的色情内容 | | | 🟢 | | Stream-Rec | https://github.com/hua0512/stream-rec/ | Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | | | 🟢 | | Stream-Rec Web版 | https://github.com/hua0512/stream-rec/ | 【前端版】Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | | diff --git a/README.md b/README.md index d37b66118..a4deb60f2 100644 --- a/README.md +++ b/README.md @@ -173,6 +173,7 @@ | 🟢 | | sonarr | https://sonarr.tv/ | 智能 PVR 适用于新闻组和 BT 用户。 | | | 🟢 | | SpeedTest | https://www.speedtest.net/ | 互联网速度测试 | | | 🟢 | | SpeedTest-Tracker | https://docs.speedtest-tracker.dev/ | Speedtest Tracker 是一款自托管互联网性能跟踪应用程序,可针对 Ookla 的 Speedtest 服务运行速度测试检查 | | +| 🟢 | | SPlayer | https://github.com/imsyy/SPlayer/ | 一个简约的音乐播放器 | | | 🟢 | | Stash | https://stashapp.cc/ | 组织和刮削你的色情内容 | | | 🟢 | | Stream-Rec | https://github.com/hua0512/stream-rec/ | Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | | | 🟢 | | Stream-Rec Web版 | https://github.com/hua0512/stream-rec/ | 【前端版】Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | | diff --git a/apps/splayer/README.md b/apps/splayer/README.md new file mode 100644 index 000000000..e04f0e7c2 --- /dev/null +++ b/apps/splayer/README.md @@ -0,0 +1,118 @@ +# SPlayer + +🎉 一个简约的音乐播放器,支持逐字歌词,下载歌曲,展示评论区,音乐云盘及歌单管理,音乐频谱,移动端基础适配 + +![SPlayer](https://file.lifebus.top/imgs/splayer_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 特性 + +✨ 支持扫码登录 + +📱 支持手机号登录 + +📅 自动进行每日签到及云贝签到 + +💻 支持桌面歌词 + +💻 支持切换为本地播放器,此模式将不会连接网络 + +🎨 封面主题色自适应,支持全站着色 + +🌚 Light / Dark / Auto 模式自动切换 + +📁 本地歌曲管理及分类(建议先使用 音乐标签 进行匹配后再使用) + +📁 简易的本地音乐标签编辑及封面修改 + +🎵 支持播放部分无版权歌曲(可能会与原曲不匹配,客户端独占功能) + +⬇️ 下载歌曲 / 批量下载( 最高支持 Hi-Res,需具有相应会员账号 ) + +➕ 新建歌单及歌单编辑 + +❤️ 收藏 / 取消收藏歌单或歌手 + +🎶 每日推荐歌曲 + +📻 私人 FM + +☁️ 云盘音乐上传 + +📂 云盘内歌曲播放 + +🔄 云盘内歌曲纠正 + +🗑️ 云盘歌曲删除 + +📝 支持逐字歌词 + +🔄 歌词滚动以及歌词翻译 + +📹 MV 与视频播放 + +🎶 音乐频谱显示 + +⏭️ 音乐渐入渐出 + +🔄 支持 PWA + +💬 支持评论区 + +## 使用说明 + +### 音源 + +| 名称 | 代号 | 默认启用 | 注意事项 | +|--------------------------|-------------|------|------------------------------------------------| +| QQ 音乐 | `qq` | | 需要准备自己的 `QQ_COOKIE`(请参阅下方〈环境变量〉处)。必须使用 QQ 登录。 | +| 酷狗音乐 | `kugou` | ✅ | | +| 酷我音乐 | `kuwo` | | | +| 波点音乐 | `bodian` | ✅ | | +| 咪咕音乐 | `migu` | ✅ | 需要准备自己的 `MIGU_COOKIE`(请参阅下方〈环境变量〉处)。 | +| JOOX | `joox` | | 需要准备自己的 `JOOX_COOKIE`(请参阅下方〈环境变量〉处)。似乎有严格地区限制。 | +| YouTube(纯 JS 解析方式) | `youtube` | | 需要 Google 认定的**非中国大陆区域** IP 地址。 | +| YouTube(通过 `youtube-dl`) | `youtubedl` | | 需要自行安装 `youtube-dl`。 | +| YouTube(通过 `yt-dlp`) | `ytdlp` | ✅ | 需要自行安装 `yt-dlp`(`youtube-dl` 仍在活跃维护的 fork)。 | +| B 站音乐 | `bilibili` | | | +| B 站音乐 | `bilivideo` | | 在大陆地区外的IP地址可能查询不到某些版权视频(如索尼音乐上传的MV等) | +| 第三方网易云 API | `pyncmd` | | | + +- 支持 `pyncmd` 的 API 服务由 GD studio 提供。 + +### 配置项 + +| 变量名称 | 类型 | 描述 | 示例 | +|-----------------------|------|-----------------------------------------------------------------------|------------------------------------------------------------------| +| ENABLE_FLAC | bool | 激活无损音质获取 | `ENABLE_FLAC=true` | +| ENABLE_LOCAL_VIP | str | 激活本地黑胶 VIP,可选值:`true`(等同于 CVIP)、`cvip` 和 `svip` | `ENABLE_LOCAL_VIP=svip` | +| LOCAL_VIP_UID | str | 仅对这些 UID 激活本地黑胶 VIP,默认为对全部用户生效 | `LOCAL_VIP_UID=123456789,1234,123456` | +| ENABLE_HTTPDNS | bool | 激活故障的 Netease HTTPDNS 查询(不建议) | `ENABLE_HTTPDNS=true` | +| BLOCK_ADS | bool | 屏蔽应用内部分广告 | `BLOCK_ADS=true` | +| DISABLE_UPGRADE_CHECK | bool | 禁用更新检测 | `DISABLE_UPGRADE_CHECK=true` | +| DEVELOPMENT | bool | 激活开发模式。需要自己用 `yarn` 安装依赖 (dependencies) | `DEVELOPMENT=true` | +| FOLLOW_SOURCE_ORDER | bool | 严格按照配置音源的顺序进行查询 | `FOLLOW_SOURCE_ORDER=true` | +| JSON_LOG | bool | 输出机器可读的 JSON 记录格式 | `JSON_LOG=true` | +| NO_CACHE | bool | 停用 cache | `NO_CACHE=true` | +| MIN_BR | int | 允许的最低源音质,小于该值将被替换 | `MIN_BR=320000` | +| SELECT_MAX_BR | bool | 选择所有音源中的最高码率替换音频 | `SELECT_MAX_BR=true` | +| LOG_LEVEL | str | 日志输出等级。请见〈日志等级〉部分。 | `LOG_LEVEL=debug` | +| LOG_FILE | str | 从 Pino 端设置日志输出的文件位置。也可以用 `*sh` 的输出重导向功能 (`node app.js >> app.log`) 代替 | `LOG_FILE=app.log` | +| JOOX_COOKIE | str | JOOX 音源的 wmid 和 session_key cookie | `JOOX_COOKIE="wmid=; session_key="` | +| MIGU_COOKIE | str | 咪咕音源的 aversionid cookie | `MIGU_COOKIE=""` | +| QQ_COOKIE | str | QQ 音源的 uin 和 qm_keyst cookie | `QQ_COOKIE="uin=; qm_keyst="` | +| YOUTUBE_KEY | str | Youtube 音源的 Data API v3 Key | `YOUTUBE_KEY=""` | +| SIGN_CERT | path | 自定义证书文件 | `SIGN_CERT="./server.crt"` | +| SIGN_KEY | path | 自定义密钥文件 | `SIGN_KEY="./server.key"` | +| SEARCH_ALBUM | bool | 在其他音源搜索歌曲时携带专辑名称(默认搜索条件 `歌曲名 - 歌手`,启用后搜索条件 `歌曲名 - 歌手 专辑名`) | `SEARCH_ALBUM=true` | +| NETEASE_COOKIE | str | 网易云 Cookie | `MUSIC_U=007554xxx` | + +### 网易云服务器IP + +通过 `ping music.163.com` 获得网易云服务器的 IP 地址 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) +![Ms Studio](https://analytics.lifebus.top/p/wJix5nI1W) diff --git a/apps/splayer/data.yml b/apps/splayer/data.yml new file mode 100644 index 000000000..63c758990 --- /dev/null +++ b/apps/splayer/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + key: splayer + name: SPlayer + tags: + - WebSite + - Local + shortDescZh: 一个简约的音乐播放器 + shortDescEn: A minimalist music player + type: website + crossVersionUpdate: true + limit: 0 + website: https://github.com/imsyy/SPlayer/ + github: https://github.com/imsyy/SPlayer/ + document: https://github.com/imsyy/SPlayer/ + architectures: + - amd64 + - arm64 diff --git a/apps/splayer/latest/data.yml b/apps/splayer/latest/data.yml new file mode 100644 index 000000000..34395d55e --- /dev/null +++ b/apps/splayer/latest/data.yml @@ -0,0 +1,71 @@ +additionalProperties: + formFields: + - default: 25884 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "103.135.240.77" + edit: true + envKey: NETEASE_SERVER_IP + labelZh: 网易云音乐服务器IP + labelEn: Netease Music Server IP + required: false + type: text + - default: "kugou bodian migu ytdlp bilibili qq kuwo joox youtube youtubedl bilivideo pyncmd" + edit: true + envKey: UNBLOCK_SOURCES + labelZh: 启用音源 + labelEn: Enable Music Sources + required: true + type: text + - default: "true" + edit: true + envKey: ENABLE_FLAC + labelZh: 启用无损音源 + labelEn: Enable FLAC + required: true + type: select + values: + - label: 启用 + value: "true" + - label: 禁用 + value: "false" + - default: "" + edit: true + envKey: JOOX_COOKIE + labelZh: Joox 音源 Cookie + labelEn: Joox Cookie + required: false + type: text + - default: "" + edit: true + envKey: MIGU_COOKIE + labelZh: 咪咕音源 Cookie + labelEn: Migu Cookie + required: false + type: text + - default: "" + edit: true + envKey: QQ_COOKIE + labelZh: QQ 音源 Cookie + labelEn: QQ Music Cookie + required: false + type: text + - default: "" + edit: true + envKey: YOUTUBE_KEY + labelZh: YouTube 音源 API Key + labelEn: YouTube API Key + required: false + type: text + - default: "" + edit: true + envKey: NETEASE_COOKIE + labelZh: 网易云音乐音源 Cookie + labelEn: Netease Music Cookie + required: false + type: text diff --git a/apps/splayer/latest/docker-compose.yml b/apps/splayer/latest/docker-compose.yml new file mode 100644 index 000000000..636d71a6c --- /dev/null +++ b/apps/splayer/latest/docker-compose.yml @@ -0,0 +1,30 @@ +networks: + 1panel-network: + external: true + +services: + splayer: + image: imsyy/splayer:latest + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:25884 + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + environment: + - TZ=Asia/Shanghai + - ENABLE_HTTPDNS=false + - BLOCK_ADS=true + - DISABLE_UPGRADE_CHECK=false + - DEVELOPMENT=false + - FOLLOW_SOURCE_ORDER=true + - JSON_LOG=false + - NO_CACHE=false + - SELECT_MAX_BR=true + - LOG_LEVEL=info + - SEARCH_ALBUM=true diff --git a/apps/splayer/latest/envs/default.env b/apps/splayer/latest/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/apps/splayer/latest/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/splayer/latest/envs/global.env b/apps/splayer/latest/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/apps/splayer/latest/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/splayer/latest/scripts/init.sh b/apps/splayer/latest/scripts/init.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/splayer/latest/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/splayer/latest/scripts/uninstall.sh b/apps/splayer/latest/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/splayer/latest/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/splayer/latest/scripts/upgrade.sh b/apps/splayer/latest/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/splayer/latest/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/splayer/logo.png b/apps/splayer/logo.png new file mode 100644 index 000000000..2c40a83d4 Binary files /dev/null and b/apps/splayer/logo.png differ diff --git a/apps/splayer/logo.svg b/apps/splayer/logo.svg new file mode 100644 index 000000000..bce3bc5bd --- /dev/null +++ b/apps/splayer/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file