feeluown / FeelUOwn

trying to be a robust, user-friendly and hackable music player
http://feeluown.readthedocs.io
GNU General Public License v3.0
3.54k stars 597 forks source link

主页支持自定义需要展示哪些组件 #828

Open cosven opened 6 months ago

cosven commented 6 months ago

简介与背景

FeelUOwn 目前支持许多资源提供方,每个资源提供方其实也有自己的”主页内容“。FeelUOwn 的主页该展示什么内容呢?

有几种思路

  1. 用户当前选中哪个资源提供方,就展示相应资源提供方的主页。
    • 这种办法的不足是不能充分利用各个资源提供方的功能。因为有的资源提供方只实现了 A 功能(比如日推),有的资源提供方只实现了 B 功能(比如排行榜)。
  2. 主页把每个资源提供方的内容都展示出来。
    • 这种办法的不足是内容会比较杂。
  3. 让用户自定义主页可以展示什么。

个人觉得方案 3 是个不错的选项。

方案概述

在 feeluown 中定义好一个组件的接口,并且在 feeluown 中预实现好若干种组件(比如排行榜组件、播放列表组件、日推组件),用户可以在 .fuorc 中指定主页应该展示哪几种组件。

举个例子,用户可以在 .fuorc 中这样配置

homepage = [
    '推荐歌单',
    [
         '私人FM按钮',
         '每日推荐按钮',
    ]
    'KTV排行榜TOP10',
]

每个 id 都对应一个预实现好的组件,比如 '推荐歌单' 对应一个特定组件。

为了更极致的拓展性,用户也可以在 .fuorc 中自己实现组件,FeelUOwn 可以定义一个类似的接口

class Widget:
    async def render(self):
        ...