サイトにBandcampプレーヤーを自動的に埋め込む方法は?

BandcampのURLをディスコースフォーラムに投稿すると、埋め込みプレイヤーが読み込まれます。自分のウェブサイトでこれを実現するにはどうすればよいですか?

og:videoタグを試しましたが、うまくいきませんでした。

よろしくお願いします!

Discourseではないあなたのサイトのことですか?

Discourseのソースコードで「onebox」または「one_box」を検索してみてください。

または、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. を参照して、それをあなたのサイト用のコード開発に利用することもできます。

「いいね!」 2

こんにちは、ジェイさん。

私はBandcampに少し似たウェブサイトを持っています。あなたが貼り付けたリンクと同様の埋め込みを作成したので、他のウェブサイトにiframeを追加すると、私の埋め込みが表示されます。

しかし、私が話しているのは、単にBandcampのURLを投稿するだけで、完全なiframe埋め込みが表示されるという、何らかのマジックのようなものです。これはDiscourseサーバーで設定されているものですか?

ここで機能するか見てみましょう。以下にBandcampのURLを貼り付けます。

はい^ご覧のとおり、機能する埋め込み音楽プレーヤーが表示されました。iframeやjsは貼り付けず、引用した埋め込みURLだけです。

これは、Discourseが特定のサイトのために知っている特別なことですか、それとも使用する埋め込みURLを伝えるために設定できるマジックヘッダータグがありますか?

Jay が指摘したように、ソースコードを確認する必要があります。

「Onebox」は、URL の一部を埋め込みに変換するライブラリです。

以下を確認しましたか?:

このコードは、Discourse 以外のサイトでも使用されることを意図していたと思います。

そのために、(サイトが RoR であると仮定して) 利用できる (現在はメンテナンスされていない) gem があります。もしかしたら、それをメンテナンスすることに興味があるかもしれませんか?

注意点: Discourse のコードはそれ以降、大幅に進化しています。

「いいね!」 3

ロバート様

ありがとうございます。Discourseにはそれ専用のコードがあるのですね。私のサイトで特に行う必要はないということです。これで一部の疑問は解消されました。もし私のサイトもBandcampや他のフォーラムのようにDiscourseでサポートされたいのであれば、それに対応するためのコードを依頼するか、自分で貢献する必要があるということですね。

私のサイトはRoRではありませんが、Rubyは多少知っているので、貢献できるかもしれません。

もう一つ質問があります。URLを貼り付けるだけでなく、iframeタグを使って埋め込みも試してみました。通常のウェブサイトでは問題なく動作しますが、Discourseフォーラムで行うと機能しません。四角いボックスは表示されますが、その中に埋め込みが表示されません。権限の問題だと思い、許可されたiframeに私のホストを追加しましたが、それでも機能しません。


OK、スクリーンショットを撮ろうとしたところ、動作するようになりました!システムで許可されたホストが適用されるまでに何らかの遅延があるのかもしれません。

さらに調査してみます。これまでのご協力に感謝いたします。

「いいね!」 1

わかりました、何が起こっているのかわかりました。iframe の許可設定を変更しても、既存の投稿には影響しません(少なくともすぐには)。後で影響が出る可能性はあります…わかりません。

ただし、新しい投稿を作成したり、既存の投稿を編集したりすると、設定が有効になります。

これで、埋め込みと URL の両方が機能するようになりました。これは、関連するフォーラムに連絡して、ドメイン名を許可されたホストに追加するように依頼する必要があることを意味します。そうすれば、その時点から機能するはずです。

ありがとうございます。

こんにちは :wave: :slight_smile:

古い投稿は再ベイクする必要があります。投稿の下にある3つのドットアイコンをクリックし、次にレンチをクリックして「HTMLの再構築」をクリックすることで、手動で行うことができます。
image

再ベイクする必要のある投稿がたくさんある場合は、すべての投稿を再ベイクするためのrakeタスクが必要になるか、必要な基準で一部の投稿のみを再ベイクするためのカスタムrailsスクリプトを使用する必要がある場合があります。

このようなものだと思います:

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