目录
目录README.md

Bilibili Music Assistant

一个基于 Go 语言开发的 Bilibili 音乐下载和播放工具,支持从 B 站搜索、下载音频并本地播放管理。

效果演示

音乐搜索

alt text

乐曲库

alt text

功能特性

  • 🔍 视频搜索: 支持通过关键词搜索 Bilibili 视频
  • ⬇️ 音频下载: 使用 yt-dlp 下载视频音频并自动转换为 MP3 格式
  • 🎵 本地播放: 内置音乐播放器,支持多种播放模式
  • 📂 播放列表管理: 创建和管理自定义播放列表
  • 🎛️ 播放控制: 支持暂停、跳转、进度控制等功能
  • 💾 数据持久化: 使用 SQLite 数据库存储歌曲和播放列表信息
  • 🎨 图形界面: 基于 Fyne 框架的现代化 GUI 界面

系统要求

  • Go 1.19 或更高版本
  • 支持的操作系统:Windows、Linux
  • 网络连接(用于搜索和下载)

安装和使用

开发环境设置

  1. 安装依赖

    make tidy
  2. 运行开发版本

    make run

构建发布版本

# 构建 Windows 版本
make build

# 手动构建其他平台
go build -o bilimusic .

项目结构

├── main.go                    # 主程序入口
├── config/                    # 配置文件
│   └── config.go
├── database/                  # 数据库相关
│   ├── dao_init.go           # 数据库初始化
│   ├── dao/                  # 数据访问层
│   └── models/               # 数据模型
├── services/                  # 核心服务
│   ├── audio_processor/      # 音频处理服务
│   ├── bilibili_api/         # Bilibili API 服务
│   └── player/               # 音频播放服务
├── ui/                       # 用户界面
│   └── ui.go
├── utils/                    # 工具函数
│   └── utils.go
├── logger/                   # 日志系统
├── data/                     # 数据目录
│   ├── database/             # 数据库文件
│   ├── musics/               # 下载的音乐文件
│   ├── logs/                 # 日志文件
│   └── font/                 # 字体文件
└── bundled_binaries/         # 打包的二进制文件
    ├── linux/                # Linux 平台工具
    └── windows/              # Windows 平台工具

核心功能说明

1. 音频下载

  • 集成 yt-dlp 进行视频音频提取
  • 自动转换为 MP3 格式(使用 FFmpeg)
  • 支持下载进度显示和状态更新

2. 播放控制

支持的播放模式:

  • 顺序播放 (Sequential)
  • 单曲循环 (Repeat One)
  • 列表循环 (Repeat All)
  • 随机播放 (Shuffle)

3. 数据库设计

使用 GORM 和 SQLite,主要数据表:

  • songs: 歌曲信息表
  • playlists: 播放列表表
  • playlist_songs: 播放列表与歌曲关联表

4. API 服务

  • Bilibili API: 实现 WBI 签名认证,支持视频搜索(API 实现参考了 bilibili-API-collect 项目收集的接口文档)
  • 音频处理: 处理下载、转换和文件管理
  • 播放器服务: 基于 beep 库的音频播放

开发说明

依赖库

主要 Go 依赖:

代码风格

项目使用统一的代码格式化:

make fmt  # 格式化代码

环境变量

  • GO_ENV=development - 开发模式,启用详细日志

配置说明

项目配置通过 config/config.go 管理:

  • 数据库路径配置
  • 日志文件路径
  • 下载目录设置
  • 捆绑二进制文件路径

日志系统

使用结构化日志,支持:

  • 控制台彩色输出(开发模式)
  • 文件 JSON 格式输出
  • 日志轮转和级别控制
  • 通过 logger 包统一管理

注意事项

  1. 字体支持: 项目包含中文字体文件以确保界面正常显示中文
  2. 网络访问: 需要能够访问 Bilibili API 和相关服务
  3. 文件权限: 确保有足够权限创建和管理下载目录
  4. 依赖工具: yt-dlp 和 ffmpeg 已打包在 bundled_binaries/ 目录中
关于
108.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号