はてなダイアリーを過去の日付でScrapboxにインポート
from 機械がScrapboxに書く
目的
- Scrapboxを検索した時に過去のブログ記事がヒットしない、ヒットした方が良いと思う
- はてなブログに自動コンバートされてるけど、課金してないので広告が出る
- 過去の記事もブラケティングしたい
2021-05-04 はてなダイアリーを過去の日付でScrapboxにインポートした script
2021-12-20
過去(2018)に「エクスポートしたXMLからScrapbox形式のJSONにするスクリプト」までは作ってあった
フォーマット
- bs4で読んだときに実体参照
>が消し飛んでるみたい
- そんなはずあるかいと思うんだけど失われたものが出てきて解決方法がよくわからない
- 大したことではないので自前でパースした
- はてな記法→Scrapbox記法の変換はしない
- まとめてScrapboxのコード記法にした
- 検索にヒットして読めたらそれで良い
html.unescapeする
- ブログのタイトルをページタイトルにするつもりだったが、必要ない気がしたのでやめた
- タイトルがすべて機械生成のものになる
- インポートした後でダメだと思ったときに機械的な除去が簡単
- Q: インポート前にバックアップ取っておくのでもいいのでは?
- A: インポートした後しばらく運用して色々なページを編集した後でインポートを取り消したくなったらバックアップからの復元をするわけに行かない
- 安心して上書きできる運用
- スクリプトを更新して変換し直したときに、上書きして人間が書いた文章が失われると悲しい
- この不安が「更新していくこと」を妨げる
- 機械生成ページは変更せず、変更したい時には複製して良いタイトルのページを作れば良い

- 作成日時がちゃんと3年前にになってる
- けどまあ、正確に作成日時をあわせなくても「トップページに出ない」というだけで十分だったかもね
python
def timestamp(*args):
return datetime.datetime(*map(int, args)).timestamp()
- 2021-06-29 追記: 検索結果が時系列に並ぶのが心地よいので、やはり現状の「実際にその記事を書いた日時」がいい
検索
見出しページ作ったけど絶対使わないと思ったので削除した
規模
- 12万行のXML
- 22万行のJSON
- 1500ページ
上書き
- 予定: 変更日時が変わってなければ上書き可能
- 予定: インポート時にコンフリクトが起こるかチェック
- 実際: 常に上書き可能
空のプロジェクトで試す
ボットがプロジェクトに参加することもスクリプトでできるようにする?
:
Request URL: "https://scrapbox.io/api/projects/{project}/invitations/{key}"
POST