nates/scroggo

GitHub: nates/scroggo

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

Stars: 4 | Forks: 0

scroggo

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

## 截图 | 首页 | 收听记录 | | ---- | ------- | | ![scroggo home page](https://static.pigsec.cn/wp-content/uploads/repos/cas/24/24bc298e5fc9caf71685424ebd1c73e4ddb3e18773db66fc5048f2c4468456d1.png) | ![scroggo listens page](https://static.pigsec.cn/wp-content/uploads/repos/cas/2c/2cca094ea4720096e41ad9a16ed3120b7180a874b2d42e1ce24fbe16685a520b.png) | | 统计 | 发行版 | | ----- | ------- | | ![scroggo stats page](https://static.pigsec.cn/wp-content/uploads/repos/cas/1a/1afdac1e7c4f8a85edf687f5503f882174702c85eeb9fccd575935caa69b47c6.png) | ![scroggo release page](https://static.pigsec.cn/wp-content/uploads/repos/cas/ef/efd3be3aeb2b2a48829985ed4a97d44bd5cbd96d9f00ce217756c67f8a643d05.png) | ## 功能 - **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 ` 进行身份验证 —— 在大多数 scrobbler 中,这意味着选择“ListenBrainz”(或“自定义 ListenBrainz 服务器”),将 API URL 设置为你实例的 base URL,并粘贴该 token。 ## 许可证 GPL-3.0。Web UI、用户管理和总体结构改编自 Senan Kelly 的 [gonic](https://github.com/sentriz/gonic),同样遵循 GPL-3.0。
标签:EVTX分析, ListenBrainz, TCP SYN 扫描, Web UI, 多媒体, 日志审计, 服务器, 自托管, 请求拦截, 音乐记录