sounisi5011/sounisi5011.jp

oEmbed埋め込みの対応

Closed this issue · 14 comments

Twitterのツイートを埋め込む場合などを考えると、oEmbedのコンテンツを埋め込む機能を追加したほうが良いと考える。
例えば https://github.com/sounisi5011/novel-dinner-from-twitter-977500688279154688/tree/develop/0.0.1 だと、以下の構文でoEmbedを埋め込めるようにしてある。

<object type="application/x.oembed" data="https://twitter.com/jack/status/20">
  <param name="lang" value="ja">
</object>

これに対応するのはどうだろう?
PugでHTMLを生成した後のこの場所に、そういうものを変換するプラグインを埋め込む。

.use(blankshield({ insertNoreferrer: true }))

MIMEタイプはapplication/x.oembedでいいのだろうか?
対象はHTMLなのだから、text/x-oembed+htmlみたいな形式が良いのではないだろうか。

MIMEタイプはapplication/x.oembedでいいのだろうか?
対象はHTMLなのだから、text/x-oembed+htmlみたいな形式が良いのではないだろうか。

RFC 6838Wikipediaによると、x-接頭辞は私的利用目的の名前を示さないらしい。その目的はx.接頭辞に置き換わっている。

あと、+html接尾辞はStructured Syntax Suffix Registryに登録されていない。これも使用しないほうがいいだろう。

あと、+html接尾辞はStructured Syntax Suffix Registryに登録されていない。これも使用しないほうがいいだろう。

oEmbedの仕様で明記されているMIMEタイプのapplication/json+oembedtext/xml+oembedにも、登録されていない+oembed接尾辞が使われているようなんだけど…

∴気にしなくてもいいんじゃないだろうか?

object要素のdata属性に指定してあるURLが、直接oEmbedのデータを示すものではないから、MIMEタイプがoembedなのはすごい違和感。こういう構文ならまだ納得がいく。

<object type="application/x.oembed" data="https://publish.twitter.com/oembed?url=https://twitter.com/jack/status/20">
  <param name="lang" value="ja">
</object>

ただ、これだと本末転倒というか、せっかく用意されているoEmbed 4. Discoveryの仕様がもったいないというか。

object 要素のdata属性に指定してあるURLが、直接oEmbedのデータを示すものではないから、MIMEタイプがoembedなのはすごい違和感。こういう構文ならまだ納得がいく。

<object type="application/x.oembed" data="https://publish.twitter.com/oembed?url=https://twitter.com/jack/status/20">
  <param name="lang" value="ja">
</object>

ただ、これだと本末転倒というか、せっかく用意されているoEmbed 4. Discoveryの仕様がもったいないというか。

application/x.oembed-providerとかはどうだろう?

object 要素のdata属性に指定してあるURLが、直接oEmbedのデータを示すものではないから、MIMEタイプがoembedなのはすごい違和感。こういう構文ならまだ納得がいく。

<object type="application/x.oembed" data="https://publish.twitter.com/oembed?url=https://twitter.com/jack/status/20">
  <param name="lang" value="ja">
</object>

ただ、これだと本末転倒というか、せっかく用意されているoEmbed 4. Discoveryの仕様がもったいないというか。

application/x.oembed-providerとかはどうだろう?

URLの対象は「oEmbed provider」ではないんだよな…
「oEmbed provider」が提供するコンテンツではあるんだが…

object 要素のdata属性に指定してあるURLが、直接oEmbedのデータを示すものではないから、MIMEタイプがoembedなのはすごい違和感。こういう構文ならまだ納得がいく。

<object type="application/x.oembed" data="https://publish.twitter.com/oembed?url=https://twitter.com/jack/status/20">
  <param name="lang" value="ja">
</object>

ただ、これだと本末転倒というか、せっかく用意されているoEmbed 4. Discoveryの仕様がもったいないというか。

application/x.oembed-providerとかはどうだろう?

URLの対象は「oEmbed provider」ではないんだよな…
「oEmbed provider」が提供するコンテンツではあるんだが…

あくまで、対象のリソースはHTMLなんだ。
そこからoEmbedの情報を抜き出して、展開するんだ。
だとしたら、リソースのファイルタイプとして示そうとしていること事態が間違いなのでは?

例えるなら、動画のファイルタイプで、動画のプレイヤーを定義しようとしているようなもの。
動画の形式と、動画のプレイヤーは、全く違う別物。

object要素のtype属性は省略できるみたいだから、type属性で表すのを止めようよ。

#36 (comment) を考えると、こうするのが良いのかな?

<object data="https://twitter.com/jack/status/20" data-oembed>
  <param name="lang" value="ja">
</object>

#36 (comment) を考えると、こうするのが良いのかな?

<object data="https://twitter.com/jack/status/20" data-oembed>
  <param name="lang" value="ja">
</object>

表示前に変換するから、どうでもいいといえばどうでもいいんだが、type属性がない場合は、ブラウザはiframeとして表示するんだよな…
なんか…違和感が…

#36 (comment) を考えると、こうするのが良いのかな?

<object data="https://twitter.com/jack/status/20" data-oembed>
  <param name="lang" value="ja">
</object>

data-oembed属性よりも、data-expand-oembed属性のほうがいいゾ。

<object data="https://twitter.com/jack/status/20" data-expand-oembed>
  <param name="lang" value="ja">
</object>

対象のリソースをoEmbed形式で展開するんだから。

本末転倒な気がするけど、もうこういう構文でいいんじゃないかな。

<oembed target="https://twitter.com/jack/status/20">
  <param name="lang" value="ja">
</oembed>

本末転倒な気がするけど、もうこういう構文でいいんじゃないかな。

<oembed target="https://twitter.com/jack/status/20">
  <param name="lang" value="ja">
</oembed>

Custom Elementsに習って、要素名にはハイフンを含めたほうがいい。
サーバーサイドで変換するからCustom Elementsを考慮する必要は全く無いが、後で読んだ時に、それが明らかに標準的ではない要素名だと判別できる。

<x-oembed target="https://twitter.com/jack/status/20">
  <param name="lang" value="ja">
</x-oembed>

わざわざMetalsmithのプラグインを作るよりも、PostHTMLのプラグインにしたほうがいいと思うんだ。

localPageScripts:
- https://platform.twitter.com/widgets.js

<blockquote class="twitter-tweet" data-lang="ja" data-theme="dark"><p lang="ja" dir="ltr">仲間を喰った邪竜に挑んで、負けて、仲間の悲鳴がすっかり聞こえなくなった腹の中に捕らわれたい。戦っている間に仲間はすっかり溶けてしまって、骨も残らず腸へ流されてしまったの。かすかな血の香りだけが残る胃袋の中で、無力な拳で胃壁を叩きながら溶かされたい。</p>&mdash; sounisi5011/vore (@sounisi5011Vore) <a href="https://twitter.com/sounisi5011Vore/status/1166100191012745217?ref_src=twsrc%5Etfw">2019年8月26日</a></blockquote>

こういうことで事足りるなら、oEmbedに対応する意味がない。このほうが確実だし