Usando imágenes onebox para miniaturas de temas

¿Por qué la API a menudo falla al crear miniaturas, aunque se descarguen imágenes lo suficientemente grandes?

Por ejemplo, si pegas esto en un mensaje inicial…

Este onebox descarga una imagen lo suficientemente grande con dimensiones de 690 x 465:

Aun así, no se crea ninguna miniatura para el tema.

1 me gusta

No se basa en el tamaño de la imagen. En general, no tomamos las imágenes de los oneboxes, porque en muchos casos no son útiles para las miniaturas. Por ejemplo, algo que vemos mucho en Meta son enlaces a repositorios de GitHub como

Nadie quiere que mi cara sea ampliada y se convierta en la miniatura del tema :wink:

3 Me gusta

Bueno, eso es muy específico de Meta; no tenemos ningún enlace a GitHub en nuestra comunidad. Se trata de noticias y deben usarse imágenes de onebox. Esto limita mucho las miniaturas, solo por este problema de “rostros” en Meta. ¿Existe alguna forma potencial de modificar esto y agregar imágenes de oneboxes? Supongo que a muchas comunidades no les importan los “rostros” de GitHub.

3 Me gusta

Ciertamente estoy abierto a mejoras aquí. Sé que @merefield también está interesado en esta lógica. El cambio sería necesario en el núcleo, no en un plugin, así que lo separaré en su propio tema.

Aquí está la lógica existente:

Tal vez podríamos añadir una clase .no-thumbnail a ciertos tipos de onebox (por ejemplo, GitHub) y luego enseñar a Discourse a ignorar solo esos, manteniendo las imágenes de otros onebox.

Voy a añadir la etiqueta pr-welcome a esto, pero asegúrate de describir un plan en este tema antes de realizar cualquier trabajo sustancial.

5 Me gusta

Eso sería genial. El 90% de nuestros temas actualmente no tienen miniaturas, aunque podrían tenerlas. Y como se mencionó, este problema de GitHub es un caso límite muy específico para comunidades de desarrolladores; la gran mayoría de nosotros no obtenemos miniaturas para temas que definitivamente podrían tenerlas debido a esto.

2 Me gusta

¡Segundo esto!!! Para el caso de uso de un agregador de noticias o cualquier otro tipo de página con muchas republicaciones, no tener miniaturas relevantes es un problema grave.

Si ustedes no integran esto pronto, ¿tienen alguna idea sobre cómo hacerlo en mi distribución autoalojada?

1 me gusta

Sí, actualmente no está en la mesa debido a que los “rostros” de GitHub podrían mostrarse en comunidades de desarrolladores como Meta, pero la mayoría de las comunidades no les importan los “rostros” y quieren tener tantos miniaturas como sea posible, especialmente cuando hay imágenes onebox lo suficientemente grandes disponibles para el OP.

Ejemplo del OP se renderiza correctamente para las Vistas Previa de Listas de Temas, porque uso criterios más amplios en el plugin:

  def extract_images_for_post
    # todas las imágenes con un atributo src
    @doc.css("img[src]") -
    # menos emojis
    @doc.css("img.emoji") -
    # menos imágenes dentro de citas
    @doc.css(".quote img") -
    # menos iconos de sitio de onebox
    @doc.css("img.site-icon") -
    # menos avatares de onebox
    @doc.css("img.onebox-avatar") #Criterios más amplios que el núcleo de Discourse
  end

fuente: discourse-topic-previews-sidecar/lib/cooked_post_processor_edits.rb at f4332f9742a37827fd6364b2365c45524f1e7faf · merefield/discourse-topic-previews-sidecar · GitHub

1 me gusta

Sí, gracias @merefield, pero solo usamos el componente de tema de @david, no el TLP TC. Sin embargo, probablemente usaré tu evaluación para parchear el núcleo si no obtenemos algún avance o una opción proporcionada por el @team sobre este tema.

1 me gusta

La representación anterior es de TLP TC, pero sí, utilizo un plugin de back-end (el tema ‘side car’) para modificar Ruby :). https://github.com/merefield/discourse-topic-previews/tree/theme_sidecar Aprecio que esto puede no ser una opción si está alojado.

3 Me gusta

Esto está totalmente sobre la mesa, ¡por eso tiene la etiqueta pr-welcome :smiley:

Consulta este mensaje para obtener un punto de partida para la implementación.

4 Me gusta

@merefield ¿Podrías hacer el PR, por favor? Desafortunadamente, soy completamente nuevo en Ruby. O, ¿cómo es el proceso para un PR?

1 me gusta

@david Definitivamente estaría encantado de poder eliminar esta anulación de los complementos y estoy de acuerdo en que una solución centralizada sería lo mejor.

3 Me gusta

@Terrapop aquí tienes las Contributing to Discourse development

Me gustaría ser un asistente más inmediato en esto, pero estoy saturado con trabajo de clientes en este momento.

2 Me gusta

Entendido. Por ahora, solo tengo un entorno de desarrollo Docker sencillo para crear algunos plugins y parches básicos del núcleo. Esperaré a que alguien revise esto y, probablemente, aplique un parche mediante tu evaluación en el meantime.

Un trabajo adecuado aquí no es un proyecto intangible, ya que necesitas modificar casos de prueba y trabajar en ambos componentes (Discourse y Discourse One-Box). ¡Pero definitivamente vale la pena hacerlo!

Por cierto, Ruby no es nada que debas temer después de Ember :wink:

3 Me gusta

Sí, pero esto está definitivamente fuera de mi alcance y mis capacidades actuales, por desgracia.

1 me gusta

Como solución alternativa, a menudo copio y pego la imagen manualmente en un chat de Whisper y luego selecciono la miniatura desde allí.

Sería más cómodo que fuera automático, quizás con una opción de configuración para especificar dominios de los que no se deben extraer miniaturas de los cuadros de una sola línea (por ejemplo, para cubrir el caso de GitHub).

3 Me gusta

Estoy de acuerdo. Usamos el fragmento de @merefield para sobrescribir el núcleo con un mini plugin. Pero debería ser fácil para el equipo del núcleo proponer algo listo para usar. No tener esto simplemente porque algunos temen que aparezcan sus rostros de GitHub es simplemente perezoso.

1 me gusta

Acabo de fusionar FEATURE: Allow onebox images to be used as topic thumbnails (#12050) · discourse/discourse@b770c30 · GitHub, lo que permite seleccionar imágenes de onebox como miniaturas de temas. Existe una excepción específica para el onebox de GitHub, y podemos agregar más según sea necesario.

(cc @Terrapop @merefield)

10 Me gusta