Problem mit Onebox und Youtube

z. B.

Das YouTube-Vorschaubild wird in der Themenliste nicht angezeigt, z. B. beim Fakebook-Theme oder dem TLP-Plugin.

Schritte zur Reproduktion:

Ein YouTube-Video posten, zum Fakebook-Theme wechseln – das Vorschaubild erscheint nicht.

Workaround:

Den Beitrag neu aufbauen, dann erscheint das Vorschaubild. Da Nutzer jedoch erwarten, dass das Vorschaubild umgehend und ohne Eingriff des Supports angezeigt wird, ist dies keine ideale Lösung.

Weitere Informationen:

Topic.image_url scheint nil zu sein.

Dies scheint kürzlich, Anfang August, aufgetreten zu sein … Ich glaube, es funktionierte vor dem 5. August (bin mir aber nicht sicher, wann genau der Fehler aufgetreten ist). Mir ist aufgefallen, dass dies grob mit einer neuen Version von Onebox übereinstimmt …

Ich habe dies in einem früheren Build getestet, und das Problem war nicht vorhanden, was die YouTube-og-Antworten ausschließt. Auch das Fakebook-Theme zeigt das gleiche Verhalten wie das TLP-Plugin, was das TLP-Plugin ausschließt. Daher vermute ich, dass es sich um eine kürzliche Regression in Discourse oder Onebox handelt.

Dies ist ein echtes Problem für Nutzer der Topic List Previews.

4 „Gefällt mir“

Update: Ich habe einen Git Bisect durchgeführt, und dies scheint der problematische Commit zu sein:

3 „Gefällt mir“
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, warum verwenden wir hier die Methode post.post_analyzer.found_oneboxes? nicht mehr?

Alle Oneboxes, die entweder oEmbed oder iframe verwenden, werden am neuen CSS-Selektor-Modus scheitern, und das führt zudem dazu, dass unser Onebox-Detektor im gesamten Codebase inkonsistent ist.

4 „Gefällt mir“

Ich stimme @nbianca zu, das sieht nach einer extrem fragilen Änderung aus. Warum wurde diese Methode ausgewählt?

2 „Gefällt mir“

Das Problem bestand darin, dass der First Onebox-Award für jeden geposteten Link vergeben wurde, unabhängig davon, ob es sich um einen Onebox-Link handelte oder nicht. Dies geschieht, weil PrettyText allen Links die Klasse class="onebox" hinzufügt und der Oneboxer anschließend versucht, alle Links mit der Klasse onebox zu parsen.

Die von mir vorgenommene Änderung prüft, ob im endgültigen Dokument überhaupt Oneboxes vorhanden sind (Oneboxes sind aside-Elemente mit der Klasse onebox). Ich werde mir das noch einmal genauer ansehen, herausfinden, was genau kaputt ist und warum, und mit einer Änderung zurückkehren, die beide Probleme behebt.

7 „Gefällt mir“

Ich habe hier einige Verbesserungen vorgenommen und diesen PR erstellt.

Ich habe gerade v2.3.2 getestet, und es sieht nicht so aus, als würden YouTube-Links das Attribut image_url des Themas setzen. Der Grund dafür ist, dass das Bild aus dem src-Attribut eines img-Tags extrahiert wird. Wenn jedoch ein YouTube-Video verlinkt ist, gibt es ein <div> mit einem CSS-Attribut background-image.

Bist du sicher, dass image_url früher gesetzt wurde?

5 „Gefällt mir“

Danke, dass du dir das angesehen hast. Ich werde das auf meiner Seite prüfen und mich wieder bei dir melden.

@nbianca Entschuldigung, dies könnte eine Kombination aus zwei Problemen sein.

Funktioniert mit dem TLP-Plugin vor und einschließlich dieses Commits:

Nach diesem Commit schlägt es mit TLP fehl.

Ich stimme dir zu, dass bei YouTube diese Eigenschaft out of the Box nicht ausgefüllt ist.

Es scheint also, als hätte TLP mit seinen Überschreibungen besser funktioniert, aber sich dabei auf etwas verlassen hat, das sich nun geändert hat.

Zur Information: Die relevanten Überschreibungen findest du hier: https://github.com/angusmcleod/discourse-topic-previews/blob/master/lib/cooked_post_processor_edits.rb

Ich denke, ich muss noch etwas mehr analysieren, aber es sieht so aus, als gäbe es genug Änderungen, die TLP brechen.

Lass mich das noch etwas genauer untersuchen und es erneut rückgängig machen. Leider habe ich in den nächsten paar Tagen vielleicht keine Zeit.

1 „Gefällt mir“

Ich verstehe nicht, wie dieser Commit das TLP-Plugin kaputt machen kann :thinking: Bist du zu 100 % sicher bei deinem Bisect?

1 „Gefällt mir“

Sehr seltsam, dass das Bisection eine Änderung an cooked_post_processor gefunden hat … Ich werde das noch einmal überprüfen und rückgängig machen.

Ja, bestätigt:

Mit diesem Commit schlägt es fehl: 7c83d2eeb261ac676a8320e6a704752c56fd242e
Mit diesem vorherigen Commit funktioniert es einwandfrei: 922c40f87cdceb8197dd61361334e0def23f13d5

1 „Gefällt mir“

Das Problem wurde hier behoben:

7 „Gefällt mir“