Skip to content

OuterCloud/github-music

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎵 GitHub Music

一个纯静态、无后端的网页应用:输入任意 GitHub 仓库地址,自动解析出仓库中的音乐文件,并支持在线播放。

数据完全通过 GitHub REST API 在浏览器端获取,音频直接从 raw.githubusercontent.com 加载,无需任何服务器。

功能

  • 输入仓库地址即可解析音乐文件(支持多种地址格式)
  • 递归扫描整个仓库的所有目录
  • 支持格式:mp3 wav ogg oga flac m4a aac opus weba webm wma
  • 底部常驻播放器,点击列表即可在线播放
  • 可选填写 GitHub Token 以提升 API 速率限制(仅保存在本地浏览器)
  • 支持通过 URL 参数预填:?repo=owner/repo&branch=main
  • 响应式设计,适配移动端

支持的地址格式

  • https://github.com/owner/repo
  • https://github.com/owner/repo/tree/branch/path
  • git@github.com:owner/repo.git
  • owner/repo

本地运行

由于使用了 fetch 请求 GitHub API,直接用 file:// 打开可能受限,建议起一个本地静态服务器:

# 任选其一
python3 -m http.server 8000
#
npx serve .

然后访问 http://localhost:8000

部署到 GitHub Pages

本仓库已内置 GitHub Actions 工作流(.github/workflows/deploy.yml),推送到 main 分支后自动部署。

  1. 将代码推送到 GitHub 仓库的 main 分支。
  2. 打开仓库的 Settings → Pages
  3. Build and deployment → Source 处选择 GitHub Actions
  4. 等待 Actions 运行完成,即可通过 Pages 提供的地址访问。

也可以不使用 Actions,直接在 Pages 设置中选择从 main 分支的根目录 / (root) 部署,因为这是纯静态站点。

仓库配置文件(可选)

被解析的音乐仓库根目录下放置一个 github-music.json,即可自定义展示行为:

{
  "ignore": [
    "初试牛刀",
    "某目录/某首歌.mp3"
  ],
  "weights": {
    "我的制作": 100,
    "核泣约": 90,
    "BJTU": 80
  },
  "descriptions": {
    "BJTU": "我在北京交通大学上学时的作品"
  }
}
  • ignore:不在网站上展示的目录或文件。
    • 填目录名(如 初试牛刀)会忽略该目录下的所有内容(含子目录)。
    • 填完整文件路径(如 某目录/某首歌.mp3)会忽略单个文件。
    • 支持任意层级的路径,例如 BJTU/草稿
  • weights:目录展示权重,数值越大越靠前,未列出的目录按 0 处理,权重相同按名称排序。
    • 键可以是目录名,也可以是完整目录路径(用于区分不同层级的同名目录)。
  • descriptions:为目录配置一段描述文字,显示在目录名下方。键同样支持目录名或完整目录路径。

该文件不存在时,网站按默认(全部展示、名称排序)行为工作。

关于 API 速率限制

  • 未认证请求:每个 IP 每小时 60 次
  • 认证请求(填写 Token):每小时 5000 次

如遇到 速率限制已用尽 提示,请在「高级选项」中填写一个 Personal Access Token(无需任何特殊权限,公开仓库只读即可)。Token 仅存储在浏览器的 localStorage,不会上传到任何服务器。

局限性

  • 仅支持公开仓库(除非提供有相应权限的 Token)。
  • 超大仓库的文件树可能被 GitHub API 截断(会有提示)。
  • 播放依赖浏览器对相应音频格式的支持。

目录结构

.
├── index.html      # 页面结构
├── styles.css      # 样式
├── app.js          # 解析与播放逻辑
├── README.md
└── .github/workflows/deploy.yml   # 自动部署工作流

License

MIT

About

输入 GitHub 仓库地址,自动解析并在线播放仓库中的音乐文件。纯静态无后端网页应用,数据全部经浏览器端 GitHub API 获取。

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages