PdfBlock, VideoBlock: NotionRubyMapping 解説 (20)

はじめに

NotionRubyMapping 解説の第20回目です。昨日に引き続き、FileBaseBlock の子クラスを解説します。今日の作業ページはこちらです。

hkob.notion.site

あらかじめページを取得しておきます。

irb(main):002> page = Page.find "https://hkob.notion.site/PdfBlock-VideoBlock-20-23532fa330944bd98ebfa1f8698c341f?pvs=4"
=> NotionRubyMapping::Page-23532fa330944bd98ebfa1f8698c341f

PdfBlock

PdfBlock は PDF のリンクを保持し、プレビューを表示してくれるブロックです。Notion のアプリでは、ファイル自体をアップロードして Notion のサーバに置くことができますが、Notion API ではアップロード機能は提供されておらず、外部にあるリンクを保持するだけになります。

irb(main):003> pb = page.append_block_children PdfBlock.new("https://github.com/onocom/sample-files-for-demo-use/raw/151dd797d54d7e0ae0dc50e8e19d7965b387e202/sample-pdf.pdf")
=> NotionRubyMapping::PdfBlock-739444ae55e04643b0a195f4355a639c

実行した結果以下のような PDF が埋め込まれたブロックが用意されました。

Sample PDF

VideoBlock

VideoBlock はビデオのリンクを保持し、プレビューを表示してくれるブロックです。

irb(main):004> vb = page.append_block_children VideoBlock.new("https://download.samplelib.com/mp4/sample-5s.mp4")
=> NotionRubyMapping::VideoBlock-cfd85e6b05e645dca3209750a894a56b

ビデオのプレビューが表示され、Notion の中で再生が可能になります。

Sample Video

なお、url で設定した URL が取得できます。url = で更新することもできます。また、caption で RichTextArray object が取得できます。こちらも編集は可能です。昨日は編集しなかったので、今回はつけていなかったキャプションを追加してみましょう。

irb(main):008> pb.caption << "Sample PDF"
=>
#<NotionRubyMapping::TextObject:0x0000000123e3ad90
 @options={"plain_text"=>"Sample PDF"},
 @text="Sample PDF",
 @type="text",
 @will_update=false>
irb(main):009> pb.save
=> NotionRubyMapping::PdfBlock-739444ae55e04643b0a195f4355a639c

以下のようにキャプションが追加されました。

PDF caption

同様に VideoBlock にもキャプションを追加してみました。

irb(main):010> vb.caption << "Sample Video"
=>
#<NotionRubyMapping::TextObject:0x00000001245f88e8
 @options={"plain_text"=>"Sample Video"},
 @text="Sample Video",
 @type="text",
 @will_update=false>
irb(main):011> vb.save
=> NotionRubyMapping::VideoBlock-cfd85e6b05e645dca3209750a894a56b

結果は以下のようになりました。

Video caption

おわりに

今回は FileBaseBlock の子クラスである PdfBlock, VideoBlock を解説してみました。次回は EmbedBlock を紹介します。

PdfBlock や VideoBlock のマニュアルはこちら。

hkob.notion.site

hkob.notion.site

NotionRubyMapping解説