Incrustaciones de video de facebook.com y otros sitios fallan

Un miembro mío publicó este enlace de Facebook independiente, y Discourse intentó analizarlo sin éxito.

Déjame intentar con el mismo enlace en una línea propia:
https://www.facebook.com/dccarmen/videos/10222567743521148/

Por si no lo ves arriba, esto es lo que se muestra:

El problema también aparece en algunos sitios para adultos donde los miembros intentaban compartir enlaces; hice una prueba rápida pegando varios enlaces de video de diferentes lugares y varios de los principales sitios para adultos tampoco funcionan.

Esto parece ser un error relativamente grave, solo porque afecta la incrustación de videos de Facebook. A mis miembros (menos expertos en tecnología) les gusta compartir enlaces a cosas en Facebook, en parte porque es muy popular y universal. :frowning: Además, si alguien publica esa URL en un mensaje, se analiza y se convierte en algo que no funciona, y la URL original desaparece. Así que ni siquiera puedes acceder a esa URL si quisieras… ya no está disponible en absoluto.

Entonces… ¿es posible decirle a Discourse que NO intente incrustar videos automáticamente en esos dominios? Buscaba una configuración como «lista negra de URLs con estas palabras para evitar la incrustación de medios» donde pudiera agregar esos dominios. (O quizás una lista blanca de URLs aprobadas como YouTube y Vimeo, para prevenir problemas futuros con nuevos sitios.)

Si no es así, ¿hay una solución rápida que pueda aplicar en mis foros para ayudar?

Firefox (escritorio)

Aquí en mi escritorio, usando Firefox 75 en Mac… obtengo el cuadro de error gris.

Safari (escritorio)

Aquí en Safari, se muestra el primer fotograma del video, pero cuando haces clic en el botón “reproducir”, no sucede nada.

Chrome (escritorio)

Usando Chrome v81 en Mac de escritorio… lo mismo… ves el video pero nunca se reproduce.

iPhone - Safari iOS

Igual que en Chrome o Safari (escritorio)… el video aparece pero no se reproduce.

Discourse no admite oficialmente los onebox de videos de Facebook.

Quizás quieras echar un vistazo a:

2 Me gusta

¿Podemos reemplazar la salida de onebox para que no cree un reproductor roto? Supongo que deberíamos hacer que funcione como lo hacía antes

3 Me gusta

Sí, diría que eso es crítico. Para mí no es un gran problema que Discourse no admita videos de Facebook. Lo que sí es un gran problema es cuando un miembro pega un enlace (algo muy común) y aparece un mensaje de error… y el enlace original desaparece. Tengo varios mensajes como este en mi foro ahora mismo. Nosotros, los administradores, los estamos arreglando manualmente a medida que los vemos, pero obviamente eso no es una buena solución.

Creo que esto es un error grave, solo porque Facebook (junto con otros sitios de videos con los que lo he probado) es extremadamente popular.

Me encantaría encontrar una solución rápida… avísame si puedo ayudar.

4 Me gusta

La solución más rápida aquí sería agregar www.facebook.com a la configuración: onebox domains blacklist. De esta manera, onebox no intentará incrustar videos de facebook.com.

3 Me gusta

Lo que ha cambiado aquí es que Facebook actualizó los metadatos de OpenGraph para agregar enlaces de video demasiado restrictivos:

<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" />

El enlace de video anterior muestra el error: Bad URL timestamp. :man_facepalming:

Incluso el enlace en la etiqueta og:image muestra el mismo error.

No tenemos ninguna información para mostrar en el onebox de Facebook, excepto el título del video. Creo que deberíamos codificar manualmente el onebox para que ponga en la lista negra los enlaces de video de Facebook.

6 Me gusta

Excelente, gracias… eso es perfecto.

Por cierto, recuerden que esto ocurre en otros sitios además de Facebook; un miembro intentó publicar un enlace a una página de video en xvideos.com y también falló. (¡Advertencia de contenido para adultos! ¡Eso es DEFINITIVAMENTE un sitio para adultos!) Lo probé con algunos otros sitios y encontré lo mismo.

