个人音乐数据可视化平台 — 从 Last.fm 获取播放记录,通过 QQ 音乐/网易云音乐获取封面,以深色现代风格网页展示。
| 模块 | 功能 |
|---|---|
| 播放统计 | 本周 / 本月 / 本年 / 总计播放次数,支持自定义起始日期 |
| 排行榜 | 艺人 TOP 10 + 歌曲 TOP 20,支持周榜 / 月榜 / 年榜 / 自定义时间 |
| 最近播放 | 网格展示最近播放记录,封面懒加载 |
| 时间分析 | 24 小时热力图 / 星期×小时热力图 / 日期热力图 / 月度对比 / 年度对比 |
| 报告中心 | 日报 / 周报 / 月报 / 年报自动生成,网页浏览 + 图片导出 + 手动发送 Telegram |
| 封面系统 | 自动匹配 QQ 音乐 / 网易云封面,支持手动搜索替换、本地上传、裁剪 |
| Telegram 推送 | 定时推送报告 + 手动发送,支持 HTTP 代理 |
| 同步管理 | 首次全量同步 + 增量同步,后台异步执行,实时进度显示 |
mkdir -p ~/lastfm && cd ~/lastfm
.env 文件# Last.fm API(必需)
LASTFM_API_KEY=你的API_KEY
LASTFM_SHARED_SECRET=你的共享密钥
# Telegram 推送(可选)
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
# 全局代理(可选,Last.fm + Telegram 统一走代理)
PROXY_URL=http://127.0.0.1:7890
Last.fm API Key 前往 https://www.last.fm/api/account/create 申请。
docker-compose.ymlservices:
app:
image: yundan21/lastfm-visualize:3.19.0
container_name: lastfm-visualize
ports:
- "3001:3001"
environment:
# 时区设置
- TZ=Asia/Shanghai
# Last.fm API(必需)
- LASTFM_API_KEY=${LASTFM_API_KEY}
- LASTFM_SHARED_SECRET=${LASTFM_SHARED_SECRET}
# Telegram 推送兜底(可选,优先级低于 config/telegram.json)
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
- TELEGRAM_CHAT_ID=${TELEGRAM_CHAT_ID}
# 全局代理(Last.fm API + Telegram)
- PROXY_URL=${PROXY_URL}
volumes:
- ./data:/app/data
- ./config:/app/config
- ./logs:/app/logs
restart: unless-stopped
保证 .env与 docker-compose.yml同一目录
docker compose up -d
首次启动会自动触发全量同步,访问 http://<IP>:3001 完成 Last.fm 授权后即可看到数据。
# 修改 docker-compose.yml 中的 image tag
docker compose pull
docker compose up -d
docker image prune -f
| 变量 | 必需 | 说明 |
|---|---|---|
LASTFM_API_KEY | 是 | Last.fm API Key |
LASTFM_SHARED_SECRET | 是 | Last.fm 共享密钥 |
TELEGRAM_BOT_TOKEN | 否 | Telegram Bot Token,也可在前端设置页配置 |
TELEGRAM_CHAT_ID | 否 | Telegram 聊天 ID |
PROXY_URL | 否 | 全局代理地址,格式 http://host:port |
容器通过 volume 挂载以下目录到宿主机:
| 宿主机路径 | 容器路径 | 内容 |
|---|---|---|
./data | /app/data | 播放记录、封面缓存、报告、session |
./config | /app/config | Telegram 等运行时配置(JSON) |
./logs | /app/logs | 应用日志文件(按天滚动) |
http://<IP>:3001进入时间分析页面:
| 视图 | 说明 |
|---|---|
| 日热力图 | 选择任意日期,查看 24 小时播放分布 |
| 周热力图 | 以起始日期为基准的 7 天 × 24 小时热力图 |
| 年热力图 | 按月份/日期展示全年分布,可滚动浏览 |
| 月度对比 | 选择年份,并排对比各月播放量 |
| 年度对比 | 选择两个年份,对比每日趋势 |
封面通过 QQ 音乐和网易云音乐并行搜索,精确匹配优先,无精确匹配则取置信度最高。
将鼠标悬停在封面图片上,点击右上角编辑按钮:
手动修正的封面不会被自动匹配覆盖。
进入设置页面:
.env 作为兜底)http://host:port)| 问题 | 解决方法 |
|---|---|
| 授权后无数据 | 检查 LASTFM_API_KEY 和 LASTFM_SHARED_SECRET 是否正确 |
| 封面不显示 | 检查网络能否访问 QQ 音乐 / 网易云 API,或手动修正封面 |
| Telegram 推送失败 | 确认 Bot Token / Chat ID 正确,如有代理检查 PROXY_URL 格式是否为 http://host:port |
| 日志查看 | docker compose logs -f 或查看 logs/app-YYYY-MM-DD.log |
如果需要通过代理访问 Last.fm 或 Telegram,设置 PROXY_URL 环境变量:
PROXY_URL=http://127.0.0.1:7890
docker compose logs -flogs/app-YYYY-MM-DD.log(按天滚动)Content type
Image
Digest
sha256:03583911c…
Size
191.4 MB
Last updated
5 months ago
docker pull yundan21/lastfm-visualize