VIMでメモをよく取る、このノリでブログを書きたい。 調べてみると、すでにはてなブログへ投稿するプラグインは存在する。
しかし、この仕組みは自作できるようになっていれば、他の開発でも役に立つはずと考え 自作してみることにした。ちなみに初vimscript。
行った調査は以下。
- vimとはてなブログはどうつながるか
- vimでどう実現するか
- 通信ツール math/webapi-vim
- 参考にしたスクリプト
- 既存のツール moznion/hateblo.vim
webapi-vimを使うとAtomPubのAPIと通信ができる。 HTTPリクエストを行い、XMLレスポンスをパースし、vimscript内で配列として受け取れる。
こんなスクリプトを書いて確認
api_url = "エントリポイント"
user = "はてなID"
api_key = "はてなAPIKEY
echo webapi#atom#getFeed(api_url, user,api_key)
これから作るものの仕様を考えてみた
- インターフェイスはuniteを使う
- 通常のVIMの編集作業と変わるようなコマンド、ショートカットは使わない
- VIMの保存 = サーバへの送信としたい
- 削除機能は実装しない
- 編集書式は常にMarkdownとする
モード | CMD | - |
---|---|---|
ex | :Unite hateblo-list | 記事一覧を表示する+新規作成ができる |
ex | :w | サーバにデータを保存する |
1行目にタグ、タイトルを記述する。 未公開の場合はタイトルの前にD:が表示される。 公開させるにはD:を削除して保存する。
# [:tag1,:tag2] タイトル
# [:tag1,:tag2] D:タイトル
let g:hateblo_settings = {
\ 'user': 'はてなID',
\ 'blog': 'はてなブログID',
\ 'api_key': 'APIキー',
\ }
Uniteで起動したリストからNewを選択。 プロンプトでタイトルとカテゴリが聞かれる
以下のように入力
TITLE: タイトル
CATEGORIES: cat,cat2
保存で送信はされるが、送信されたデータのentry_urlが取れなかったので、 一度保存したら、Uniteから再び開いて編集モードで送信しないと、 新規記事が何個もできてしまう。。。
- plugin/plugin.vim
- autoload/hateblo/webapi.vim
- autoload/hateblo/util.vim
- autoload/hateblo/entry.vim
- autoload/hateblo/editor.vim
- autoload/unite/sources/hateblo_list.vim