Corpus:自托管的 ListenBrainz 和 Last.fm 前端
摘要
Corpus 是一个自托管的前端,用于 ListenBrainz 和 Last.fm,它存储音乐收听记录、元数据和封面图片,并提供一个基于 PureScript 的交互界面来探索收听习惯。
查看缓存全文
缓存时间: 2026/04/20 14:44
mtmn/corpus
来源:https://github.com/mtmn/corpus
corpus
一个自托管的 ListenBrainz(https://listenbrainz.org)和 Last.fm(https://last.fm)前端,用于存储元数据和封面图片。
它包含记录收听记录、元数据丰富功能,以及一个用于探索收听习惯的交互式 PureScript(https://purescript.org)前端。
你可以亲自体验:scrobbler.mtmn.name(https://scrobbler.mtmn.name)
文档
使用方法
本项目使用 just(https://github.com/casey/just)和 Nix(https://nixos.org)进行开发和部署。
开发
# 进入开发环境(包含 PureScript、DuckDB 等)
just shell
# 构建
just nix build
# 运行 Nix 构建的二进制文件
just nix run
构建
# 安装依赖
npm install
npx spago install
# 构建项目
npm run build
# 运行测试
npx spago test
# 构建优化后的发布版本
npm run release
# 运行应用
npx spago run
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
CORPUS_USERS_FILE | users.json | 多用户配置文件路径 |
DATABASE_PATH | (当前工作目录) | 所有用户数据库文件的根目录 |
PORT | 8000 | HTTP 监听端口 |
LASTFM_API_KEY | — | Last.fm API 密钥(当任意用户设置了 lastfmUser 时必须提供;也用于流派和封面图片的备用获取) |
DISCOGS_TOKEN | — | Discogs 令牌,用于封面图片和流派的备用获取 |
S3_BUCKET | — | 用于封面图片缓存和备份的 S3 存储桶名称 |
S3_REGION | us-east-1 | S3 区域 |
AWS_ACCESS_KEY_ID | — | S3 凭据 |
AWS_SECRET_ACCESS_KEY | — | S3 凭据 |
AWS_ENDPOINT_URL | — | S3 兼容端点(例如用于 MinIO) |
AWS_S3_ADDRESSING_STYLE | — | 设置为 path 以使用路径风格的 S3 URL |
COSINE_API_KEY | — | cosine.club(https://cosine.club)API 密钥,用于相似曲目 |
METRICS_ENABLED | false | 设置为 true 以在 /metrics 暴露 Prometheus 指标 |
各用户配置
| 字段 | 默认值 | 描述 |
|---|---|---|
slug | — | URL 片段("" 表示根用户,"filip" 表示 /u/filip) |
name | — | 用户的显示名称(如果未提供,则默认为 slug) |
listenbrainzUser | — | 要同步收听记录的 ListenBrainz 用户名 |
lastfmUser | — | 要同步收听记录的 Last.fm 用户名 |
databaseFile | corpus.db | 用户 DuckDB 数据库文件的路径 |
initialSync | false | 首次运行时执行完整的历史同步 |
coverCacheEnabled | true | 启用封面图片缓存到 S3 |
backupEnabled | false | 启用数据库备份到 S3 |
backupIntervalHours | 24 | 备份频率(小时) |
相似文章
一个完全本地、自托管的代码仓库索引,适用于编码智能体(Rust,MIT 协议,离线运行)
Basemind 是一个开源工具,可在本地索引仓库,并通过 MCP 协议向编码智能体提供上下文,包括代码地图、Git 历史记录和文档 RAG,无需依赖云端。
Show HN: Rocksky – 基于 AT Protocol 的音乐记录与发现平台
Rocksky 是一个去中心化的音乐追踪与发现平台,基于 AT Protocol 构建,提供与 Last.fm 和 ListenBrainz 兼容的 API,并集成了 Spotify、Jellyfin 等服务。
tinysub: 适用于 Open Subsonic 兼容音乐服务器的功能齐全的网页播放器
tinysub 是一个功能齐全的网页播放器,适用于像 Navidrome 和 Gonic 这样的 Open Subsonic 兼容音乐服务器,使用 Svelte 构建以实现高性能和桌面般的体验。
Record Club 试图成为音乐爱好者的 Letterboxd
Record Club 是一个新的社交平台,供音乐爱好者评分、评论和编目专辑,灵感来自 Letterboxd,具有自定义列表、关注艺术家和厂牌以及与 MusicBrainz 集成等功能。
Show HN: 基于 Rockbox 固件的现代音乐播放器守护进程
使用 Zig 和 Rust 对 Rockbox 音频播放器固件进行的现代化重写,支持多房间音频以及各种 API 集成。