はじめに
はてなブログの AtomPub API 用の Ruby gem が意外にも存在しなかったので書きました。
概要
Ruby スクリプトから、はてなブログのエントリ取得やブログへの投稿ができるようになります。
require 'hatenablog' # デフォルトでは 'conf.yml' から OAuth 設定を読み込む Hatenablog::Client.create do |blog| # 最新 7 件のエントリの内容を出力する blog.entries.each do |entry| puts entry.content end # 新しいエントリを投稿する posted_entry = blog.post_entry('Entry Title', 'This is entry contents', # Markdown 形式 ['Test', 'Programming']) # カテゴリ # 既存エントリを更新する updated_entry = blog.update_entry(posted_entry.id, 'Revised Entry Title', posted_entry.content, posted_entry.categories) # 既存エントリを削除する blog.delete_entry(updated_entry.id) end
導入方法
gem の導入
以下のコマンドで導入できます。
$ gem install hatenablog
Bundler を使っているのであれば、Gemfile に hatenablog
を追記してから、bundle
コマンドを実行してください。
$ vi Gemfile
gem 'hatenablog'
$ bundle
OAuth の設定
はてなブログの API を叩くには、OAuth のコンシューマキーとアクセストークンを取得する必要があります。ここの手順は別のエントリ(Ruby ではてな OAuth のアクセストークンを取得する)も参考にしてください。
まず、コンシューマキーを取得します。はてなの開発者向けページからアプリケーション登録を実行し、コンシューマキーを取得してください。
次にアクセストークンを取得します。gem に同梱しているコマンド get_access_token
を以下の通り実行してください。
$ get_access_token <コンシューマキー> <コンシューマシークレット>
すると、以下のように URL が表示されます。この URL にアクセスして、PIN を取得し、以下の通り入力してください。
Visit this website and get the PIN: https://www.hatena.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXX
Enter the PIN: <ここに PIN を入力する> [Enter]
これで、アクセストークンとアクセストークンシークレットを取得できます。
Access token: <アクセストークン>
Access token secret: <アクセストークンシークレット>
以上の手順で取得したキーとトークンを設定ファイルに記述します。デフォルトの設定ファイル名は conf.yml
です。この名前にしておけば、スクリプト内で設定ファイル名を指定せずとも、設定を利用できます。設定ファイルの形式は以下の通りです。
consumer_key: <コンシューマキー> consumer_secret: <コンシューマシークレット> access_token: <アクセストークン> access_token_secret: <アクセストークンシークレット> user_id: <ユーザ ID> blog_id: <はてなブログ ID>
はてなブログ ID はブログのドメイン部分です。例えば、このブログであれば kymmt90.hatenablog.com
です。
おわりに
はてなブログへのアクセスをサポートする hatenablog gem を書きました。
なんとか gem を公開できました。つまづいた部分もあったので、そちらのネタでエントリを書くかもしれません。