程序架构¶
FeelUOwn 中有一个核心对象 app
, 它是我们进行几乎一切操作的入口。
在初始化 app 时,我们会实例化一些类,比如 Library/LiveLyric, 这些实例工作不依赖
app 对象,我们把它们放在 feeluown 包中。另外,我们也会创建很多 Manager 实例,
比如 PluginManager/HotkeyManager 等,它们往往都是依赖 app 的,
我们目前将它们各自作为一个模块放在 feeluown 包中。
主要模块¶
稳定 | 名字 | 模块 |
---|---|---|
🔴 | 音乐资源模型 | feeluown.models |
🔴 | 音乐库 | feeluown.library.Library |
🔴 | 播放器 | feeluown.player |
🔴 | fuo 协议 | feeluown.protocol.FuoProcotol |
🔴 | 版本 | feeluown.version.VersionManager |
🔴 | 小提示管理 | feeluown.tips.TipsManager |
🔴 | 本地收藏管理 | feeluown.collection.CollectionManager |
🔴 | 浏览历史记录 | feeluown.browser |
🔴 | 快捷键管理 | feeluown.hotkey.HotkeyManager |
🔴 | 图片管理 | feeluown.image |
🔴 | 资源提供方 UI | feeluown.gui.uimodels.ProviderUiManager |
🔴 | 我的音乐 UI | feeluown.gui.uimodels.MyMusicUiManager |
🔴 | 歌单列表 UI | feeluown.gui.uimodels.playlist |
界面¶
FeelUOwn 启动时有两种模式可以选择,CLI 模式和 GUI 模式,大部分 Manager 可以在两种模式下工作,也有一部分 Manager只在 GUI 模式下工作,这些 Manager 往往和 UI 操作相关。
FeelUOwn UI 部分的核心对象是 app.ui
, 我们下面就从界面开始,
来详细了解 FeelUOwn 程序的整体架构。
整个 GUI 区域划分比较简单和规整,下图大致的描述了 GUI 的几个主要组成部分。
图中文字部分对应的都是代码中的变量,它们也比较好的反映了对应区域的功能。 一开始对项目可能不是特别熟悉,大家可以对照这个图来看代码。

从区域划分来看,程序主界面主要分为四大块(蓝色部分):
magicbox
: 用户搜索、显示用户操作通知、执行 fuo 命令、 执行 Python 代码相关操作都在此组件中完成left_panel
: 显示音乐库、用户操作历史记录、用户歌单列表right_panel
: 目前显示歌单列表详情、歌手详情等。 之后可能会支持更多其实形式的展示:比如批量展示专辑。pc_panel
: 与播放器相关的控制部分,主要是播放/暂停、进度条、 音量调节、显示当前播放列表、修改播放模式等操作按钮。
各大块可以拆分成小块(红色部分):
- left_panel 区域
provider_view
组件展示应用支持的音乐提供方histories_view
组件展示用户浏览记录playlists_view
组件展示用户歌单列表
- right_panel 区域
songs_table
批量展示歌曲,比如:歌单中的歌曲、搜索结果的歌曲部分等,table_overview
是对 songs_table 的概览,由封面图和描述组成。