以前はソーシャルブックマークサービスのdeliciousやPocket経由でブックマークを投げてましたが、最近はNotionにブックマークを記録しています。
ブラウザの機能拡張を使うとPCやスマホのブラウザからもささっと登録できるので便利です。
登録した履歴をNotionで閲覧できます。
ただ、わざわざNotionを開いて過去記事を見直すのも面倒なので、Raspberry Pi4とNotionのAPI機能を使って、定期的にメールに過去24時間に投稿したブックマークを整形して転送するシステムを作ってみました。
NotionAPI準備
NotionのAPIをPythonで触るのは、こちらが詳しいです。
ワークフロー
- NotionAPIでデータ取得
- 取得したURLからサムネイル画像をスクレイピング
- 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ファイルとなって出力されます。
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']
続きます。