Incorporamenti video da facebook.com e altri siti non funzionano

Un mio membro ha pubblicato questo link a Facebook in formato standalone, ma Discourse ha tentato di analizzarlo e non ha funzionato.

Proviamo con lo stesso link, scritto su una riga autonoma:

Nel caso non lo vediate sopra, ecco cosa viene visualizzato:

Il problema si presenta anche con alcuni siti per adulti, dove i membri stavano cercando di condividere link; ho fatto un rapido test incollando diversi URL video da varie fonti e anche diversi dei principali siti per adulti non funzionano.

Sembra un bug relativamente serio, soprattutto perché impatta l’incorporamento dei video di Facebook. I miei membri (meno esperti di tecnologia) amano condividere link a contenuti su Facebook proprio perché è così popolare e universale. :frowning: Inoltre, se qualcuno invia quell’URL in un messaggio, viene convertito in qualcosa che non funziona e l’URL originale scompare. Quindi non è nemmeno possibile accedere a quell’URL se lo si volesse… non è più disponibile in alcun modo.

Quindi… è possibile dire a Discourse di NON tentare di incorporare automaticamente i video da quei domini? Stavo cercando un’impostazione tipo “blocca l’incorporamento di media per URL contenenti queste parole”, dove potrei aggiungere quei domini. (O forse una lista bianca di URL approvati come YouTube e Vimeo, per prevenire futuri problemi con nuovi siti.)

Se non è possibile, c’è una soluzione rapida che posso applicare ai miei forum per risolvere?

Firefox (desktop)

Qui sul mio desktop, usando Firefox 75 su Mac… ottengo la casella grigia di errore.

Safari (desktop)

Qui su Safari, viene mostrata la prima immagine del video, ma quando si fa clic sul pulsante “riproduci”, non succede nulla.

Chrome (desktop)

Utilizzando Chrome v81 su desktop Mac… la stessa cosa… si vede il video ma non viene mai riprodotto.

iPhone - Safari iOS

Come con Chrome o Safari (desktop)… il video appare ma non viene riprodotto.

Discourse non supporta ufficialmente l’anteprima dei video di Facebook.

Potresti dare un’occhiata a:

2 Mi Piace

Possiamo sostituire l’output onebox in modo che non crei un player rotto? Immagino dovremmo farlo funzionare come prima

3 Mi Piace

Sì, direi che è fondamentale. Per me non è un grosso problema se Discourse non supporta i video di Facebook. È un grosso problema quando un membro incolla un link (cosa tutt’altro che insolita) e viene visualizzato un messaggio di errore… e il link originale viene perso. Ho diversi messaggi del genere nel mio forum in questo momento. Noi amministratori li stiamo correggendo manualmente man mano che li rileviamo, ma ovviamente non è una soluzione ideale.

Credo che si tratti di un bug serio, solo nel senso che Facebook (insieme ad altri siti video con cui l’ho testato) è estremamente popolare.

Mi piacerebbe trovare una soluzione rapida… fatemi sapere se posso aiutare?

4 Mi Piace

La soluzione più rapida qui sarebbe aggiungere www.facebook.com all’impostazione: onebox domains blacklist. In questo modo, onebox non tenterà di incorporare i video di facebook.com.

3 Mi Piace

Ciò che è cambiato qui è che Facebook ha aggiornato i metadati OpenGraph per aggiungere collegamenti video troppo restrittivi:

<meta property="og:video:secure_url" content="https://video.fjai1-2.fna.fbcdn.net/v/t42.9040-2/10000000_626864624535070_4779621138076532736_n.mp4?_nc_cat=107&amp;_nc_sid=985c63&amp;efg=eyJybHIiOjM1MiwicmxhIjoxMzI5LCJ2ZW5jb2RlX3RhZyI6InN2ZV9zZCJ9&amp;_nc_oc=AQkUihmrvyg1wU9qH_NjqkLUzl0XSYJGE6JREtPH7jxKc1aXEIuGLSbauCEPM-hI-DCuJRacr1hCB6HHZre1lxto&amp;rl=352&amp;vabr=196&amp;_nc_ht=video.fjai1-2.fna&amp;oh=3fd1d5e14f27d55bc0d2a91d4714148b&amp;oe=5EA6E533" />

Il collegamento video sopra riportato mostra l’errore: Bad URL timestamp. :man_facepalming:

Anche il collegamento nel tag og:image mostra lo stesso errore.

Non abbiamo alcuna informazione da mostrare nella onebox di Facebook tranne il titolo del video. Penso che dovremmo codificare a mano la onebox per mettere in blacklist i collegamenti video di Facebook.

6 Mi Piace

Ottimo, grazie… è perfetto.

