はてなブログ投稿用のVIMプラグイン
Vim script
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
autoload
plugin
README.md

README.md

概要

VIMでメモをよく取る、このノリでブログを書きたい。 調べてみると、すでにはてなブログへ投稿するプラグインは存在する。

しかし、この仕組みは自作できるようになっていれば、他の開発でも役に立つはずと考え 自作してみることにした。ちなみに初vimscript。

行った調査は以下。

  1. vimとはてなブログはどうつながるか
    1. 通信仕様 AtomPub
    2. 認証仕様 WSSE
  2. vimでどう実現するか
    1. 通信ツール math/webapi-vim
  3. 参考にしたスクリプト
    1. 既存のツール 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