找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 39|回复: 0

【首发】道理鱼音乐管理更新上线0.1.3稳定版本

[复制链接]

1

主题

10

回帖

146

积分

管理员

积分
146
发表于 2025-10-14 22:49:31 | 显示全部楼层 |阅读模式

简介

分享一下开发的音乐程序,强不强大不知道,功能有些多,如果感觉不错,记得支持下,目前版本稳定,偶尔细节有个bug理解下,后面会修复,值得现体验下,当然有好的建议,我也会悉心接受,感谢的支持!

PS:希望交流是愉快的,为了营造更好的交流环境,请不要把所谓自己的性格和傲娇、情绪的言语,带到这里,影响大家心情。

道理鱼音乐管理平台

自建 NAS 音乐管理与播放系统,提供媒体扫描、元数据补全、**、收藏与队列管理、自动转码等能力,可通过 Docker 或本地环境快速部署。

项目概述

这是一个全栈音乐管理系统,包含后端API服务器和React前端应用。

项目地址

目前仅作为问题建议提交和pc端(完成后我会上传到这个位置)下载使用

https://gitee.com/wangzaifan/daoliyu-music.git

项目结构

  • backend/ - Node.js/Express API服务器(TypeScript)
  • frontend/ - React前端应用(TypeScript + Vite)
  • media/ - 媒体文件存储
  • playlists/ - 播放列表数据

功能亮点

  • 媒体扫描:支持多目录配置,自动解析 ID3 元数据、封面、歌词并写入数据库。
  • 智能播放:Web 前端提供队列、收藏、下一首/上一首、音量与进度控制,支持令牌式音频流与 HLS。
  • 账号系统:区分管理员与普通用户,支持注册开关、资料修改、密码变更与头像上传。
  • 收藏体系:曲目、专辑收藏与歌单管理一应俱全,可直接加入播放器队列。
  • 实时通知:内置 WebSocket 网关,后续可扩展扫描与播放的实时反馈。
  • 转码缓存:集成 FFmpeg 实时转码,支持自动生成指定码率的缓存文件并在后台统计与清理。
  • 插件与元数据:插件清单自动识别目录内 manifest,元数据提供方支持启用、优先级配置与第三方源扩展。

版本更新

  • 增加对redis的支持
  • 优化网格模式下的排版问题(太小的分辨率1080P以下懒得适配了)
  • 增加对当前播放列表内歌曲一键添加歌单
  • 增加一键匹配歌手简介
  • 至于扩展方面增加了几个匹配机制,感觉可以根据后台自行调试选择。
  • 优化界面逻辑
  • 修复右侧播放列表因歌曲名称过长导致UI变形
  • 增加播放列表显示效果
  • 增加快捷收藏按键
  • 增加歌曲、艺人、专辑的简单编辑

演示内容

目前已完成

  • 目录入库
  • 歌单按照目录名入库
  • 标签读取和在线匹配机制(建议先使用 音乐标签 给音乐做匹配,大佬的工具,免费好用)
  • 多用户机制
  • 公开歌单其他用户可见
  • 用户收藏机制
  • 声音指纹技术(待验证)
  • 一键匹配歌手信息

后续工作安排

  • 个人喜好推荐算法
  • 尝试加入有声书和MV的板块
  • PC端(即将完成)
  • 安卓客户,只能最后做适配,毕竟独立开发个人能力有限。

以下是0.1.3版本的docker compose,增加最新版标签latest,后期更新会有提示。

由于之前一直是预览(已全部清除),这个版本开始基本是稳定下来了,可以长期使用。

首页

2e99e742399d79f5e08dc99cb2699ad7.png

专辑列表

e169c2dd34a3364d775172284d045b7b.png

系统设置

83e79ca96f400bc7788b5759716da9ae.png

默认歌单路径(子文件夹为单位,文件夹名为歌单名)

57dc195040e5eeb802221573a6f7dc64.png

还有很多就不一一截图了,体验版本,个人时间精力有限,有些细节还没那么完美,至少够用了,后期的话,可能会对接或者开发pc端和安卓端。

docker-compose

开发初心是让自己用着舒服,看着顺眼的,功能基本满足。

以下是docker-compose.yml的内容,只注意中文注释的地方,其他都不用修改

