generated at
Scrapbox:コマンドラインから更新をする

Firefox をヘッドレスモード(--headless)で起動して、URLを叩く。
接続して、しばらくすると、ページの更新され自動保存される。
要するに、ブラウザを使った更新作業をエミュレートしているだけである。
Firefox を終了させる方法がわからなかったので、Python側で強制終了させている。
正直に行って、行儀が悪い。あと、更新がうまくいったかどうかもわからない。
Firefox を起動・強制終了させているので、別にFirefoxが起動している状態では、このスクリプトは動かない。

mm.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' 標準入力を読んで、ブラウザ(Firefox)経由でScrapbox に上げるツール。 他にFirefoxが起動している状態では動かない。 Chrome でも試したがうまく動かなかった。なぜだ。 ''' import sys import subprocess import urllib.parse browser="/Applications/Firefox.app/Contents/MacOS/firefox-bin" opt="--headless" # プロジェクト名。書き込み権限が必要。事前にブラウザ上からログインしておく必要がある。 project="suto3scratchpad" # タイムアウト時間。5秒以上必要 timeout=8 body=sys.stdin.read() title=body.split("\n")[0] #print(title) #print(body) eb = urllib.parse.quote(body) url='https://scrapbox.io/' + project + '/' + title +'?body=' + eb #print(url) #proc = subprocess.Popen([ browser, url, opt ], stdosut=subprocess.PIPE) proc = subprocess.Popen([ browser, url, opt ], stdout=subprocess.DEVNULL, stderr = subprocess.DEVNULL) try: proc.communicate(timeout=timeout) except subprocess.TimeoutExpired as t: #print(t.timeout) proc.terminate() # print("complete!") #EOF

使い方
$ cat your-contents.txt | ./mm.py

パイプを経由して、標準入力(stdin)をScrapboxにあげる。
フィルタを使ったテキスト処理想定している。
your-contents.txt は普通テキストファイルである。
一行目がページタイトルになり、一行目も含めたすべての行がページになる。
ファイル名は、スクリプトでは見ないので、なんでもいい。
Scrapbox:コマンドラインでページの表示 の出力ファイルを入力にすることができる。


Python
Firefox
Scrapbox-tools