scrapbox-backups
takker.icon用scrapbox backup data置き場
https://github.com/takker99/scrapbox-backups
規約違反になる?
GitHub Hacking ~GitHubを容量無制限のクラウドストレージとして使用する試み~ - Qiita
jsonデータ置くくらいならいい気もするが
Actionsで定期実行するとやばそう
privateなら問題ない?
vim-jp slacklog/log-dataはこの方法で収集していたようだ
仕様
✅JSONをformatする
JSON.stringifyでformatできる
保存形式
projectごとにdirectoryを作る
中に一ページごとにばらしたjson dataを入れる
ファイル名はページタイトルにする
2022-01-22 12:02:34 やった
https://github.com/takker99/scrapbox-backups/tree/main/villagepump/pages
見やすくなって良い
このデータとscrapbox readerを組み合わせれば、履歴表示みたいなこともできるかも
scripts
データを取得しながら1ページごとに展開するscript
backup dataとpage APIのどちらでも使えるようにする
networkからとってきたpage dataとファイルに含まれるupdatedとを比較して、更新されていたら上書きする
新規作成されたページは追加、見つからなかったページは削除する
全てのページを走査し終わったら、もう一度更新情報を取得し、script開始時点以降で更新されたページがないか確かめる
もしあればもう一度更新処理を行う
最大5回繰り返す
普通は2,3回で終わると思うけど
directory下のpage dataを全部mergeしてbackup dataを生成するscript
2024-02-20 00:02:02 /villagepump/Scrapbox新サービス規約(2024-03-01〜)を受け、重い腰を上げて作り直すことにする
現状
特に何もしていない
scrapbox-auto-backupperがあるが、backup jsonが大きくなりすぎてGoogle Apps Scriptのファイル容量制限にひっかかってしまい、ここ数年は実質機能していない
必要な技術
✅1ページごとにファイルをばらす
Github Actionsで自動pushする
Github Actionsを定期実行する
(自動でGithub Releasesする)
ncipollo/release-actionを使う
sandbox-github-actions-schedulerで実現できてそうなのでcode readingする
いるかどうかは正直不明
もし実装するとしたら、scrapboxに取り込めるbackup json形式にする
必要なプログラム
backupを作る
ソース
api/pages/:projectname/:pagetitleを使う
2024-02-20 02:23:49 大変になってきた
ページが削除されたかどうか検知するには、project内のすべてのページタイトルデータが必要になる
ページタイトルだけ事前に取得する必要がある
admin以上の場合は、api/project-backup/:projectname/:backupId.jsonも使う
backupedより新しいデータがbackupにあれば、それを使う
ファイルとして差分管理
code:layout
:project/
├── pages/
│ ├── Scrapboxの使い方.json
│ └── ここはなに.json
└── project.json
:projectにscrapbox projectの名前が入る
project.jsonにprojectの基本情報やbackupedを入れる
code:project.json
{
"name": "villagepump",
"displayName": "井戸端",
"count": 7123,
"backuped": 32984374
}
pages/配下にページタイトルを名前にしたjsonを直接いれる
型はPagehttps://github.com/scrapbox-jp/types/blob/0.5.0/response.ts#L30 とBackupedPageの共通部分
PageにあってBackupedPageにないものがあってもいいが、その逆は残さない
scrapbox json dataとしてrelease
importに必要な情報だけまとめる
既存のbackup jsonをrepoに適用したい
sandbox-github-actions-schedulerで生成されたコードを取り込む
これはやっておきたいtakker.icon
……と思ったけど、井戸端に関してはsandbox-github-actions-schedulerを井戸端のbackupとして使えばいいか
そこまでしなくても別にいいかなあtakker.icon
井戸端は上述した通り
自分の昔のbackupsは……まあ別にやらなくてもいいかな
sandbox-github-actions-schedulerのコードをほぼそのまま使えばよさそうな気がする
流用する点
1ページごとにばらす
auto commit
release
削除する点
active userのグラフ描画
google driveへのupload
変更点
任意のprojectをbackupできるようにする
connect.sidを使えるようにする
github actionsにsecretとして渡す
どうやって渡せばいいんだろう?
action secretsを使えばいいようだ
https://zenn.dev/azulitenet/articles/deploying_deno_deploy_with_github_actions#github側の作業
scriptからは環境変数として取り込める
https://docs.github.com/ja/actions/security-guides/using-secrets-in-github-actions
(GitHub Actionsとして公開する)
誰でも使えるようにする
ここまでやる時間はないだろうから今はやらない
GitHub Actionsを自作する
#2024-02-19 23:58:51
#2022-01-21 19:43:32