services:  backend:    image: msmkls/daoliyu-backend:latest    container_name: daoliyu-backend    restart: unless-stopped    environment:      DATABASE_PROVIDER: "sqlite"      DATABASE_URL: "file:/app/data/dev.db"      APP_PORT: 4000      ADMIN_DISPLAY_NAME: "${ADMIN_DISPLAY_NAME}"      ADMIN_EMAIL: "${ADMIN_EMAIL}"      ADMIN_PASSWORD: "${ADMIN_PASSWORD}"      LIBRARY_ROOT: "/data/media"      PLAYLISTS_IMPORT_ROOT: "/data/playlists"      REGISTRATION_OPEN: "true"      PLUGINS_DIR: "/plugins"      ACOUSTID_API_KEY: "${ACOUSTID_API_KEY}"      LASTFM_API_KEY: "${LASTFM_API_KEY}"      LASTFM_API_SECRET: "${LASTFM_API_SECRET}"      SPOTIFY_TOKEN: "${SPOTIFY_TOKEN}"      SPOTIFY_CLIENT_ID: "${SPOTIFY_CLIENT_ID}"      SPOTIFY_CLIENT_SECRET: "${SPOTIFY_CLIENT_SECRET}"      REDIS_URL: "redis://redis:6379/0"      LOG_LEVEL: "debug"      DEBUG: "true"    volumes:      # 下面冒号左侧是本地数据库文件夹,右侧是容器内路径,不要改动容器内路径      - ./backend-data:/app/data      # 下面冒号左侧是本地数据文件夹,右侧是容器内路径,不要改动容器内路径      - ./backend-storage:/app/storage      # 下面冒号左侧是本地音乐文件夹,右侧是容器内路径,不要改动容器内路径      - ./media:/data/media      # 下面冒号左侧是本地播放列表文件夹,右侧是容器内路径,不要改动容器内路径      - ./playlists:/data/playlists      # 下面冒号左侧是本地插件文件夹,右侧是容器内路径,不要改动容器内路径(目前未启用不用动)      - ./plugins:/plugins    healthcheck:      test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]      interval: 30s      timeout: 5s      retries: 5  frontend:    image: msmkls/daoliyu-frontend:latest    container_name: daoliyu-frontend    restart: unless-stopped    depends_on:      - backend    ports:    #  5173是本地访问端口,可以自行修改,8080是容器内端口,不要改动      - "5173:8080"  redis:    image: redis:7-alpine    container_name: daoliyu-redis    restart: unless-stopped    command: ["redis-server", "--appendonly", "yes"]    volumes:      - redis_data:/datavolumes:  redis_data:

.env

为了安全整洁在docker-compose.yml 同目录下创建文件存储账号等敏感信息的 .env 文件

# 管理员用户显示名称ADMIN_DISPLAY_NAME="Administrator"# 管理员用户邮箱ADMIN_EMAIL="admin@example.com"# 管理员用户密码 (请务必修改为强密码)ADMIN_PASSWORD="ChangeMe123"# AcoustID API 密钥,用于音乐识别ACOUSTID_API_KEY=""# Last.fm API 密钥,用于获取音乐元数据LASTFM_API_KEY=""# Last.fm API 密钥的秘密LASTFM_API_SECRET=""# Spotify Token,用于 Spotify 集成 (如果使用)SPOTIFY_TOKEN=""# Spotify 客户端 IDSPOTIFY_CLIENT_ID=""# Spotify 客户端秘密SPOTIFY_CLIENT_SECRET=""

感谢

最后感谢大家的支持,以及几位打赏的网友,感谢支持!

由于支持多用户登录和便于部署,供nas实用为主,严禁未经本人书面允许,从事商业行为。

问题解答

**问:**后端频繁重启,需要重新删除数据重新扫描的问题

答: 随着功能不断的添加,导致开启后端容器时,读取数据库文件的进程并发过多,处于SQLite数据库的限制,SQLite不支持多线程并发读写,所以下一步采取更换更好性能的数据库,届时也会带来解决扫描入库满和开机重启的问题,一并解决掉。

**问:**版本更新了什么

答: 目前没精力去做详细解答(目前重心在pc端,基本完成,自查细节),后期正式版本发布后再去完善

**问:**为什么我要删除重建又要重新扫

**答:**十分抱歉,现在版本只属于功能相对稳定的版本,UI和数据还在修复完善阶段,只要没放出1.0版本,都属于测试阶段,发不出来也是让大家众测,有好的建议我会采纳,相对的,对于个人喜欢来让我改变道理鱼音乐的定位,我也不会去做的。

最后,感谢兄弟们(以及B站的兄弟们)的大力支持和建议提交,后期我会更用心的完善每个功能模块。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站由纳斯五零(NAS50.CN),版权所有,保留部分权利。豫ICP备2023035803号-1

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2025-10-24 06:20 , Processed in 0.102084 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表