一个纯静态、无后端的网页应用:输入任意 GitHub 仓库地址,自动解析出仓库中的音乐文件,并支持在线播放。
数据完全通过 GitHub REST API 在浏览器端获取,音频直接从 raw.githubusercontent.com 加载,无需任何服务器。
- 输入仓库地址即可解析音乐文件(支持多种地址格式)
- 递归扫描整个仓库的所有目录
- 支持格式:
mp3wavoggogaflacm4aaacopuswebawebmwma - 底部常驻播放器,点击列表即可在线播放
- 可选填写 GitHub Token 以提升 API 速率限制(仅保存在本地浏览器)
- 支持通过 URL 参数预填:
?repo=owner/repo&branch=main - 响应式设计,适配移动端
https://github.com/owner/repohttps://github.com/owner/repo/tree/branch/pathgit@github.com:owner/repo.gitowner/repo
由于使用了 fetch 请求 GitHub API,直接用 file:// 打开可能受限,建议起一个本地静态服务器:
# 任选其一
python3 -m http.server 8000
# 或
npx serve .然后访问 http://localhost:8000。
本仓库已内置 GitHub Actions 工作流(.github/workflows/deploy.yml),推送到 main 分支后自动部署。
- 将代码推送到 GitHub 仓库的
main分支。 - 打开仓库的 Settings → Pages。
- 在 Build and deployment → Source 处选择 GitHub Actions。
- 等待 Actions 运行完成,即可通过 Pages 提供的地址访问。
也可以不使用 Actions,直接在 Pages 设置中选择从
main分支的根目录/ (root)部署,因为这是纯静态站点。
在被解析的音乐仓库根目录下放置一个 github-music.json,即可自定义展示行为:
{
"ignore": [
"初试牛刀",
"某目录/某首歌.mp3"
],
"weights": {
"我的制作": 100,
"核泣约": 90,
"BJTU": 80
},
"descriptions": {
"BJTU": "我在北京交通大学上学时的作品"
}
}ignore:不在网站上展示的目录或文件。- 填目录名(如
初试牛刀)会忽略该目录下的所有内容(含子目录)。 - 填完整文件路径(如
某目录/某首歌.mp3)会忽略单个文件。 - 支持任意层级的路径,例如
BJTU/草稿。
- 填目录名(如
weights:目录展示权重,数值越大越靠前,未列出的目录按0处理,权重相同按名称排序。- 键可以是目录名,也可以是完整目录路径(用于区分不同层级的同名目录)。
descriptions:为目录配置一段描述文字,显示在目录名下方。键同样支持目录名或完整目录路径。
该文件不存在时,网站按默认(全部展示、名称排序)行为工作。
- 未认证请求:每个 IP 每小时 60 次。
- 认证请求(填写 Token):每小时 5000 次。
如遇到 速率限制已用尽 提示,请在「高级选项」中填写一个 Personal Access Token(无需任何特殊权限,公开仓库只读即可)。Token 仅存储在浏览器的 localStorage,不会上传到任何服务器。
- 仅支持公开仓库(除非提供有相应权限的 Token)。
- 超大仓库的文件树可能被 GitHub API 截断(会有提示)。
- 播放依赖浏览器对相应音频格式的支持。
.
├── index.html # 页面结构
├── styles.css # 样式
├── app.js # 解析与播放逻辑
├── README.md
└── .github/workflows/deploy.yml # 自动部署工作流
MIT