Corpus:自托管的 ListenBrainz 和 Last.fm 前端

Lobsters Hottest 工具

摘要

Corpus 是一个自托管的前端,用于 ListenBrainz 和 Last.fm,它存储音乐收听记录、元数据和封面图片,并提供一个基于 PureScript 的交互界面来探索收听习惯。

<p>作为一个自托管的代理,它从 Last.fm 或 MusicBrainz 获取收听历史,从 MusicBrainz 添加元数据(回退到 Last.fm 和 Discogs),并将封面图片缓存到 S3 存储桶。所有数据存储在 DuckDB 中(每个用户拥有独立的数据库),即使对于较大的用户档案(20 万条收听记录),它也运行得相当顺畅。</p> <p>我始终担心这些服务可能会在没有预警的情况下消失,同时带走的还有极其丰富的收听历史记录。</p> <p>我在周末临时学习 PureScript 和 Elm 的过程中大量使用了 LLM,这是我长期以来一直在思考的项目之一,因为其他替代方案似乎有些乏善可陈。</p> <p><a href="https://lobste.rs/s/qxhzxh/corpus_self_hosted_listenbrainz_last_fm">评论</a></p>
查看原文
查看缓存全文

缓存时间: 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)

文档

  • 架构 — 深入探讨系统组件、数据流以及 FFI 的使用。
  • DuckDB — 模式详情、分析查询以及数据探索工具。

使用方法

本项目使用 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_FILEusers.json多用户配置文件路径
DATABASE_PATH(当前工作目录)所有用户数据库文件的根目录
PORT8000HTTP 监听端口
LASTFM_API_KEYLast.fm API 密钥(当任意用户设置了 lastfmUser 时必须提供;也用于流派和封面图片的备用获取)
DISCOGS_TOKENDiscogs 令牌,用于封面图片和流派的备用获取
S3_BUCKET用于封面图片缓存和备份的 S3 存储桶名称
S3_REGIONus-east-1S3 区域
AWS_ACCESS_KEY_IDS3 凭据
AWS_SECRET_ACCESS_KEYS3 凭据
AWS_ENDPOINT_URLS3 兼容端点(例如用于 MinIO)
AWS_S3_ADDRESSING_STYLE设置为 path 以使用路径风格的 S3 URL
COSINE_API_KEYcosine.club(https://cosine.club)API 密钥,用于相似曲目
METRICS_ENABLEDfalse设置为 true 以在 /metrics 暴露 Prometheus 指标

各用户配置

字段默认值描述
slugURL 片段("" 表示根用户,"filip" 表示 /u/filip
name用户的显示名称(如果未提供,则默认为 slug)
listenbrainzUser要同步收听记录的 ListenBrainz 用户名
lastfmUser要同步收听记录的 Last.fm 用户名
databaseFilecorpus.db用户 DuckDB 数据库文件的路径
initialSyncfalse首次运行时执行完整的历史同步
coverCacheEnabledtrue启用封面图片缓存到 S3
backupEnabledfalse启用数据库备份到 S3
backupIntervalHours24备份频率(小时)

相似文章

Record Club 试图成为音乐爱好者的 Letterboxd

The Verge

Record Club 是一个新的社交平台,供音乐爱好者评分、评论和编目专辑,灵感来自 Letterboxd,具有自定义列表、关注艺术家和厂牌以及与 MusicBrainz 集成等功能。