NotionのAPIからデーターベースの内容を定期的にメールに送る

以前はソーシャルブックマークサービスのdeliciousやPocket経由でブックマークを投げてましたが、最近はNotionにブックマークを記録しています。

ブラウザの機能拡張を使うとPCやスマホのブラウザからもささっと登録できるので便利です。

登録した履歴をNotionで閲覧できます。

ただ、わざわざNotionを開いて過去記事を見直すのも面倒なので、Raspberry Pi4とNotionのAPI機能を使って、定期的にメールに過去24時間に投稿したブックマークを整形して転送するシステムを作ってみました。

NotionAPI準備

NotionのAPIをPythonで触るのは、こちらが詳しいです。

ワークフロー

  1. NotionAPIでデータ取得
  2. 取得したURLからサムネイル画像をスクレイピング
  3. HTML整形してHTMLメールの形で投稿

手順は大きく分けて3段階ありますが、今回は(1)のみ解説します。

最終的にメールに送信されるブックマークはこんな感じ。

NotionAPIでデータ取得

import json
from notion_client import Client

# database_idは読み込みたいデーターベース。authはNotion APIで取得したシークレットキー
database_id = notion_setting["database_id"] #test
notion = Client(auth=notion_setting["auth"])

db = notion.databases.query(
    **{
        'database_id' : database_id,  # データベースID
        "filter": {
            "timestamp": 'created_time',
            "created_time": {
                "after": "2020-04-11T07:04:00"
            }
        }
       }
)

print(db)

こうすると、afterで指定した期日以降のデータがJSONファイルとなって出力されます。

[title]という項目に[plain_text]にタイトルらしきものが出てます。

[URL][url]も同様にURLが見えますね。この辺りを取り出せば良さそうです。

NotionのDBの設計やカラムの命名によっては、この限りではないですが、こんな感じです。

Titleの取得

db["results"][0]['properties']['Name']['title'][0]['plain_text']

URLの取得

db["results"][i]['properties']['URL']['url']

日付の取得

db["results"][0]['properties']['created_time']['created_time']

続きます。

Shareこの記事をシェアしよう!