¿Cómo puedo incrustar automáticamente un reproductor de Bandcamp en mi sitio?

Si publico una URL de Bandcamp en un foro de Discourse, este extrae su reproductor incrustado. ¿Cómo puedo lograr esto con mi propio sitio de música?

He intentado configurar etiquetas og:video sin éxito.

¡Gracias!

¿Te refieres a tu sitio que no es Discourse?

Puedes buscar en el código fuente de Discourse “onebox” o quizás “one_box”.

O tal vez mira https://get.bandcamp.help/hc/en-us/articles/360013561254-How-do-I-create-a-Bandcamp-embedded-player-#:~:text=To%20create%20an%20embedded%20player,your%20merchandise%2C%20and%20so%20on. y usa eso para desarrollar código para tu sitio.

2 Me gusta

Hola Jay,

Tengo un sitio web, algo similar a Bandcamp. He creado incrustaciones similares al enlace que has pegado para que puedas añadir un iframe a otro sitio web y mi incrustación aparecerá.

Pero de lo que estoy hablando es de algo de magia que parece ocurrir cuando simplemente publicas una URL de Bandcamp, aparece una incrustación de iframe completa. ¿Está esto configurado en el servidor de Discourse?

Veamos si esto funciona aquí. Publicaré una URL de Bandcamp a continuación.

Sí ^ como puedes ver, ha aparecido un reproductor de música incrustado funcional. No he pegado ningún iframe ni js, solo la URL de incrustación que he citado anteriormente.

¿Es esto algo especial que Discourse sabe hacer para sitios específicos o hay alguna etiqueta mágica en la cabecera que puedas configurar para indicarle qué URL de incrustación usar?

Como Jay señaló, deberías mirar el código fuente.

‘Onebox’ es la biblioteca que, en parte, convierte algunas URL en incrustaciones.

¿Has mirado?:

Creo que la intención original era que este código se utilizara también en sitios que no fueran de Discourse.

Para ello, hay una gema (ahora sin mantenimiento) que podrías aprovechar (suponiendo que tu sitio sea RoR), ¿quizás te interesaría mantenerla?

Una advertencia: el código en Discourse habrá evolucionado positivamente desde entonces.

3 Me gusta

Hola Robert:

Gracias por desenterrar eso para mí. Así que sí, hay código específico para ello en Discourse. No es algo que necesite hacer en mi sitio como tal. Eso responde a esa parte. Así que si quiero que mi sitio sea compatible de la misma manera que Bandcamp en Discourse (y potencialmente en otros foros), necesitaré pedir o contribuir con el código para que funcione también para el mío.

Mi sitio no es RoR, pero sí sé algo de ruby, así que podría contribuir.

También tengo una segunda pregunta. Además de pegar la URL, también intenté agregar la incrustación con la etiqueta iframe. Esto funciona bien en un sitio web normal, pero hacerlo en mi foro de Discourse no funciona. Apareció un cuadro cuadrado pero no la incrustación dentro. Suponía que era un problema de permisos, así que agregué mi host a los iframes permitidos, pero todavía no funciona.


OK, así que justo cuando estaba a punto de obtener una captura de pantalla para mostrar que no funcionaba, ¡parece que ha comenzado a funcionar! Así que me pregunto si hay algún tipo de retraso en el sistema para aplicar los hosts permitidos.

Exploraré más a fondo. Gracias por tu ayuda hasta ahora.

1 me gusta

Ok, acabo de darme cuenta de lo que está pasando. Cuando cambias la configuración de permitir iframes, no afecta a las publicaciones existentes (al menos no de inmediato). Es posible que lo hagan más tarde… no estoy seguro.

Pero, cuando creas una publicación nueva o editas una existente, la configuración surte efecto entonces.

Así que ahora tanto mi incrustación como mi URL funcionan, lo que significa que solo necesitaré contactar con los foros correspondientes y pedirles que añadan mi nombre de dominio a los hosts permitidos y funcionará a partir de ese momento.

Gracias.

Hola :wave: :slight_smile:

Las publicaciones antiguas necesitan ser rebakeadas. Puedes hacerlo manualmente haciendo clic en el icono de los tres puntos debajo de la publicación, luego en la llave inglesa, y luego en Rebuild HTML.
image

Si tienes muchas publicaciones que necesitan ser rebakeadas, es posible que necesites la tarea rake para rebakear todas las publicaciones o usar un script de rails personalizado para rebakear solo algunas de ellas utilizando los criterios necesarios.

Algo como esto, creo:

Post.where('raw LIKE ?', 'una URL específica').find_each do |p|
    p.rebake!
end
1 me gusta