A proposito, ricordo che questo accade anche su altri siti oltre a Facebook; un membro ha provato a pubblicare un link a una pagina video su xvideos.com ed è fallito anch’esso. (Avviso NSFW! È ASSOLUTAMENTE un sito per adulti!) L’ho testato con alcuni altri siti e ho riscontrato lo stesso problema.

1 Mi Piace

Per Facebook, possiamo prendere l’attributo twitter:player e utilizzarlo per un iframe? Sembra essere un URL non scaduto:

Screenshot 2020-04-27 at 12.26.42

(C’è tanta ironia nel fatto che Facebook serva dati OpenGraph non funzionanti, ma dati Twitter che funzionano :joy:)

In alternativa, applichiamo la stessa logica di Instagram: mostra una grande anteprima con un pulsante :play_or_pause_button:, che è un link.

4 Mi Piace

Ho provato anche io e ho ottenuto link interrotti per i tag twitter:image e twitter:player. Funzionano per te?

1 Mi Piace

Nel video di esempio di @pnoeric vedo

<meta name="twitter:player" content="https://www.facebook.com/plugins/video.php?height=222&width=400&href=https://www.facebook.com/dccarmen/videos/10222567743521148/">

Che sembra funzionare bene.

Ma se ne trovi alcuni che non funzionano, allora dovremmo probabilmente evitarli.

1 Mi Piace

Per quello stesso link vedo:

https://www.facebook.com/plugins/video.php?height=222&amp;width=400&amp;href=https://www.facebook.com/dccarmen/videos/10222567743521148/

Notate &amp; che rompe l’URL… cambiare quello in & risolve il problema. Quindi sì, possiamo aggirare il problema.

I link twitter:image sono ancora rotti (ecco un esempio).

Quindi abbiamo due opzioni:

  1. usare i link twitter:player per incorporare video di Facebook
  2. mettere in blacklist i video di Facebook in onebox e mostrarli come link normali

Quale preferisci @codinghorror?

3 Mi Piace

Possiamo provare, ma siamo sicuri che i link non scadano?

Non credo che il link scadrà perché l’URL punta fondamentalmente a un plugin di Facebook che incorpora il video per qualsiasi link video passiamo nel parametro href.

https://www.facebook.com/plugins/video.php?height=222&amp;width=400&amp;href=https://www.facebook.com/dccarmen/videos/10222567743521148/

Quindi possiamo usare un iframe per incorporare il video di Facebook.

1 Mi Piace

No, la correzione sarà specifica per Facebook.

Tieni presente che il blocco del video che non funziona indica solitamente che l’errore risiede nel sito che stai cercando di incorporare. Nel caso di Facebook, era dovuto alle restrizioni eccessive di Facebook, che consentivano la riproduzione del video solo per un determinato periodo.

Di solito aggiriamo questi errori solo per i siti molto popolari (ad esempio: Instagram), in modo che la comunità più ampia possa trarne beneficio. Se il sito non è popolare e hai bisogno di incorporarlo sul tuo sito, il metodo consigliato è creare un plugin personalizzato aggiungendo un motore Onebox personalizzato per quel sito.

2 Mi Piace

Ok.

Hmm. Esiste un modo per includere nella whitelist i domini che OneBox cercherà di incorporare? Se non è così, sembra che ci troviamo in questa situazione:

  1. Gestisco un forum della comunità dove i membri amano collegarsi a siti con video. (Questi potrebbero essere qualsiasi sito, naturalmente… al momento non lo sappiamo.)

  2. Se un sito presenta un errore nel codice che impedisce il corretto funzionamento dell’incorporamento, Discourse altera l’incorporamento (brutto), e peggio ancora, rimuove l’URL originale così che gli altri non possano vedere cosa l’OP stava cercando di condividere.

Non sembra che il punto 2 dovrebbe essere: “Se un sito presenta un errore nel codice che impedisce il corretto funzionamento dell’incorporamento, Discourse smette di tentare l’incorporamento e lascia semplicemente passare il link?

Non posso risolvere questo problema con la blacklist perché non so quali domini siano interessati da questo problema, e naturalmente, qualsiasi sito potrebbe avere questo problema in futuro. Proprio come abbiamo visto qui con Facebook.

Certo che puoi risolverlo: basta mettere in blacklist i domini con cui riscontri problemi. Non è affatto impossibile.

2 Mi Piace

Ok, va bene. Non ho una chiara idea di quanto sia grave il problema; gestirli manualmente è un’ottima soluzione se non ci sono molti domini con questo problema.

Credo comunque che Discourse dovrebbe gestire i dati esterni malformati in modo più elegante, invece di “generare un enorme messaggio di errore e rimuovere il contenuto più importante dal post dell’OP”—e credo che probabilmente la pensi anche tu così. :slight_smile: Ma per ora la blacklist è un workaround accettabile. Grazie.

2 Mi Piace