Como posso incorporar automaticamente um player do Bandcamp no meu site?

Se eu postar um URL do Bandcamp em um fórum do Discourse, ele exibirá o player incorporado. Como posso conseguir isso com meu próprio site de música?

Tentei definir tags og:video sem sucesso.

Obrigado!

Você quer dizer no seu site que não é o Discourse?

Você pode procurar no código-fonte do Discourse por “onebox” ou talvez “one_box”.

Ou talvez veja 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. e use isso para desenvolver código para o seu site.

2 curtidas

Olá Jay,

Eu tenho um site, um pouco semelhante ao Bandcamp. Criei embeds semelhantes ao link que você colou para que você possa adicionar um iframe a outro site e meu embed aparecerá.

Mas o que estou falando é de alguma mágica que parece acontecer quando você simplesmente posta um URL do Bandcamp, um embed de iframe completo aparece. Isso é algo configurado no servidor do Discourse?

Vamos ver se isso funciona aqui. Postarei um URL do Bandcamp abaixo.

Sim ^ como você pode ver, um reprodutor de música incorporado funcional apareceu. Eu não colei nenhum iframe ou js, apenas o URL de embed que citei acima.

Isso é algo especial que o Discourse sabe como fazer para sites específicos ou há algumas tags de cabeçalho mágicas que você pode definir para dizer qual URL de embed usar.

Como Jay apontou, você deve olhar o código-fonte.

‘Onebox’ é a biblioteca que, em parte, converte algumas URLs em embeds.

Você já olhou?:

Eu acho que a intenção original era que este código fosse usado também em sites não-Discourse.

Para esse fim, existe uma gem (agora não mantida) que você pode ser capaz de alavancar (assumindo que seu site é RoR), talvez você estaria interessado em mantê-la?

Uma palavra de cautela: o código no Discourse terá evoluído positivamente desde então.

3 curtidas

Olá Robert,

Obrigado por desenterrar isso para mim. Então sim, existe um código específico para isso no Discourse. Não é algo que eu precise fazer no meu site em si. Isso responde a essa parte. Portanto, se eu quiser que meu site seja suportado da mesma forma que o Bandcamp no Discourse (e potencialmente em outros fóruns), precisarei pedir ou contribuir com o código para que funcione para o meu também.

Meu site não é RoR, mas eu conheço um pouco de Ruby, então talvez eu possa contribuir.

Tenho uma segunda pergunta também. Além de colar o URL, também tentei adicionar o embed com a tag iframe. Isso funciona bem em um site normal, mas fazer isso no meu fórum Discourse não funciona. Uma caixa quadrada apareceu, mas não o embed dentro. Presumi que fosse um problema de permissão, então adicionei meu host aos iframes permitidos, mas ainda não funciona.

Ok, então, assim que eu estava prestes a tirar uma captura de tela para mostrar que não estava funcionando, parece que começou a funcionar! Então, me pergunto se há algum tipo de atraso no sistema para aplicar os hosts permitidos.

Vou explorar mais. Obrigado pela sua ajuda até agora.

1 curtida

Ok, acabei de perceber o que está acontecendo. Quando você altera as configurações de permissão de iframe, isso não afeta as postagens existentes (pelo menos não imediatamente). É possível que afete mais tarde… não tenho certeza.

Mas, quando você cria uma nova postagem ou edita uma postagem existente, as configurações entram em vigor então.

Então, agora, tanto meu embed quanto meu URL funcionam - isso significa que terei apenas que entrar em contato com os fóruns relevantes e pedir que adicionem o nome do meu domínio aos hosts permitidos e funcionará a partir desse ponto.

Obrigado.

Olá :wave: :slight_smile:

Posts mais antigos precisam ser reprocessados (rebaked). Você pode fazer isso manualmente clicando no ícone de três pontos abaixo do post, depois na chave inglesa e, em seguida, em “Rebuild HTML”.
image

Se você tiver muitos posts que precisam ser reprocessados, pode ser necessário usar a tarefa rake para reprocessar todos os posts ou usar um script rails personalizado para reprocessar apenas alguns deles, usando os critérios necessários.

Algo como isto, eu acho:

Post.where('raw LIKE ?', 'a specific URL').find_each do |p|
    p.rebake!
end
1 curtida