如何为MLB-LED-Scoreboard开发插件bullpen API三件套与实战案例【免费下载链接】mlb-led-scoreboardAn LED scoreboard for Major League Baseball :baseball:项目地址: https://gitcode.com/gh_mirrors/ml/mlb-led-scoreboard如果你想在 MLB-LED-Scoreboard 这块 LED 记分牌上显示大联盟比赛之外的内容新闻、天气、战绩表甚至地铁到站信息只需实现 bullpen 插件 API 的三件套——配置类、数据类、渲染器。本指南带你用最少的代码完成一个可用的插件开发。认识 bullpen记分牌插件框架MLB-LED-Scoreboard 从 9 版本开始支持插件机制。bullpen是项目内置的插件开发框架API 位于 bullpen/src/bullpen/它把一块屏幕抽象成三个职责清晰的组件整个接口都带有完整的类型提示IDE 会自动补全对新手非常友好。三个类分别负责类职责定义文件Config读取并预处理用户的插件配置只构建一次bullpen/src/bullpen/api/config.pyData存储数据并实现update()刷新逻辑bullpen/src/bullpen/api/data.pyRenderer逐帧把数据绘制到 LED 画布上bullpen/src/bullpen/api/renderer.py第一步编写 Config 配置类Config构造时接收一个MLBConfig对象其中plugin_config字典来自用户config.json里plugins.你的插件名的键值。建议在这里完成所有校验和预处理——它只会被构造一次之后会被反复访问。官方示例里 Config 只有一行核心代码从plugin_config中取出step并设置默认值 1可参考 bullpen/example-plugin/src/mlb_led_scoreboard_example_plugin/init.py。第二步编写 Data 数据类Data构造时接收你的 Config 实例唯一必须实现的方法是update()它返回一个UpdateStatus枚举成功、失败、推迟三种状态。⚠️最重要的新手陷阱update()每秒会被调用多次如果你的数据来自网络请求务必像内置的 news 和 standings 插件一样加一个距上次刷新是否足够长时间的判断。例如 standings 插件就把刷新间隔硬编码为 15 分钟见 standings/src/mlb_led_scoreboard_standings/standings.py 中的STANDINGS_UPDATE_RATE。当update()返回失败时记分牌会显示红色感叹号提醒用户网络出了问题——这个提示机制是框架免费提供的。第三步编写 Renderer 渲染类渲染器是最花功夫的部分构造时接收 Config、Layout布局/字体信息和Color配色信息三个对象。它需要实现render()绘制单帧画面会连续被多次调用千万不要在里面写自己的渲染循环。它依次接收 Data 对象、Canvas 画布、graphics 绘图模块、当前滚动文本位置如果用了滚动文本需返回新的滚动位置wait_time()两次render()调用的间隔秒数有滚动文本时建议返回用户配置的scrolling_speed否则 1 秒左右即可可选的两个方法can_render(data)返回False时本轮轮播直接跳过你的插件适合没有数据就不显示的场景reset()记分牌轮播离开你的屏幕时调用用来清理内部状态绘图时直接用graphics.DrawText/DrawLine/DrawCircle等方法操作 Canvas完整示例见 news/src/mlb_led_scoreboard_news/renderer.py——新闻插件同时展示了时钟、天气图标和滚动标题的绘制方式。注册插件通过 entry point 接入类写好了还需要告诉记分牌怎么找到你。定义一个load()函数返回三个类再在pyproject.toml中注册到bullpen.mlbled.plugin入口点[project.entry-points.bullpen.mlbled.plugin] example mlb_led_scoreboard_example_plugin:loaddef load() - api.PLUGIN_DEFINITION: return Config, Data, Renderer完整注册语法直接抄 bullpen/example-plugin/pyproject.toml 即可。实战案例向内置插件学经验项目自带的news和standings屏幕本身就是用 bullpen API 写的插件是最佳的参考实现news 插件news/src/mlb_led_scoreboard_news/展示了网络请求限速、15x15 天气图标绘制、scrolling_text滚动文本的完整用法standings 插件standings/src/mlb_led_scoreboard_standings/展示了如何轮播多个大区的战绩表以及如何调用 MLB StatsAPI 获取数据开发前建议先pip install这两个包阅读源码它们比任何教程都直观。善用 bullpen 内置工具写插件前别重复造轮子框架自带两个高频助手日志bullpen/src/bullpen/logging.py 中的LOGGER会根据用户的debug设置决定是否输出详细信息滚动文本bullpen/src/bullpen/util.py 中的scrolling_text专门处理超出屏幕宽度的长文本还有center_text_position辅助居中快速上手检查清单✅ 克隆项目git clone https://gitcode.com/gh_mirrors/ml/mlb-led-scoreboard✅ 通读 bullpen/README.md官方 API 文档很短✅ 复制 bullpen/example-plugin/ 作为插件骨架✅ 实现 Config、Data、Renderer 三个类update()中做好限速✅ 在pyproject.toml注册bullpen.mlbled.plugin入口点✅ 提醒用户在config.json的screens轮播中加入你的屏幕并在plugins键下提供配置完成这些你的自定义屏幕就会出现在记分牌的轮播列表里。祝开发顺利大联盟休赛期也不再无聊 ⚾【免费下载链接】mlb-led-scoreboardAn LED scoreboard for Major League Baseball :baseball:项目地址: https://gitcode.com/gh_mirrors/ml/mlb-led-scoreboard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考