nates/scroggo
GitHub: nates/scroggo
scroggo 是一个兼容 ListenBrainz API 的自托管 scrobble 服务端,附带轻量 Web UI 和 MusicBrainz 专辑匹配功能,让用户在自己的硬件上保存和管理音乐收听历史。
Stars: 4 | Forks: 0

a self-hosted scrobble server compatible with the ListenBrainz API
point any ListenBrainz-capable client (Web Scrobbler, Pano Scrobbler, navidrome, gonic, …) at it and keep your listen history on your own hardware
## 截图 | 首页 | 收听记录 | | ---- | ------- | |  |  | | 统计 | 发行版 | | ----- | ------- | |  |  | ## 功能 - **ListenBrainz 核心 API** — `submit-listens`(单个、导入和正在播放)、`validate-token`,获取每个用户的 listens / listen-count / playing-now,以及 `delete-listen`。Recording MSID 是确定性的,因此重新提交相同的 listen 会自然去重。 - **Listen 历史** — 可浏览,按天分组,支持在 UI 中逐个删除 listen。 - **统计** — 包含所有时间、30 天或 7 天内的热门艺术家和曲目。 - **浏览和详情页** — 艺术家、曲目和专辑在任何地方均可点击,每个都有自己的页面(listen 计数、热门曲目/专辑、首次/最后收听时间、最近的 listens)。 - **多艺术家署名** — 像 `OsamaSon; che` 这样的署名会以 `;` 分割并按每个艺术家计数,而像 `Tyler, The Creator` 这样带逗号的名称则保持不变。 - **可编辑的标签** — 在某个曲目页面上修复一次标记错误,该修正就会应用到该曲目的所有 listen 中。 - **中继** — 可选择将你的 listens 转发到上游兼容 ListenBrainz 的服务器(listenbrainz.org 或另一个 scroggo 实例)。投递记录会在数据库中排队,并通过退避机制重试,因此不会因重启或上游中断而丢失任何数据。 - **多用户** — 支持每个用户独立的 API token 和历史记录,并带有管理员用户管理功能。 - **易于运行** — 单个 Go 二进制文件,SQLite 数据库,无需外部服务。 ## 运行 ``` scroggo -listen-addr :4748 -db-path scroggo.db ``` | 标志 | 默认值 | | | --------------- | -------------- | -------------------------------------------- | | `-listen-addr` | `0.0.0.0:4748` | 监听地址 | | `-db-path` | `scroggo.db` | SQLite 数据库路径 | | `-proxy-prefix` | — | 位于反向代理后时的 URL 路径前缀 | | `-http-log` | `true` | HTTP 请求日志 | | `-config-path` | — | 可选的配置文件 | 所有标志也可以通过 `SCROGGO_*` 环境变量设置(例如 `SCROGGO_DB_PATH`)。 首次运行时会创建一个 `admin`/`admin` 用户 —— 请在 `/admin/home` 登录并更改密码。 ### 容器 ``` docker run -d -p 4748:4748 -v /path/to/data:/data ghcr.io/nates/scroggo:latest ``` 镜像将其数据库存储在 `/data/scroggo.db`。 ## 连接客户端 每个用户都会获得一个 API token,显示在他们的主页上。客户端使用 `Authorization: Token标签:EVTX分析, ListenBrainz, TCP SYN 扫描, Web UI, 多媒体, 日志审计, 服务器, 自托管, 请求拦截, 音乐记录