ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

jellyfin-plugin-douban开发者指南:环境搭建、单元测试与贡献PR的完整教程

jellyfin-plugin-douban开发者指南:环境搭建、单元测试与贡献PR的完整教程 jellyfin-plugin-douban开发者指南环境搭建、单元测试与贡献PR的完整教程【免费下载链接】jellyfin-plugin-doubanDouban metadata provider for Jellyfin项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-doubanjellyfin-plugin-douban是一个为 Jellyfin 打造的豆瓣元数据提取插件能够自动为你的影视库抓取豆瓣评分、简介、演员等信息。这份 jellyfin-plugin-douban开发者指南将手把手带你完成开发环境搭建、跑通单元测试并走完从提交 Issue 到贡献 PR 的全流程让你从使用者进阶为贡献者。jellyfin-plugin-douban是什么先了解你要开发的插件在开始写代码之前先花 3 分钟搞清楚这个项目到底做了什么。jellyfin-plugin-douban 的核心能力包括电影与剧集元数据刮削自动抓取豆瓣的评分、简介、导演、演员、首映日期等信息️海报与背景图获取在豆瓣海报中寻找合适的图片资源⏱️延迟请求机制避免请求过于频繁被豆瓣官方封禁LRU 缓存内置最近最少使用缓存减少重复请求整个插件由三部分协作完成负责注册插件入口的 Plugin.cs、封装豆瓣 API 调用的Clients目录包含WechatClient和FrodoAndroidClient以及负责数据转换的Providers目录。所有请求都收敛在抽象基类 BaseProvider.cs 中它定义了统一的搜索、元数据转换和人物信息处理逻辑。开发环境搭建从零准备开发环境安装 .NET SDK第一步必做插件基于.NET 6.0开发目标框架定义在 Jellyfin.Plugin.Douban.csproj 中。请先安装.NET 6 SDK开发环境建议同时保留更高版本兼容性更好。安装完成后在终端执行dotnet --version验证是否成功。克隆仓库获取源码在本地准备好目录后执行以下命令克隆仓库git clone https://gitcode.com/gh_mirrors/je/jellyfin-plugin-douban克隆完成后你会看到解决方案文件jellyfin-plugin-douban.sln它同时包含两个工程主插件工程Jellyfin.Plugin.Douban和测试工程Jellyfin.Plugin.Douban.Tests。快速认识项目结构Jellyfin.Plugin.Douban/ ├── Clients/ # 豆瓣 API 客户端Frodo 接口与微信接口 ├── Configuration/ # 插件配置与配置页面 ├── Providers/ # 元数据提供器与图片提供器 ├── ExternalID.cs # 豆瓣 ID 映射 ├── LRUCache.cs # 最近最少使用缓存 └── Plugin.cs # 插件入口单元测试验证环境是否就绪的关键一步环境搭好后最重要的就是跑通单元测试这能快速确认你的开发环境没有问题。一键运行全部测试在仓库根目录执行dotnet test测试工程使用 xUnit 框架测试文件包括 FrodoClientTest.cs、MovieProviderTest.cs、TvProviderTest.cs、LRUCacheTest.cs 等。测试里藏着项目核心逻辑FrodoClientTest.cs 是了解豆瓣 API 行为的最佳教材。例如测试用GetSubject(1291561, DoubanType.movie, ...)验证《千与千寻》的数据用GetSubject(3016187, DoubanType.tv, ...)验证《权力的游戏 第一季》的剧集数据同时还覆盖了类型不匹配时抛出异常等边界情况。测试工具类 ServiceUtils.cs 负责构建依赖注入容器你写新测试时可以直接复用它来获取客户端实例。常见的开发任务改代码前先看这些文件修改元数据抓取逻辑电影与剧集的元数据抓取分别在 MovieProvider.cs 和 TVProvider.cs 中。它们都继承自BaseProvider通用的数据转换逻辑如评分、年份、演员列表的填充都在基类里。上图是启用豆瓣元数据提供器的配置界面。需要注意的是为了让插件在 Jellyfin 中生效除了在元数据下载器中勾选 Douban Provider 并调整优先级外还需要在对应媒体库的元数据设置中应用该提供器。修改图片获取逻辑图片相关逻辑在 ImageProvider.cs 中它实现了IRemoteImageProvider接口负责获取海报Primary和背景图Backdrop。上图展示了图片提供器的启用位置。有一点值得注意豆瓣图片提供器只有在开启 Jellyfin 的高级设置后才会显示如果你在配置界面找不到这个选项先去检查高级设置是否打开。新增一个客户端实现如果你想为豆瓣增加新的接口客户端比如官方 API可以继承或模仿 IDoubanClient.cs 定义接口然后参照现有客户端实现。注意BaseProvider构造时通过IHttpClientFactory注入客户端遵循这个模式即可。贡献 PR 的完整流程从新手到贡献者第一步先看 Issue再动代码提交 PR 前先在仓库的 Issues 中搜索是否已有相关讨论。如果是新功能建议先创建 Issue 说明你的想法维护者确认方向后再动手避免白干一场。第二步创建分支并提交git checkout -b feature/your-feature-name开发过程中请遵循以下约定✅ 代码风格与现有文件保持一致参考BaseProvider的命名习惯✅ 为新功能补充单元测试并保证dotnet test全部通过✅ 更新 CHANGELOG.md 记录变更第三步提交 PR 与评审推送分支后在 GitCode 上发起 Pull Request在描述中说明改动目的、测试结果以及关联的 Issue 编号。评审意见可能要求修改代码耐心迭代即可。保持 PR 聚焦单一功能、提交信息清晰能大大提高合并概率。常见问题与排查技巧测试报网络错误部分测试依赖豆瓣接口如FrodoClientTest网络受限时可能失败这是正常现象可先检查网络或跳过网络相关用例插件加载失败确认 Jellyfin 版本为 10.8.x插件的 Jellyfin.Controller 依赖版本写死在 Jellyfin.Plugin.Douban.csproj 中请求被豆瓣限流插件内置了延迟请求机制调试时注意请求频率别把自己的 IP 封了总结通过这份 jellyfin-plugin-douban开发者指南你已经掌握了环境搭建、单元测试运行、源码结构和 PR 贡献的全流程。记住先在本地跑通dotnet test再从简单 Issue 入手你的第一个 PR 很快就能被合并【免费下载链接】jellyfin-plugin-doubanDouban metadata provider for Jellyfin项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-douban创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表