Scrapbox:コマンドラインから更新をする
Firefox をヘッドレスモード(--headless)で起動して、URLを叩く。
接続して、しばらくすると、ページの更新され自動保存される。
要するに、ブラウザを使った更新作業をエミュレートしているだけである。
Firefox を終了させる方法がわからなかったので、Python側で強制終了させている。
正直に行って、行儀が悪い。あと、更新がうまくいったかどうかもわからない。 Firefox を起動・強制終了させているので、別にFirefoxが起動している状態では、このスクリプトは動かない。
code:mm.py
# -*- 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()
eb = urllib.parse.quote(body)
proc = subprocess.Popen( browser, url, opt , stdout=subprocess.DEVNULL, stderr = subprocess.DEVNULL) try:
proc.communicate(timeout=timeout)
except subprocess.TimeoutExpired as t:
proc.terminate()
# print("complete!")
使い方
$ cat your-contents.txt | ./mm.py
一行目がページタイトルになり、一行目も含めたすべての行がページになる。 ファイル名は、スクリプトでは見ないので、なんでもいい。 Python.icon
Firefox.icon
Scrapbox-tools.icon