Scrapboxプロジェクト管理
#public
現状の私の運用方法
普段はprivateプロジェクトでページを書き、公開したいページにだけ #public というハッシュタグをつける
定期的に半自動化したコードを動かして、ハッシュタグがついているページを/0xbara0にうつしている
前提
Macbook
処理フロー
1. privateプロジェクトにてページデータをexport
2. 指定フォルダにjsonファイルを追加するとフォルダアクションが発火しpythonファイルを実行
3. jsonファイルを読み込み、 #public があるページのみを抽出したjsonファイルを作成
4. publicプロジェクトにjsonファイルをinport
準備
exportedフォルダ、outputフォルダ、sc.pyを準備
sc.pyにフォルダpathを記入
pythonPATHを調べる
which python とか which python3 とか
Automatorでフォルダアクションを作成
シェルスクリプトを実行を選ぶ
exportedフォルダを選択する
code:ターミナル実行スクリプト
pythonのpath sc.pyのpath
名前をつけて保存
フォルダ構成
code: folder構成
├── exportedフォルダ・・・ここにexportしたjsonファイルを入れる
├── outputフォルダ・・・ここに処理後のファイルが入る
└── sc.py・・・処理コード
code:sc.py
import glob
import os
import copy
import json
exported_path="xxxxxx" #exportedフォルダのpath
output_path="xxxxxx" #処理後のファイルを格納するフォルダのpath
list_of_files = glob.glob(exported_path+'*')
latest_file = max(list_of_files, key=os.path.getctime)
a = open(latest_file)#ファイル読み込み
b = json.load(a)
#ハッシュタグpublicがついているページを取得
private_page_num_list=[]
for page_num in range(len(b"pages")):
page=b"pages"page_num
text="".join([i"text" for i in page"lines"])
# print(text)
if "#public" not in text:
private_page_num_list.append(page_num)
#パブリックページリストを作成
page_list=copy.deepcopy(b"pages")
for i in sorted(private_page_num_list, reverse=True):
page_list.pop(i)
#データを更新
b"pages"=page_list
with open(output_path+'for_input.json', 'w') as f:
json.dump(b, f, ensure_ascii=False, indent=4)
フォルダアクション
https://dev.classmethod.jp/articles/automator-mv-desktop-image-specific-directory-and-rename-rtid/
自分でやり方を検討した理由
ありがたいことに世の中には親切な方がいて、自動で同じことをするコードを公開してくれている。
https://github.com/blu3mo/Scrapbox-Duplicator
/blu3mo-public/scrapbox-duplicator
でも私は自分でやりたかった。
理由1)Scrapboxには自分の脳みそを移すのに、自分が中身を理解できないコードに頼りたくなかった
私のコード読解能力が低すぎるから
理由2)Herokuが2022年下旬から無料ではなく、毎月数百円かかる
理由3)公開するという作業を重くすることで、公開時によりコンテンツを磨くようにしたい
試行錯誤の記録
cssファイルでタイトルに特定の文字列を含むページを隠す運用
参考
/arpla/隠しページの作り方
/villagepump/特定のページを非表示にするUserCSS
ページの並び順を自動で変える方法が分からず、空欄が出来てバレちゃう
settingsからどのページを隠しているのかがバレる?
pin止めしたページだけ表示する
/villagepump/pin留めしたページ以外を見えなくするUserCSS
これであれば必ず一番上に来るから、ページの並び順を固定出来なくてもOK
でもpin止めが増えるのが嫌だ、、、
そもそも全部publicでも良いのでは??
最初はすべてpublicにしていたが、privateな内容を書く際にためらってしまった