NotionのAPIレスポンスはブロック単位で扱われていることもあり、取捨選択によってはリソース置き場にすることも可能です。勿論GitHubのように厳密なバージョン管理とまでは難しいのですが、GitHubに投入する前の雑なメモ書きを整理する程度であれば十分です。
試しにレスポンス中のコードブロックをローカルでファイルとして出力し、実行可能な状態にしてみました。必要なライブラリについては以前の記事を参考にしてください。
レスポンスを元にソースコードを出力する。
ページのIDを元にしてページ内ブロックを取捨選択します。必要な判定としてはtypeがcodeであること、languageに即した拡張子を指定する、の2つです。
import os
from notion_client import Client
from pprint import pprint
notion = Client(auth=os.environ["NOTION_TOKEN"])
lang = {'python': 'py', 'plain text': 'txt'}
result = notion.blocks.children.list('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
for block in result['results']:
if block['type'] == 'code':
language = block[block['type']]['language']
_id = block['id']
_lang = lang[language]
for paragraph in block[block['type']]['rich_text']:
pprint(f"{_id}.{_lang}")
with open(f"{_id}.{_lang}", mode='w') as f:
f.write(paragraph['plain_text'])
コードブロック単位でファイルが生成されていきます。
% python dump.py
'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.txt'
'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.py'
あとがき
- 厳密なバージョン管理はいらない
- テキスト以外のコンテンツも説明として挟みたい
- 必要に応じて実行用ファイルとしても出力できるようにしたい
といった辺りの要望は満たせるかもしれません。都合上ファイル名がランダム文字列となっているため、その点だけ何か工夫をするとよいでしょう。