Playlist Manager-酷狗歌单管理器(其实就是备份和导出歌单的功能)
Playlist Manager(酷狗歌单管理器)
一个独立的子项目,用于:
- 扫码登录酷狗账号
- 获取并展示个人歌单列表
- 查看歌单歌曲、导出 JSON/CSV/Excel
- 将歌单备份到 SQLite 数据库,并支持对比当前歌单与历史备份差异
前端基于 Vue 3 + Vite,后端是一个独立的 Express 服务(Node ESM),与主项目的 API 解耦。
体验地址
项目源码地址
参考加密和效果
注意
- 服务器是国外的,接口比较慢,感兴趣可以自己下载到本地来
效果浏览






目录结构概览
src/views/:登录页、歌单列表、歌单详情、备份管理、对比页面utils/:请求封装、导出工具、备份 API 封装等
server/index.js:Express 入口routes/kugou.js:酷狗相关接口(登录二维码、用户歌单、歌单歌曲)backup.js:备份相关接口(创建/查询/删除/统计)
module/:酷狗 API 模块(二维码登录、歌单列表、歌单歌曲)util/:请求签名、加密、配置等工具(独立于主项目)db.js:SQLite 数据库封装
index.html:前端入口模板vite.config.mjs:Vite 配置.env.*:前端环境变量package.json:脚本与依赖
环境要求
- Node.js:建议使用 Volta 中指定的版本(例如
20.18.1),或 >= 18 - npm 或 pnpm(项目当前包含
pnpm-lock.yaml,你可以选择其中一种包管理工具)
安装依赖(在 playlist-manager 目录下):
1 | # 使用 npm |
开发环境启动
在 playlist-manager 目录下:
一键启动前端 + 后端
1 | npm run dev |
该命令会同时启动:
- 后端 Express 服务:
node server/index.js- 默认端口:
6522(可通过server/.env中的PORT修改,例如PORT=16522) - 暴露的主要路由:
- 酷狗代理:
/login/qr/*、/user/playlist、/playlist/track/all - 备份服务:
/api/backup/* - 健康检查:
/api/health
- 酷狗代理:
- 默认端口:
- 前端开发服务器(Vite):默认
http://localhost:5173
前端通过环境变量 VITE_API_BASE_URL 访问后端(见下文)。
单独启动后端
1 | npm run server |
- 默认监听
http://localhost:6522(或http://localhost:${PORT},当在环境变量或server/.env中设置了PORT时) - 推荐在
server/.env中设置端口,例如:PORT=16522;也可以在启动前通过环境变量PORT覆盖,或直接修改server/index.js中的端口逻辑。
单独启动前端
1 | npm run client |
默认访问地址:http://localhost:5173
前端与后端的连接方式(环境变量)
前端通过一个统一的环境变量 VITE_API_BASE_URL 来访问 Express 后端。
在 src/utils/request.js 中:
1 | export const API_BASE_URL = |
- 所有酷狗相关接口(登录 / 歌单 / 歌曲)都以
API_BASE_URL为前缀 - 备份相关接口也基于
API_BASE_URL:BACKUP_API_BASE =${API_BASE_URL}/api/backup``
开发环境配置
在 playlist-manager/.env.development 中:
1 | VITE_API_BASE_URL=http://localhost:6522 |
确保后端 Express 服务监听在 6522 端口即可。
生产环境配置
在 playlist-manager/.env.production 中,将 VITE_API_BASE_URL 设置为部署后端的访问地址,例如:
1 | VITE_API_BASE_URL=https://kgmusic-server.123916.xyz |
注意:请根据实际情况替换为你自己的域名,保持与实际部署的 Express 服务地址一致。
构建与部署前端
构建前端静态资源
1 | npm run build |
构建产物会输出到 dist/ 目录,你可以选择:
- 使用任意静态文件服务(Nginx、静态托管平台等)直接部署
dist/内容 - 或集成到更大的主应用中
典型部署方案示例
部署 Express 后端
- 在服务器上拉取代码
- 安装依赖:
npm install - (可选)在
server/.env中配置PORT、FRONTEND_URL等环境变量 - 确保 SQLite 数据文件(如果有)路径正确、目录可写
- 使用进程管理工具启动:
1
2
3node server/index.js
# 或
pm2 start server/index.js --name playlist-manager-server - 确保外部可以访问到该服务,例如通过
https://kgmusic-server.123916.xyz或你自己的域名反向代理到本服务
部署前端静态文件
- 在本地或 CI 中执行:
npm run build - 将
dist/目录内容上传到静态资源服务器(Nginx、CDN 或前端托管平台) - 确保构建前已经正确设置
VITE_API_BASE_URL(指向线上 Express 服务地址)
- 在本地或 CI 中执行:
反向代理示例(Nginx 思路)
静态资源:
1
2
3
4location / {
root /path/to/playlist-manager/dist;
try_files $uri /index.html;
}API 反向代理:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 注意:以下示例假设后端监听在 6522 端口,如果在 server/.env 中修改了 PORT,请同步调整这里的端口
location /api/ {
proxy_pass http://127.0.0.1:6522/api/;
}
location /login/qr/ {
proxy_pass http://127.0.0.1:6522/login/qr/;
}
location /user/playlist {
proxy_pass http://127.0.0.1:6522/user/playlist;
}
location /playlist/track/all {
proxy_pass http://127.0.0.1:6522/playlist/track/all;
}
以上仅为示例,请根据实际域名与部署环境调整。
开发调试建议
- 如果歌单列表或歌曲接口返回
status: 0或 HTTP 502,可以检查:- 登录是否仍然有效(二维码登录重新扫码)
VITE_API_BASE_URL是否正确指向当前后端
- 如果备份相关接口报错,优先检查:
server/db.js指定的 SQLite 文件路径是否存在、目录是否可写server/routes/backup.js中的日志输出(Node 控制台)
如需扩展更多酷狗接口,可以在 server/module/ 中按照主项目的模式新增模块,再通过 routes/kugou.js 暴露路由即可。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梦洁小站-属于你我的小天地!
评论







