2014年11月27日木曜日

開発環境

GoogleCLというのをせっかく知ったから、気軽にBloggerに投稿出来るようにするPythonプログラムを書いてみることに。

コード(BBEdit)

post.py

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

import os
import sys
import subprocess
import tempfile

draft = sys.argv[1] if len(sys.argv) > 1 else 'draft.html'

# 改行が<br>に変換されるみたいなので、改行を削除
file = tempfile.mkstemp(suffix='.html')[1]

with open(draft) as draft, open(file, 'w') as f:
    desc4se = draft.readline().strip()
    tags = draft.readline().strip()
    title = draft.readline().strip()
    for line in draft:
        print(line.rstrip(), end='', file=f)

try:
    subprocess.check_call(
        ['google', 'blogger', 'post', file, '--tags', tags, '--title', title,
         '--draft'], stdout=sys.stdout)
except Exception as err:
    os.unlink(file)
    print(err)
    sys.exit(1)

os.unlink(file)

# 下書き投稿後に開きたいアドレス
# 例えば、すべての投稿ページを開くには
#「blogger.g?blogID=ここにblogIDを入力8#allposts」
# を追加
url = 'https://www.blogger.com/'
try:
    subprocess.call(['open', url])
    p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
    p.stdin.write(desc4se.encode(encoding='utf-8'))
    p.stdin.close()
except Exception as err:
    print(err)

これを、

$ sudo mv post.py /user/local/bin$

とかで、環境変数PATHの場所に置いて、次のように投稿。(今いるディレクトリのdraft.htmlに下書き有り。1行目が検索向け説明、2行目がタグ、3行目がタイトル、それ以降が記事本体。)

入出力結果(Terminal, IPython)

$ post.py

下書きを投稿し終わって、urlで指定した、すべての投稿のページをSafari(ブラウザ)が開いたら、クリップボードにある検索向け説明とか、その他、引数で指定できない情報を追加して、下書きを公開。

0 コメント:

コメントを投稿