Problema con Onebox e YouTube

ad esempio

L’anteprima di YouTube non viene visualizzata nell’elenco degli argomenti, ad esempio con il tema Fakebook o il plugin TLP.

Passaggi per riprodurre (STR):

Pubblica un video di YouTube, passa al tema Fakebook: l’anteprima non appare.

Soluzione temporanea:

Ricostruisci l’argomento e l’anteprima viene visualizzata; tuttavia, poiché gli utenti si aspettano che l’immagine appaia immediatamente senza intervento dello staff, questa non è una soluzione ideale.

Ulteriori informazioni:

Topic.image_url sembra essere nil.

Il problema sembra essersi verificato di recente, dopo l’inizio di agosto… Credo che funzionasse prima del 5 agosto (ma non sono sicuro della data esatta in cui si è interrotto). Ho notato che questo coincide approssimativamente con una nuova versione di Onebox.

Ho testato su una build precedente e il problema non era presente, il che esclude, spero, risposte og di YouTube. Inoltre, il tema Fakebook mostra lo stesso comportamento del plugin TLP, escludendo quest’ultimo; quindi sospetto che si tratti di una regressione recente in Discourse o in Onebox.

Questo è un problema reale per gli utenti delle Anteprime dell’elenco degli argomenti.

4 Mi Piace

Aggiornamento: ho eseguito un Git Bisect e sembra che questo sia il commit problematico:

3 Mi Piace
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 perché non usiamo più il metodo post.post_analyzer.found_oneboxes? qui?

Tutti gli onebox che utilizzano oembed o iframe falliranno con la nuova modalità del selettore CSS, e questo rende anche il nostro rilevatore di Onebox inconsistente all’interno della codebase.

4 Mi Piace

Sono d’accordo @nbianca, questa sembra una modifica incredibilmente fragile. Perché è stato scelto questo metodo?

2 Mi Piace

Il problema era che il First Onebox veniva assegnato per qualsiasi link pubblicato, indipendentemente dal fatto che fosse o meno un Onebox. Questo accade perché PrettyText aggiunge class="onebox" a tutti i link e successivamente Oneboxer tenta di analizzare tutti i link con la classe onebox.

La modifica che ho apportato verifica se il documento finale contiene dei Onebox (i Onebox sono elementi aside con la classe onebox). Darò un’ulteriore occhiata per capire cosa e perché si è rotto, e tornerò con una modifica che risolva entrambi i problemi.

7 Mi Piace

Ho apportato alcune migliorie qui e ho creato questa PR.

Ho appena testato la v2.3.2 e sembra che i link di YouTube non impostino l’attributo image_url dell’argomento. Il motivo è che l’immagine viene estratta dall’attributo src di un tag img, ma quando viene collegato un video di YouTube, c’è un <div> con un attributo CSS background-image.

Sei sicuro che image_url venisse impostato in precedenza?

5 Mi Piace

Grazie per aver guardato questo. Lasciami controllare dalla mia parte e risponderò.

@nbianca scusa, potrebbe trattarsi di una combinazione di due problemi

Funziona in questa versione e nelle precedenti con il plugin TLP:

Dopo questo commit, fallisce con TLP.

Concordo con te che per YouTube, di default, quella proprietà non viene popolata.

Sembra quindi che TLP gestisse meglio le sue sovrascritture, ma faceva affidamento su qualcosa che ora è cambiato.

Per tua informazione, le sovrascritture pertinenti si trovano qui: https://github.com/angusmcleod/discourse-topic-previews/blob/master/lib/cooked_post_processor_edits.rb

Penso che dovrò fare ulteriori analisi, ma sembra che ci siano stati cambiamenti sufficienti a rompere TLP.

Lascia che mi addentri un po’ di più in questo e provi a ripristinare. Purtroppo potrebbe non esserci tempo nei prossimi giorni.

1 Mi Piace

Non vedo come quell’commit possa aver rotto il plugin TLP :thinking: Sei sicuro al 100% del tuo bisect?

1 Mi Piace

È molto strano che il bisect abbia individuato una modifica a cooked_post_processor… Controllerò di nuovo e reverterò.

Sì, confermato:

Con questo commit fallisce: 7c83d2eeb261ac676a8320e6a704752c56fd242e
Con il commit precedente va tutto bene: 922c40f87cdceb8197dd61361334e0def23f13d5

1 Mi Piace

Il problema è stato risolto qui:

7 Mi Piace