header

2016年1月5日火曜日

Blogger に post するコマンドラインツールを作った

このブログの更新には googlecl というコマンドラインツール経由で emacs から記事を書いていたけれど、結構前から googlecl が oauth2 に対応してなくてブログが更新できなかった。自分がなんか作った途端マーフィーの法則でもっといいツールが出たりすぐ治るのではという恐れがあってずっと googlecl の github Issues が更新されるのを待つ日々が続いたが、更新されなそうなので、シンプルに google blogger にポストするだけのコマンドラインツールを作った。実装には勉強ついでに nimlang を使ってみた。 (自分用に Emacs から post するコードも入っているので興味がある人は後半の方もみてみてください。)

前準備

nim の実行環境がない人は、先に ここから nim をインストールしてください。あと、 nimble という nim 用のパッケージマネージャもあったほうが管理が楽です。

あと Google の Blogger 用の API 利用するのに Google Developper Console で登録する必要があります。 もはや記憶の彼方でどうやったかあまり思い出せないのですが、多分ググればいろいろ情報があるのでは、、、(適当)

とりあえず、client id と client secret というのが必要です。

インストール

準備ができたら、

git clone https://github.com/yuutayamada/nim-blogger
cd CLONED DIRECTORY
nimble make

で nimblogger という実行ファイルが作れます。

ホントは nimble install でインストールできるようにしたかったけど、-d:ssl というフラグをつけないとビルドできず install のときどうやって指定するのかよくわからなかったので、このようになってしまいました。

# たぶん Google Developper Console の API manager から
# みつけられるとおもいます
export GOOGLE_API_CLIENT_ID="developper console から client_id をコピペしてください"
export GOOGLE_API_CLIENT_SECRET="developper console から client_secret をコピペしてください"

のあと

nimblogger --help

で使い方がでるとおもいます。 (注意 Refresh token なんちゃらってでたらもう一回やると成功するかもしれません。)

Emacs から

自分用なので使いたい人は使ってというスタンスで、misc ディレクトリに org-mode のドキュメントから html に変換してポストするコードが入ってます。

使いたい人は、下のような設定をしたあと`nimblogger:post-article`関数で投稿できるとおもいます。

(load "path/to/misc/nimblogger")
(setq nimblogger:blog-name "blog の名前"
      ;; binary file へのパス
      nimblogger:command "path/to/nim-blogger/nimblogger")
(define-key org-mode-map (kbd "C-S-p") 'nimblogger:post-article)

おわりに

自分が必要な最低限はできたけど、Google の更新についてく自信がないいので、いいツールがあれば教えてください。

0 件のコメント:

コメントを投稿

Popular Posts

Blogger templates

Blogger news