Scrapbox:コマンドラインから更新をする
Firefox をヘッドレスモードで利用したコマンドラインツール
Firefox をヘッドレスモード(--headless)で起動して、URLを叩く。
接続して、しばらくすると、ページの更新され自動保存される。
要するに、ブラウザを使った更新作業をエミュレートしているだけである。
Firefox を終了させる方法がわからなかったので、Python側で強制終了させている。
正直に行って、行儀が悪い。あと、更新がうまくいったかどうかもわからない。
Firefox を起動・強制終了させているので、別にFirefoxが起動している状態では、このスクリプトは動かない。
code: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:コマンドラインでページの表示 の出力ファイルを入力にすることができる。
forum-jp - /forum-jp/APIでページを作成・更新したい
help-jp - /help-jp/ページを作る
Python.icon
Firefox.icon
#commandline
Scrapbox-tools.icon