1 me gusta

Para Facebook, ¿podemos tomar el atributo twitter:player y usarlo para un iframe? Parece ser una URL que no caduca:

Screenshot 2020-04-27 at 12.26.42

(¡Qué ironía que Facebook sirva datos de OpenGraph rotos, pero datos de Twitter funcionales :joy:)

O, alternativamente, aplicar la misma lógica que en Instagram. Mostrar una miniatura grande con un botón :play_or_pause_button:, que esté enlazado.

4 Me gusta

Lo intenté y obtuve enlaces rotos para las etiquetas twitter:image y twitter:player. ¿Funcionan para ti?

1 me gusta

En el video de ejemplo de @pnoeric, veo

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

Lo cual parece funcionar bien.

Pero si encuentras algunos que estén rotos, entonces probablemente deberíamos evitarlos.

1 me gusta

Para ese mismo enlace, veo:

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

Fíjate en &amp;, que está rompiendo la URL… cambiarlo por & soluciona el problema. Así que sí, podemos encontrar una solución.

Los enlaces twitter:image siguen rotos (aquí hay un ejemplo).

Por lo tanto, tenemos dos opciones:

  1. usar enlaces twitter:player para incrustar videos de Facebook
  2. bloquear los videos de Facebook en el onebox y mostrarlos como enlaces normales

¿Cuál prefieres @codinghorror?

3 Me gusta

Podemos probar esto, pero ¿estamos seguros de que los enlaces no caducan?

No creo que el enlace caduque, ya que la URL apunta básicamente a un plugin de Facebook que incrustará el video para cualquier enlace de video que pasemos en el parámetro href.

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

Por lo tanto, podemos usar un iframe para incrustar el video de Facebook.

1 me gusta

No, la solución será específica para Facebook.

Ten en cuenta que el fallo de la caja de un solo video (onebox) generalmente indica que el error está en el sitio que intentas incrustar. En el caso de Facebook, se debía a que Facebook era demasiado restrictivo y permitía la reproducción de videos solo durante un tiempo determinado.

Solemos trabajar en torno a estos errores solo para sitios muy populares (por ejemplo: Instagram), para que la comunidad en general pueda beneficiarse. Si el sitio no es popular y necesitas incrustarlo en tu sitio, la forma recomendada es crear un plugin personalizado que añada un motor Onebox personalizado para ese sitio.

2 Me gusta

Ok.

Hmm. ¿Existe alguna manera de poner en una lista blanca los dominios que onebox intentará incrustar? Si no es así, parece que tenemos esta situación:

  1. Administro un foro comunitario donde los miembros suelen enlazar a sitios con videos. (Por supuesto, podrían ser cualquier sitio… no lo sabemos por ahora.)

  2. Si un sitio tiene un error en su código que impide que la incrustación funcione, Discourse estropea la incrustación (feo), y lo que es peor, elimina la URL original para que otros no puedan ver lo que el OP intentaba compartir.

¿No parece que el paso 2 debería ser: “Si un sitio tiene un error en su código que impide que la incrustación funcione, Discourse deja de intentar incrustar y simplemente permite que el enlace pase a través?

No puedo solucionar esto con la lista negra porque no sé qué dominios se ven afectados por esto y, por supuesto, cualquier sitio podría tener este problema en el futuro. Al igual que vimos aquí con Facebook.

Claro que puedes solucionarlo: simplemente añade a la lista negra los dominios con los que observes problemas. Esto no es algo imposible.

2 Me gusta

Vale, está bien. No tengo una idea clara de cuán grave es el problema; gestionarlos manualmente es una excelente solución si no hay muchos dominios afectados.

Sigo pensando que Discourse debería manejar los datos externos malformados de una manera más elegante que “generar un mensaje de error gigante y eliminar el contenido más importante de la publicación original del OP”. Y creo que tú también lo piensas. :slight_smile: Pero por ahora, la lista negra es una solución alternativa aceptable. Gracias.

2 Me gusta