例如:
在 Fakebook 主题、TLP 插件等情况下,YouTube 缩略图无法在主题列表中显示。
复现步骤(STR):
发布一个 YouTube 视频,切换到 Fakebook 主题,缩略图未显示。
临时解决方案:
重建帖子后缩略图会出现。然而,由于用户期望缩略图能立即显示,无需人工干预,因此这并不是一个理想的解决方案。
更多信息:
Topic.image_url 似乎为 nil。
这个问题似乎是自 8 月初以来最近才出现的……我认为在 8 月 5 日之前该功能正常(但不确定具体何时失效)。我注意到这与 Onebox 的新版本发布时间大致吻合。
我在之前的构建版本上进行了测试,该问题并未出现,因此希望这并非 YouTube 的 Open Graph 响应所致。此外,Fakebook 主题与 TLP 插件表现出相同的行为,从而排除了 TLP 插件的问题。因此,我怀疑这是 Discourse 或 Onebox 近期引入的回归问题。
这对使用主题列表预览功能的用户来说是一个真实存在的问题。
4 个赞
更新:我已执行 Git Bisect,问题似乎出在以下提交:
3 个赞
Falco
(Falco)
3
diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb
index ac16eb82c16..46050a69e40 100644
--- a/lib/cooked_post_processor.rb
+++ b/lib/cooked_post_processor.rb
@@ -28,7 +28,7 @@ def initialize(post, opts = {})
@cooking_options = @cooking_options.symbolize_keys
@doc = Nokogiri::HTML::fragment(post.cook(post.raw, @cooking_options))
- @has_oneboxes = post.post_analyzer.found_oneboxes?
+ @has_oneboxes = @doc.css("aside.onebox").count > 0
@size_cache = {}
@nbianca 为什么我们不再在这里使用 post.post_analyzer.found_oneboxes? 方法了?
所有使用 oembed 或 iframe 的 Onebox 在新的 CSS 选择器模式下都会失败,这也导致我们的 Onebox 检测器在整个代码库中表现不一致。
4 个赞
我同意 @nbianca 的观点,这看起来是一个非常脆弱的改动,为什么选择了这个方法?
2 个赞
nbianca
(Bianca)
5
问题在于,First Onebox 被授予了任何发布的链接,无论该链接是否真的生成了 Onebox。这是因为 PrettyText 会给所有链接添加 class="onebox" 类,随后 Oneboxer 会尝试解析所有带有 onebox 类的链接。
我做的修改会检查最终文档中是否存在任何 Onebox(Onebox 是带有 onebox 类的 aside 元素)。我会再仔细检查一下,看看是什么导致了问题以及原因,然后提出一个能同时修复这两个问题的方案。
7 个赞
nbianca
(Bianca)
6
我在这里做了一些改进,并创建了 这个 PR。
我刚刚测试了 v2.3.2,看起来 YouTube 链接并没有设置主题的 image_url 属性。原因是图像是从 img 标签的 src 属性中提取的,但当链接 YouTube 视频时,存在一个带有 background-image CSS 属性的 <div>。
您确定 image_url 以前是被设置过的吗?
5 个赞
@nbianca 抱歉,这可能是两个问题的组合。
在此提交之前及当时,配合 TLP 插件可以正常工作:
在此提交之后,配合 TLP 插件会失败。
我同意你的看法,对于 YouTube,默认情况下该属性并未填充。
看来 TLP 在覆盖处理方面做得更好,但它依赖的某些东西现在已经发生了变化。
供参考,相关的覆盖代码在这里:https://github.com/angusmcleod/discourse-topic-previews/blob/master/lib/cooked_post_processor_edits.rb
我认为我需要做进一步分析,但看起来变化已经大到足以破坏 TLP 的功能。
让我再深入调查一下,然后再次回滚。不幸的是,我可能在未来几天内没有机会处理此事。
1 个赞
我不明白那个提交怎么会破坏 TLP 插件🤔 你的二分查找是 100% 确定的吗?
1 个赞
奇怪的是,二分查找竟然定位到了 cooked_post_processor 的变更……我会再次确认并回滚。
是的,已确认:
包含此提交时失败:7c83d2eeb261ac676a8320e6a704752c56fd242e
包含此先前提交时正常:922c40f87cdceb8197dd61361334e0def23f13d5
1 个赞