LYT龙昱汀的个人网站
打开菜单

Project

Bili Music

一个面向 Windows 的 B 站音频桌面播放器,用 Python 把下载、歌单、播放和歌词管理串成一个可用的小工具。

Iterating2026-04 - 2026-05需求整理 / 核心逻辑 / 桌面界面 / 打包尝试
PythonPySide6pygameyt-dlpFFmpeg

Bili Music 起点很简单:我想把 B 站视频里的音频保存下来,做成自己的本地歌单,并且能在一个桌面窗口里播放、切歌、看歌词。

它不是一个复杂产品,更像一次完整的小工具训练:从命令行下载,到核心逻辑封装,再到 Windows 桌面 GUI 和 .exe 打包尝试。

已实现的部分

  • 输入 BV 号后下载音频,并加入本地歌单
  • playlist.json 保存歌曲列表,用 lyrics.json 保存歌词
  • 支持播放、暂停、继续、停止、上一首、下一首
  • 支持快进、后退、进度条跳转和音量调节
  • 保留 CLI 入口,方便调试核心逻辑
  • 桌面端使用 PySide6 做界面,核心逻辑和 UI 分离

结构拆分

这个项目里我比较在意的一点,是没有把所有逻辑都塞进界面文件。

core.py 负责下载、播放、歌单、歌词和路径管理;gui_app.py 负责界面、按钮事件、进度提示和用户反馈。这样以后继续做播放模式、封面、设置页或打包修复时,不需要从一堆界面代码里找核心逻辑。

这次练到的能力

这类工具看起来不大,但实际会遇到很多真实问题:路径在开发环境和打包环境下不同,音频播放需要维护状态,下载失败要给出用户能看懂的提示,界面不能被耗时任务卡住。

所以它对我来说更像一次“把脚本变成软件”的练习:不是只让代码跑一次,而是让它可以被重复使用、被调试、被继续维护。

还没有做完的地方

  • 下载进度和失败反馈还可以更稳定
  • 播放模式可以继续完善,比如随机、单曲循环
  • 歌曲封面、元数据和歌词体验仍然比较粗糙
  • 打包后的体积和依赖管理还有优化空间

这个项目目前最有价值的地方,不是功能多,而是它让我第一次比较完整地走了一遍“需求 -> 核心逻辑 -> 桌面 UI -> 本地数据 -> 打包”的路径。