1
0
Fork 0

feat(solara): 添加Solara(光域)音乐播放器 (#3437)

* 添加Solara(光域)音乐播放器

* 📝 docs(solara): optimize project documentation and add multilingual support

- add init.sh script for automatic SESSION_SECRET generation
- rewrite and simplify main README.md content for clarity
- add new README_en.md file with full English translation
- update data.yml with multilingual descriptions (zh-Hant, ja, ms, pt-br, ru, ko)
- change app type from 'tool' to 'website' in metadata
- remove deprecated _env.sample file
- update latest/data.yml with multilingual form field labels and descriptions
- simplify docker-compose.yml and add pull_policy
- compress application logo image

---------

Co-authored-by: pooneyy <85266337+pooneyy@users.noreply.github.com>
This commit is contained in:
maogeddd 2026-01-15 00:37:27 +08:00 committed by GitHub
parent 65c43eabaf
commit e6e83aed5b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 142 additions and 0 deletions

18
apps/solara/README.md Normal file
View File

@ -0,0 +1,18 @@
## 产品介绍
由轻量后端服务支撑的现代化网页音乐播放器,整合多种音乐聚合接口,覆盖搜索、播放与音频下载全流程。
## 主要功能
- **主题美学**:内置亮/暗模式与玻璃拟态界面,根据当前曲目封面自动取色渲染沉浸式背景,具备沉浸体验。
- **竖屏移动端**:全新竖屏布局匹配移动端手势与屏幕比例,按钮、列表与歌词均针对单手操作优化。
- **跨站曲库检索**:一键切换数据源,支持分页浏览并批量导入播放队列。
- **队列管理灵活**:新增、删除、清空操作即时生效,并自动持久化到浏览器 localStorage。
- **收藏列表**:搜索结果与播放列表均可一键收藏,收藏列表拥有独立的播放进度、播放模式与批量操作面板。
- **丰富的播放模式**:列表循环、单曲循环与随机播放随手切换,记忆上次偏好。
- **动态歌词视图**:逐行滚动高亮,当前行自动聚焦,手动滚动后短暂锁定视图。
- **列表导入导出**:支持播放队列与收藏列表统一导入/导出,可一键迁移或恢复收藏歌曲并同步到播放队列。
- **多码率下载**:可挑选 128K / 192K / 320K / FLAC 等品质并直接获取音频文件。
- **轻量后端代理**:通过 Cloudflare Pages Functions 统一聚合各数据源并处理音频跨域。
- **锁屏播放控制**:锁屏界面自动显示专辑封面与播放控件,无需解锁即可进行播放控制。
- **调试控制台**:按下 Ctrl + D 呼出实时日志面板,便于排查接口或交互异常。

18
apps/solara/README_en.md Normal file
View File

@ -0,0 +1,18 @@
## Introduction
A modern web music player powered by lightweight backend services, integrating multiple music aggregation interfaces, covering the entire process from search and playback to audio download.
## Features
- **Thematic Aesthetics**: Built-in light/dark modes and a glass morphism interface automatically extract colors from the current track's cover to render immersive backgrounds, delivering an engaging experience.
- **Vertical Mobile Interface**: A new vertical screen layout matches mobile gestures and screen proportions, with buttons, lists, and lyrics optimized for one-handed operation.
- **Cross-Site Music Library Search**: Switch data sources with one click, supporting paginated browsing and batch import to the playback queue.
- **Flexible Queue Management**: Add, delete, and clear operations take effect immediately and are automatically persisted to the browser's localStorage.
- **Favorites List**: Search results and playlists can be added to favorites with one click. The Favorites List features independent playback progress, playback modes, and a batch operation panel.
- **Rich Playback Modes**: Seamlessly switch between list loop, single-track loop, and shuffle play, with preferences remembered from the last session.
- **Dynamic Lyrics View**: Scrolling highlight line-by-line, auto-focus on the current line, with view temporarily locked after manual scrolling.
- **List Import/Export**: Supports unified import/export of playback queue and favorites list, enabling seamless migration or restoration of favorite songs and synchronization to the playback queue.
- **Multi-bitrate Downloads**: Select from 128K / 192K / 320K / FLAC quality options and directly obtain audio files.
- **Lightweight Backend Proxy**: Unifies and aggregates various data sources via Cloudflare Pages Functions while handling audio cross-origin requests.
- **Lock Screen Playback Controls**: Automatically displays album art and playback controls on the lock screen, allowing playback control without unlocking the device.
- **Debug Console**: Press Ctrl + D to summon a real-time log panel, making it easier to troubleshoot interface or interaction issues.

30
apps/solara/data.yml Normal file
View File

@ -0,0 +1,30 @@
name: Solara(光域)
tags:
- 多媒体
title: 基于免费API的极简风格音乐播放器
description: 基于免费API的极简风格音乐播放器
additionalProperties:
key: solara
name: Solara(光域)
tags:
- Media
shortDescZh: 基于免费API的极简风格音乐播放器
shortDescEn: A minimalist style music player based on free API
description:
en: A minimalist style music player based on free API
zh: 基于免费API的极简风格音乐播放器
zh-Hant: 基於免費API的極簡風格音樂播放器
ja: 無料APIを基にしたミニマリストスタイルの音楽プレーヤー
ms: Pemain muzik gaya minimalis berdasarkan API percuma
pt-br: Um player de música estilo minimalista baseado em API gratuita
ru: Минималистичный музыкальный плеер на основе бесплатного API
ko: 무료 API 기반의 미니멀리스트 스타일 음악 플레이어
type: website
crossVersionUpdate: true
limit: 0
website: https://github.com/akudamatata/Solara
github: https://github.com/akudamatata/Solara
document: https://github.com/akudamatata/Solara
architectures:
- amd64
- arm64

View File

@ -0,0 +1,42 @@
additionalProperties:
formFields:
- default: 8080
envKey: PANEL_APP_PORT_HTTP
labelZh: HTTP 端口
labelEn: HTTP Port
label:
zh: HTTP 端口
zh-Hant: HTTP 連接埠
en: HTTP Port
ja: HTTP ポート
ko: HTTP 포트
ms: Port HTTP
pt-br: Porta HTTP
ru: HTTP Порт
tr: HTTP Portu
description:
zh: "设置应用的 HTTP 访问端口,有效范围: 1-65535"
zh-Hant: "設定應用程式的 HTTP 存取連接埠,有效範圍: 1-65535"
en: "Set the HTTP access port for the application, valid range: 1-65535"
ja: "アプリケーションのHTTPアクセスポートを設定します。有効範囲: 1-65535"
ko: "애플리케이션의 HTTP 접근 포트를 설정합니다. 유효 범위: 1-65535"
ms: "Tetapkan port akses HTTP untuk aplikasi, julat sah: 1-65535"
pt-br: "Defina a porta de acesso HTTP para o aplicativo, intervalo válido: 1-65535"
ru: "Установите порт доступа HTTP для приложения, допустимый диапазон: 1-65535"
tr: "Uygulama için HTTP erişim portunu ayarlayın, geçerli aralık: 1-65535"
required: true
type: number
edit: true
rule: paramPort
- default: solara
envKey: SOLARA_PASSWORD
labelZh: 登录密码
labelEn: Login Password
label:
zh: 登录密码
en: Login Password
required: true
type: password
edit: true
rule: paramComplexity
random: true

View File

@ -0,0 +1,20 @@
services:
solara-music:
image: aexus/solara-music:latest
container_name: ${CONTAINER_NAME}
restart: always
pull_policy: always
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_HTTP}:3001
environment:
- NODE_ENV=production
- PORT=3001
- SOLARA_PASSWORD=${SOLARA_PASSWORD}
- SESSION_SECRET=${SESSION_SECRET}
labels:
createdBy: Apps
networks:
1panel-network:
external: true

View File

@ -0,0 +1,14 @@
#!/bin/bash
if [[ ! -f ".env" ]]; then
exit 1
fi
NEW_SECRET=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 32)
if grep -q "SESSION_SECRET=" .env; then
if [[ "$(uname)" == "Darwin" ]]; then
sed -i '' "s/SESSION_SECRET=.*/SESSION_SECRET=$NEW_SECRET/" .env
else
sed -i "s/SESSION_SECRET=.*/SESSION_SECRET=$NEW_SECRET/" .env
fi
else
echo "SESSION_SECRET=$NEW_SECRET" >> .env
fi

BIN
apps/solara/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB