森高千里データベースの再構築(17) : hkob の雑記録 (220)

はじめに

hkob の雑記録の第220回目は、昨日インポートしたYouTube のデータベースのリレーションなどを設定していきます。

プロパティの準備

まず、Map と Years のリレーションは作成します。Songs は SongsStr に変えた後で Songs リレーションを追加します。

Map relation

Year relation

Songs relation

また、Thumbnail を ThumbnailStr とし、File & Media property で Thumbnail を用意します。

Thumbnail property

プロパティは以下のようになりました。

Property 一覧

Year の自動設定オートメーション

すでに作成した YouTubes ページの Map には全て all を結びつけます。チェックをつけてプルダウンで一気に設定できるので楽ですね。

Map relation の設定

今後、新しいページを作成した場合に all が設定されるように Set ‘Map’ to YouTubes オートメーションを作成しておきます。

Set 'Map' to YouTube automation

同じように Set ‘Year’ to YouTube も作成します。ひとまずはどのプロパティが編集されても Year を設定するようにしておきます。後で、Date が編集された時だけに条件を狭めます。

Set 'Year' to YouTube automation

設定した値はこれまでのものと同じです。

設定した数式

Song, Thumbnail 設定のスクリプト

ここまで準備したらあとは API で一括設定するだけです。スクリプトは以下のようになりました。

#! /usr/bin/env ruby

require "notion_ruby_mapping"
include NotionRubyMapping
NotionRubyMapping.configure { |c| c.token = ENV["NOTION_API_KEY"] }

songs_db = Database.find "235d8e4e98ab80d1a29adfc13458a29d"
songs_id_hash = songs_db.query_database.each_with_object({}) do |song, hash|
  name = song.properties["Name"].full_text
  hash[name] = song.id
end

youtube_db = Database.find "246d8e4e98ab806cae9cd5115c53a58b"
sp = youtube_db.properties["Songs"]
query = sp.filter_is_empty
youtube_db.query_database(query).each do |y|
  yp = y.properties
  ss = yp["SongsStr"].full_text
  ts = yp["ThumbnailStr"].url
  if !ss.empty?
    ids = ss.split(", ").map { |s| songs_id_hash[s] }.compact
    yp["Song"].relation = ids
  end
  if ts && ts.length < 100
    yp["Thumbnail"].files = ts
  end
  p [ss, ts]
  y.save
end

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

ruby relation_to_youtube.rb
["私がオバさんになっても", "https://img.youtube.com/vi/MEqN0U7Vox8/sddefault.jpg"]
["見たとおりよ私", "https://img.youtube.com/vi/MyOtj7R2O20/sddefault.jpg"]
["さよなら私の恋", "https://img.youtube.com/vi/9sdM4Z2ULM8/sddefault.jpg"]
["これっきりバイバイ", "https://img.youtube.com/vi/ymLLjMHMw7E/sddefault.jpg"]
["おもしろい [森高コネクション]", "https://img.youtube.com/vi/NDGdFd2IhVg/sddefault.jpg"]
["出たがり", "https://img.youtube.com/vi/Ny0yDSyIvc8/sddefault.jpg"]
["おしゃれ風", "https://img.youtube.com/vi/WhiZBx2Xcbo/sddefault.jpg"]
["うわさ", "https://img.youtube.com/vi/myUws5VcDU4/sddefault.jpg"]
["Hey, VODKA!", "https://img.youtube.com/vi/zM3G-nEj4eU/sddefault.jpg"]
["続・あるOLの青春 〜A子の場合〜 (森高コネクション)", "https://img.youtube.com/vi/4YxMfYAZR18/sddefault.jpg"]
["引き裂かないで二人を", "https://img.youtube.com/vi/OHiZDJzW2yc/sddefault.jpg"]
["長男と田舎もん", "https://img.youtube.com/vi/mrHG3MCOk6M/sddefault.jpg"]
["一月一日", "https://img.youtube.com/vi/yKBorkIh4b0/sddefault.jpg"]

実行中は、こんな形で Notion API で曲のリレーションが設定されたあと、遅延して画像が表示され、さらに遅延してオートメーションで年度が設定されていきます。

設定途中の画面

最終的に以下のようになりました。

リレーション設定後の YouTube データベース

最後に Set ‘Year’ to YouTube オートメーションのトリガ条件を狭めて完了です。

Set 'Year' to YouTube automation のトリガーを再設定

おわりに

なんとか二日かけて YouTube の移行も終わりました。

hkob.notion.site