Cosense Code Clone
公開projectの場合
最初はclone
$ deno run --allow-net=scrapbox.io:443 --allow-write=./{プロジェクト名} --allow-read=./{プロジェクト名} jsr:@bsahd/cosense-code-clone clone プロジェクト名
./{プロジェクト名}
にクローンされる
必ずアクセスは ./{プロジェクト名}
のみの許可にしてください。そうでないとインジェクションによって重要なファイルが書き換えられることがあります。
pull
変更のあるページのみ再作成する
$ deno run --allow-net=scrapbox.io:443 --allow-write=./{プロジェクト名} --allow-read=./{プロジェクト名} deno run jsr:@bsahd/cosense-code-clone pull プロジェクト名
更新が近い順ソート(標準)なので、modifiedが消えたら少し待って終了していいのかな
Cosenseから消えたページはファイル上には残る
また、Cosense上から消えたcodeblockも残る
非公開projectの場合
$ deno run --allow-write=./{格納先} --allow-read=./{格納先} jsr:@bsahd/cosense-code-clone json ファイル名 格納先
export json dataをもとに生成できるようにしたい
Cosense export JSON Dataの型定義ってある?
私も調べてたw

push
構造
ページ名に /
が入る場合、ファイルシステム上では階層構造になる
日記ページがちゃんと階層化される
コードブロック名ではされない(エスケープされる)ので注意
後は中で普通に #include "../ページ名/コードブロック名"
すればいい
./scrapbox_temp/ページ名/コードブロック名
形式になる
ページテキストは ./scrapbox_temp/ページ名/text.txt
にクローンされる
ページJSONは ./scrapbox_temp/ページ名/json.json
にクローンされる
ページHTMLは ./scrapbox_temp/ページ名/text.html
にクローンされる
Windows環境の場合、ページ名から : * ? " < > ? |
はパーセントエンコードされる
パーセントエンコードの為 %
もエンコードされる
\ /
は自動的に階層にする
ファイル名の場合は /
と
書き込み失敗しても続きのページはしっかりとやる
/
or \
の前後に空白があると失敗する
複数のページからリンクされてても本文がなければ(薄くなっているなら)HTMLは生成されません
空ページの一覧のAPIあるのかな
だめだ。完全に静的サイトジェネレーターを目指してる
目次作る
頭文字ごとにアクセスできるようにする
1 hop linksだす
Cosense上のリンクがcase insensitiveなのに対しファイルシステムはcase sensitiveだ
workaround: apache httpdの場合はmod_spelingを使う
メリット
HTTP importに対応していない言語でも使える
お気に入りのpublic projectがローカルで読めるようになる
TODO
赤リンクを赤くする
本文がなくても被リンクがある場合はhtmlを生成する
新バージョンで井戸端をcloneする
9.2GB
7-zipの最速で圧縮すると1.3GBになる
容量の大半が重複した複数フォーマットとクソデカ2 hop linksでは...
2 hop linksを出さないようにした
インデックス
上部の文字の塊:それぞれの文字ごとに索引になっていて、頭文字から引ける
ページ
画像類は基本的に読み込まれない
わかりやすい形式で保存する
HTMLを生成する
リンク用にディレクトリ化されたコードブロックのファイルができる
名前の由来
Cosense Code: Cosense内のコードブロック
Clone: git clone
を意識してる
Cosenseをコードリポジトリとして使ってみたかった
旧バージョン:
井戸端全体をcloneしてみる
ぽつぽつエラーが出る
64.7MB,30833フォルダ(32692 pages)
HTMLあり:187MB 33025フォルダ
21,566,666文字(1文字3バイト)
2100万文字w
普段はできないタイトル順にバーッと並べてみる体験
ディレクトリ表示が重いので頭文字ごとのディレクトリを置いとくべきだった
scrapbox-reader風に使えるようにHTMLを生成したい
大体できた