这是indexloc提供的服务,不要输入任何密码
Skip to content

oversizexl/Solara

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎶 Solara(光域)

🌐 由轻量后端服务支撑的现代化网页音乐播放器,整合多种音乐聚合接口,覆盖搜索、播放与音频下载全流程。

Review-ezgif com-optimize

🤝 参与贡献

感谢 GD音乐台(music.gdstudio.xyz)提供的免费API

感谢 来自Linux.do 牛就是牛@ufoo 大佬 https://linux.do/t/topic/942415 提供的灵感

🌟 主要特性

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

🚀 快速上手

根据使用的托管平台,推荐使用 Cloudflare Pages 进行部署:

✅ Cloudflare Pages

  1. Fork 或克隆本仓库。
  2. 按照 Cloudflare Pages 文档创建站点,并将本仓库作为构建来源或直接上传静态资源。
  3. 部署完成后,通过 Cloudflare Pages 分配的域名访问站点即可体验播放器。

⚙️ 配置提示

  • API 基地址定义在 index.html 中的 API.baseUrl(约 1300 行),可替换为自建接口域名。
  • 默认主题、播放模式等偏好可在 state 初始化逻辑中按需调整。

🧭 探索雷达

  • 探索雷达会在「流行、摇滚、古典音乐、民谣、电子、爵士、说唱、乡村、蓝调、R&B、金属、嘻哈、轻音乐」等分类中随机挑选关键词,自动为播放列表补充新歌。
  • 如果想排除某些不喜欢的分类,可在 js/index.js 中的 EXPLORE_RADAR_GENRES 数组里删除对应条目或新增自己喜欢的分类,保存后重新部署即可生效。

🔐 访问控制设置

  • Cloudflare Pages: 在项目的 Settings → Functions → Environment variables 中新增名为 PASSWORD 的环境变量,值为希望设置的访问口令。
  • 部署完成后,未登录的访问者会被自动重定向到 /login 页面并需输入该口令;若想关闭访问口令,删除该环境变量并重新部署即可。

🎵 使用流程

  1. 输入关键词并选择想要的曲库后发起搜索。
  2. 在结果列表中可试听、播放、下载或加入播放队列。
  3. 点击列表中的心形图标即可收藏歌曲,收藏列表支持快捷下载、添加至播放列表或批量清空。
  4. 右侧播放/收藏列表展示当前曲目,可拖动播放、移除或一键清空。
  5. 底部控制栏提供播放控制、播放模式切换、进度条与音量滑块。
  6. 打开歌词面板即可查看实时滚动的高亮歌词。

📱 移动端体验提示

  • 将网页添加到手机主屏或通过移动浏览器访问,即可自动切换至竖屏布局;
  • 底栏控件重新排布,保证竖向滑动不遮挡核心信息;
  • 点击封面可以切换到歌词面板,可通过点击展开/收起。

❓ 常见问题解答

  • 搜索没有结果怎么办? 检查浏览器控制台日志,如接口被阻挡可尝试切换数据源或更新 API.baseUrl 至可用服务,很有可能是免费API炸了。
  • 如何重置本地数据? 在浏览器开发者工具的 Application / Storage 面板清理 localStorage,即可恢复默认播放列表和配置。
  • 收藏或播放列表如何备份? 使用播放队列或收藏列表顶部的「导出」按钮生成 JSON 文件,日后可通过对应列表的「导入」按钮恢复,同时可一键将收藏歌曲添加回播放列表。

🗂️ 项目结构

Music-Player/
├── css/
│   ├── desktop.css   # 桌面端布局与组件样式
│   ├── mobile.css    # 移动端适配样式
│   └── style.css     # 公共主题与变量定义
├── functions/
│   ├── _middleware.ts # Cloudflare Pages Functions 中间件
│   ├── api/           # 各曲库代理函数入口
│   ├── lib/           # 请求封装与工具模块
│   ├── palette.ts     # 封面取色算法
│   └── proxy.ts       # 音频直链代理
├── js/
│   ├── index.js       # 播放器核心逻辑、状态管理与探索雷达分类
│   └── mobile.js      # 移动端交互与事件处理
├── favicon.png
├── favicon.svg
├── index.html         # 主界面结构、资源引入与配置项
├── login.html         # 访问控制登录页
└── README.md          # 项目说明

📄 许可证

本项目采用 CC BY-NC-SA 协议,禁止任何商业化行为,任何衍生项目必须保留本项目地址并以相同协议开源。

About

一个极简风格的基于免费API的音乐播放器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 59.1%
  • CSS 22.1%
  • HTML 13.0%
  • TypeScript 5.8%