
Bazarr插件系统详解如何扩展自定义字幕提供商【免费下载链接】bazarrBazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.项目地址: https://gitcode.com/gh_mirrors/ba/bazarrBazarr作为Sonarr和Radarr的最佳伴侣应用通过强大的插件系统实现了字幕自动管理与下载功能。本文将深入解析Bazarr的插件架构带您一步步构建自己的字幕提供商插件解锁更多字幕资源。为什么需要自定义字幕提供商Bazarr默认集成了数十种字幕来源但全球各地的用户可能需要访问本地化的字幕服务。通过自定义插件您可以接入地区性字幕网站支持特殊格式的字幕文件实现个性化的搜索算法解决特定平台的访问限制Bazarr的字幕管理界面显示了剧集的字幕状态和操作选项Bazarr插件系统架构Bazarr的插件系统基于Python构建主要位于custom_libs/subliminal_patch/providers/目录。该系统采用了以下核心组件1. 提供商基类所有字幕提供商都继承自基础Provider类定义于custom_libs/subliminal_patch/providers/__init__.pyclass Provider(_Provider): hash_verifiable False hearing_impaired_verifiable False skip_wrong_fps True def ping(self): Check if the provider is alive. return True这个基类提供了插件的基本结构和默认行为包括连接测试(ping)、哈希验证等属性。2. 插件注册机制Bazarr通过自动扫描providers目录来发现和注册插件for name in os.listdir(os.path.dirname(__file__)): if name in (__init__.py, mixins.py, utils.py) or not name.endswith(.py): continue module_name os.path.splitext(name)[0] mod importlib.import_module(subliminal_patch.providers.%s % module_name.lower()) # 类检测和注册逻辑...这种自动发现机制意味着您只需将插件文件放入正确目录Bazarr就能自动识别。构建自定义字幕提供商的步骤步骤1创建提供商类每个字幕提供商都需要创建一个继承自Provider的类例如class MyCustomProvider(Provider): name mycustom languages {Language(eng), Language(spa)} # 其他必要属性...您可以在custom_libs/subliminal_patch/providers/目录中找到现有提供商作为参考如subsource.py或opensubtitlescom.py。步骤2实现核心方法一个完整的字幕提供商需要实现以下关键方法搜索字幕def search(self, video, languages): # 实现搜索逻辑 # 返回Subtitle对象列表此方法负责根据视频信息和语言偏好搜索合适的字幕。下载字幕def download_subtitle(self, subtitle): # 实现下载逻辑 # 将字幕内容写入subtitle.contentBazarr的剧集列表界面显示了不同剧集的字幕状态步骤3处理字幕元数据每个字幕需要封装为Subtitle对象包含必要的元数据subtitle self.subtitle_class( languagelanguage, hearing_impairedhearing_impaired, page_linkpage_link, # 其他元数据... )步骤4错误处理与重试Bazarr提供了重试装饰器来处理临时错误reinitialize_on_error((RequestException,), attempts3) def search(self, video, languages): # 实现带有错误处理的搜索逻辑插件开发实战示例以下是一个简单的字幕提供商框架您可以基于此模板扩展from subliminal_patch.providers import Provider from subliminal_patch.subtitle import Subtitle from subliminal.video import Episode class MySubtitle(Subtitle): provider_name mycustom def __init__(self, language, url, title): super().__init__(language) self.url url self.title title class MyCustomProvider(Provider): name mycustom languages {Language(eng)} subtitle_class MySubtitle def search(self, video, languages): subtitles [] # 搜索逻辑实现 return subtitles def download_subtitle(self, subtitle): # 下载逻辑实现Bazarr的剧集详情界面显示了单集的字幕信息和操作选项测试与调试开发完成后将您的插件文件如mycustom.py放入custom_libs/subliminal_patch/providers/目录Bazarr会自动加载。建议通过以下方式测试查看Bazarr日志确认插件加载情况使用手动搜索功能测试字幕搜索检查下载的字幕文件是否正确高级技巧与最佳实践使用Mixin扩展功能利用ProviderRetryMixin和ProviderSubtitleArchiveMixin等混合类增强功能会话管理使用RetryingSession处理网络请求重试缓存策略实现合理的缓存机制减少API请求用户配置通过Bazarr设置界面添加插件配置选项总结Bazarr的插件系统为开发者提供了灵活的扩展机制使您能够轻松集成新的字幕来源。通过本文介绍的方法您可以构建自定义字幕提供商进一步增强Bazarr的字幕获取能力。无论是地区性字幕服务还是特殊格式支持插件系统都能满足您的个性化需求。要开始开发只需克隆仓库git clone https://gitcode.com/gh_mirrors/ba/bazarr然后在custom_libs/subliminal_patch/providers/目录下创建您的第一个插件【免费下载链接】bazarrBazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.项目地址: https://gitcode.com/gh_mirrors/ba/bazarr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考