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
一行目が
ページタイトルになり、一行目も含めたすべての行がページになる。
ファイル名は、スクリプトでは見ないので、なんでもいい。