首页
/ Bazarr项目中Podnapisi字幕提供商的修复方案分析

Bazarr项目中Podnapisi字幕提供商的修复方案分析

2025-06-26 02:21:33作者:伍霜盼Ellen

问题背景

在Bazarr项目的1.4.3版本中,用户发现当使用Podnapisi作为字幕提供商时,无论是自动搜索还是手动搜索都无法返回任何结果,即使该网站上确实存在相应的字幕文件。这个问题影响了用户获取字幕的正常体验。

问题现象

以电影《加勒比海盗:世界的尽头》为例,当用户配置了Podnapisi提供商并设置为斯洛文尼亚语时,Bazarr界面显示无搜索结果。然而,直接访问Podnapisi网站却能查询到该电影确实存在斯洛文尼亚语字幕。

技术分析

通过深入排查发现,问题出在Bazarr项目中的subliminal_patch/providers/podnapisi.py文件第212行代码。原始代码中使用了xml.find()方法但没有正确获取文本内容,导致无法正确解析API返回的结果。

原始问题代码:

if not xml.find('pagination/results') or not int(xml.find('pagination/results').text):

解决方案

修复方案是在第一个条件判断中正确获取XML节点的文本内容。修改后的代码如下:

if not xml.find('pagination/results').text or not int(xml.find('pagination/results').text):

这个修复确保了:

  1. 正确检查XML节点是否存在文本内容
  2. 准确解析API返回的结果数量
  3. 保证后续处理能够正常进行

影响范围

该问题影响了所有使用Podnapisi作为字幕提供商的Bazarr用户,特别是当用户搜索非主流语言字幕时(如斯洛文尼亚语)。修复后,用户可以正常获取Podnapisi上存在的所有字幕资源。

额外发现

在问题排查过程中还发现一个相关现象:Podnapisi API在某些情况下可能只返回一个结果,即使实际存在多个匹配的字幕。这可能是API本身的限制,需要进一步调查确认是否属于另一个独立问题。

总结

这个修复案例展示了XML解析在字幕搜索过程中的重要性。正确处理API响应是确保字幕提供商正常工作的关键。对于开发者而言,这类问题的排查需要:

  1. 对比原始API响应和程序解析结果
  2. 仔细检查XML/JSON解析逻辑
  3. 确保所有必要的字段都被正确访问和处理

该修复已被合并到Bazarr主分支,将在后续版本中发布,为用户提供更稳定的字幕搜索体验。

登录后查看全文
热门项目推荐
相关项目推荐