以前はソーシャルブックマークサービスのdeliciousやPocket経由でブックマークを投げてましたが、最近はNotionにブックマークを記録しています。
ブラウザの機能拡張を使うとPCやスマホのブラウザからもささっと登録できるので便利です。
![](https://soan.jp/wp-content/uploads/2023/02/IMG_0556.png)
登録した履歴をNotionで閲覧できます。
![](https://soan.jp/wp-content/uploads/2023/02/4a968ed1c4ae6f865e22435f9127d689-1-1024x858.png)
ただ、わざわざNotionを開いて過去記事を見直すのも面倒なので、Raspberry Pi4とNotionのAPI機能を使って、定期的にメールに過去24時間に投稿したブックマークを整形して転送するシステムを作ってみました。
NotionAPI準備
NotionのAPIをPythonで触るのは、こちらが詳しいです。
ワークフロー
- NotionAPIでデータ取得
- 取得したURLからサムネイル画像をスクレイピング
- HTML整形してHTMLメールの形で投稿
手順は大きく分けて3段階ありますが、今回は(1)のみ解説します。
最終的にメールに送信されるブックマークはこんな感じ。
![](https://soan.jp/wp-content/uploads/2023/03/c722a268fb28efe84be502bddb501fe8-1024x792.png)
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ファイルとなって出力されます。
![](https://soan.jp/wp-content/uploads/2023/02/77D1E152-610E-40B4-BF9A-C24B56E66376-1024x640.png)
NotionのDBの設計やカラムの命名によっては、この限りではないですが、こんな感じです。
Titleの取得
![](https://soan.jp/wp-content/uploads/2023/02/ca58548d6db43f0a0d65966801703e1f-1024x134.png)
db["results"][0]['properties']['Name']['title'][0]['plain_text']
URLの取得
![](https://soan.jp/wp-content/uploads/2023/02/22235150e99922c1cc67a4ad166fee33-1024x134.png)
db["results"][i]['properties']['URL']['url']
日付の取得
![](https://soan.jp/wp-content/uploads/2023/02/4c141ddf770b9b49ca76957a7d2816fe-1024x134.png)
db["results"][0]['properties']['created_time']['created_time']
続きます。