Skip to content

ShanEior/FishMusic

Repository files navigation

MusicWave

🎵 MusicWave

一款精致的桌面音乐播放器,支持 Bilibili 音频提取、音频编辑分割与本地歌单管理。
基于 Electron + React + TypeScript 构建,无边框窗口设计。


✨ 功能特性

🎧 音乐播放

  • 本地音频播放 — 支持 MP3 等常见格式
  • 三种播放模式 — 顺序播放 / 随机播放 / 单曲循环
  • 播放队列管理 — 随时查看和调整播放列表
  • 迷你卡片模式 — 始终置顶的小窗口,边听边做其他事
  • 自定义试听起点 — 编辑音频时可调整预览起始位置

📥 Bilibili 音频提取

  • BV 号提取 — 粘贴 B站视频链接或 BV 号,一键提取高清音频
  • 自动转码 — 自动将 m4s 流合并转为 MP3
  • 封面下载 — 自动下载视频封面作为歌曲封面
  • 进度可视 — 实时显示下载和转码进度

✂️ 音频编辑器

  • 波形可视化 — 点击"编辑"进入音频编辑器,直观看到音频波形*
  • 分割片段 — 在任意位置添加分割点,将长音频切成多段
  • 片段命名 — 每个分割片段可自定义名称
  • 分段试听 — 每个片段支持独立播放试听
  • 一键导出 — 导出全部片段到音频库,自动删除原始音频

📚 歌单管理

  • 创建歌单 — 自由创建和管理自定义歌单
  • 拖拽排序 — 歌单内歌曲支持自由排序*
  • 搜索筛选 — 快速搜索音频库中的歌曲
  • 自定义封面 — 支持为歌曲更换本地图片封面

🎨 界面设计

  • 无边框窗口 — 自定义标题栏,沉浸式体验
  • 侧边导航 — 首页 / 音频库 / 歌单 / 设置,一目了然
  • 关闭确认 — 优雅的关闭弹窗,支持"下次不提醒"

📸 预览

截图待补充。运行 npm run dev 即可体验。


🚀 快速开始

环境要求

  • Node.js >= 18
  • npm >= 9
  • Windows 10/11(当前仅支持 Windows)

安装与运行

# 克隆项目
git clone https://github.com/your-username/musicwave.git
cd musicwave

# 安装依赖
npm install

# 开发模式运行
npm run dev

# 构建生产版本
npm run build

# 打包为便携版 (dist-portable/win-unpacked/)
npm run dist

🛠 技术栈

层级 技术
桌面框架 Electron 33
前端框架 React 18 + TypeScript
构建工具 electron-vite 2
UI 组件 Ant Design 5
状态管理 Zustand 5
路由 React Router 6
音频处理 fluent-ffmpeg + ffmpeg
B站 API WBI 签名 + Electron net 模块

📁 项目结构

MusicWave/
├── src/
│   ├── main/                 # Electron 主进程
│   │   ├── index.ts          # 窗口创建、IPC 注册
│   │   ├── types.ts          # 类型定义
│   │   ├── ipc/              # IPC 处理器
│   │   │   ├── bilibili.ts   # B站音频提取
│   │   │   └── mini-player.ts # 迷你播放器窗口
│   │   ├── services/         # 核心服务
│   │   │   ├── bilibili.ts   # B站 API 封装
│   │   │   ├── downloader.ts # 文件下载
│   │   │   ├── ffmpeg.ts     # 音频转码/裁剪/导出
│   │   │   └── wbi.ts        # WBI 签名
│   │   └── store/            # 主进程持久化存储
│   ├── preload/              # 预加载脚本
│   └── renderer/             # React 渲染进程
│       ├── components/       # 通用组件
│       │   ├── Layout/       # 主布局(无边栏+导航)
│       │   ├── PlayerBar/    # 底部播放控制栏
│       │   ├── AudioEditor/  # 音频编辑器
│       │   └── MiniPlayer/   # 迷你播放器
│       ├── pages/            # 页面
│       │   ├── Home/         # 首页(B站提取)
│       │   ├── Library/      # 音频库
│       │   ├── Playlists/    # 歌单列表
│       │   ├── PlaylistDetail/ # 歌单详情
│       │   └── Settings/     # 设置
│       ├── stores/           # Zustand 状态
│       ├── hooks/            # 自定义 Hooks
│       └── types/            # 类型定义
├── resources/                # 打包资源
├── electron-builder.yml      # 打包配置
└── package.json

⚠️ 免责声明

  1. 仅供学习研究 — 本项目仅用于学习 Electron + React 桌面开发技术,禁止用于任何商业用途。

  2. 版权尊重 — 使用本工具从 Bilibili 等平台下载的音频内容,其版权归属原作者或平台所有。请尊重创作者的知识产权,不要将下载内容用于商业目的或二次传播

  3. 用户责任 — 使用者应对自己的行为负责。开发者不承担因使用本工具而产生的任何法律后果。请在下载后 24 小时内删除,或仅用于对已购买/已获得授权的作品进行格式转换。

  4. Bilibili 服务条款 — 使用本工具前,请确保你已知悉并遵守 Bilibili 的用户协议和相关政策。


📄 许可证

本项目代码采用 MIT License 授权。详见 LICENSE

本项目以子进程方式调用 ffmpeg(GPL-3.0-or-later)。ffmpeg 作为独立程序运行,不属于本项目的一部分,其源代码和许可信息请参见 THIRDPARTY.mdhttps://ffmpeg.org/。


🤝 贡献

欢迎提交 Issue 和 Pull Request!


🙏 致谢

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors