如何通过3个关键技术点实现Jellyfin对中文番剧的智能管理?
【免费下载链接】jellyfin-plugin-bangumibgm.tv plugin for jellyfin项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-bangumi
Jellyfin-plugin-bangumi是一款专为Jellyfin媒体服务器设计的元数据插件,通过深度集成Bangumi.tv数据源,解决了中文动漫内容在Jellyfin平台上的元数据获取难题。该项目实现了从文件名智能识别到播放状态同步的全流程自动化,为中文动漫爱好者提供了专业级的媒体库管理方案。
🔍 技术架构解析:多层级元数据聚合机制
Jellyfin-plugin-bangumi采用模块化设计,通过三个核心组件协同工作,构建了完整的番剧元数据管理生态:
数据源集成层
插件通过REST API与Bangumi.tv服务端进行通信,支持两种数据获取模式:实时API查询和本地归档数据缓存。当请求超时或API不可用时,系统自动切换到归档数据模式,确保元数据获取的稳定性。
元数据解析引擎
内置三种剧集解析器,适应不同的文件命名规范:
- 基础解析器:适用于标准命名的番剧文件
- AnitomySharp解析器:基于Anitomy库,支持复杂日式命名规则
- 种子解析器:专门处理BT下载文件的元数据提取
配置管理系统
插件提供细粒度的配置选项,包括:
- 翻译偏好设置(中文/日文优先)
- 正则表达式过滤规则
- 网络请求超时控制
- 归档数据使用策略
插件提供丰富的配置选项,支持正则表达式过滤和多种解析器选择
⚙️ 实施路径:从源码编译到生产部署
环境准备与源码获取
项目基于.NET平台开发,需要.NET 6.0或更高版本的SDK。通过以下命令获取最新源码:
git clone https://gitcode.com/gh_mirrors/je/jellyfin-plugin-bangumi cd jellyfin-plugin-bangumi编译与打包
使用.NET CLI工具进行编译,支持Release和Debug两种配置模式:
dotnet build --configuration Release dotnet publish --configuration Release --output ./dist编译完成后,在dist目录中会生成以下关键文件:
Jellyfin.Plugin.Bangumi.dll- 插件主程序集Jellyfin.Plugin.Bangumi.pdb- 调试符号文件- 依赖的第三方库文件
安装与配置
将编译输出的文件复制到Jellyfin插件目录:
- Linux/macOS:
/var/lib/jellyfin/plugins/Bangumi/ - Windows:
%ProgramData%\Jellyfin\Plugins\Bangumi\
重启Jellyfin服务后,在管理后台的插件页面中启用Bangumi插件,并进行必要的配置调整。
📊 核心功能实现原理
文件名智能识别系统
插件通过多层解析策略实现文件名到番剧ID的精确匹配:
- 本地配置优先:检查媒体库中已配置的Bangumi ID
- 目录结构分析:对多季度文件夹进行递归搜索
- AnitomySharp解析:应用日式命名规则提取关键信息
- API搜索匹配:向Bangumi.tv发送搜索请求获取最佳结果
元数据同步机制
插件实现了双向数据同步功能:
| 同步方向 | 触发条件 | 数据内容 |
|---|---|---|
| Bangumi→Jellyfin | 媒体库扫描 | 番剧信息、剧集列表、封面图片 |
| Jellyfin→Bangumi | 播放状态变更 | 观看进度、评分、收藏状态 |
缓存与性能优化
为提高响应速度和降低API调用频率,插件实现了多级缓存策略:
- 内存缓存:短期存储频繁访问的数据
- 归档数据:长期存储完整的番剧元数据
- 本地图片缓存:减少重复下载网络资源
✅ 关键配置参数详解
翻译偏好设置
public TranslationPreferenceType TranslationPreference { get; set; } = TranslationPreferenceType.Chinese; public TranslationPreferenceType PersonTranslationPreference { get; set; } = TranslationPreferenceType.Original;TranslationPreference:控制番剧标题的翻译偏好,默认为中文优先PersonTranslationPreference:控制人物信息的翻译偏好,默认为原名优先
网络请求配置
public int RequestTimeout { get; set; } = 5000; public string BaseServerUrl { get; set; } = "https://api.bgm.tv"; public bool IgnoreSslErrors { get; set; } = false;RequestTimeout:API请求超时时间(毫秒)BaseServerUrl:Bangumi API服务器地址IgnoreSslErrors:是否忽略SSL证书错误
播放状态报告控制
public bool ReportPlaybackStatusToBangumi { get; set; } = true; public bool SkipNSFWPlaybackReport { get; set; } = true; public bool PrivateNSFWPlaybackReport { get; set; } = false;ReportPlaybackStatusToBangumi:是否向Bangumi报告播放状态SkipNSFWPlaybackReport:是否跳过NSFW内容的播放报告PrivateNSFWPlaybackReport:NSFW内容是否以私密模式报告
解析器选择策略
public EpisodeParserType EpisodeParser { get; set; } = EpisodeParserType.Basic; public bool ProcessMultiSeasonFolderByAnitomySharp { get; set; } = false; public bool MovieEpisodeDetectionByAnitomySharp { get; set; } = false;EpisodeParser:选择剧集解析器类型ProcessMultiSeasonFolderByAnitomySharp:是否使用AnitomySharp处理多季度文件夹MovieEpisodeDetectionByAnitomySharp:是否使用AnitomySharp检测电影剧集
🚀 扩展开发与二次开发接口
自定义解析器实现
开发者可以通过实现IEpisodeParser接口创建自定义解析器:
public interface IEpisodeParser { Task<Episode?> Parse(EpisodeParserContext context); }数据提供器扩展
插件采用提供器模式设计,支持通过继承基础提供器类来扩展新的媒体类型支持:
SeriesProvider:系列剧集元数据提供器MovieProvider:电影元数据提供器EpisodeProvider:单集元数据提供器PersonProvider:人物信息提供器
定期任务调度
系统内置了多个定期执行的后台任务,开发者可以通过实现IScheduledTask接口添加自定义任务:
ArchiveDownloadTask:归档数据下载任务RatingRefreshTask:评分刷新任务TokenRefreshTask:OAuth令牌刷新任务
🔧 高级配置技巧
正则表达式过滤规则
插件支持通过正则表达式精确控制文件处理逻辑:
# 排除特典文件夹 (\b|_)(SPs?|Specials?|OVA|OAD)(\b|_) 特典 # 排除其他杂项内容 (\b|_)(PVs?|Previews?|Scans?|menus?|Fonts?|Extras?|CDs?|bonus|Music|Subs?|Subtitles?|其他|漫画|特别漫画|特典CD)(\b|_) NCOP|NCED归档数据策略配置
public int DaysBeforeUsingArchiveData { get; set; } = 14; public bool RefreshRecentEpisodeWhenArchiveUpdate { get; set; } = false; public bool RefreshRatingWhenArchiveUpdate { get; set; } = false;DaysBeforeUsingArchiveData:多少天前的数据使用归档版本RefreshRecentEpisodeWhenArchiveUpdate:归档更新时是否刷新最近剧集RefreshRatingWhenArchiveUpdate:归档更新时是否刷新评分
通过合理配置这些参数,可以在数据新鲜度和系统性能之间找到最佳平衡点,确保Jellyfin媒体库中的番剧信息既准确又及时。
【免费下载链接】jellyfin-plugin-bangumibgm.tv plugin for jellyfin项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-bangumi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考