概要
はてなダイアリーAtomPubをRubyから利用してブログ記事を投稿する
詳細
まずはatomutilをインストールします。
$gem install atomutil Successfully installed atomutil-0.1.3 1 gem installed Installing ri documentation for atomutil-0.1.3... Building YARD (yri) index for atomutil-0.1.3... Installing RDoc documentation for atomutil-0.1.3...
atomutilを利用してはてなダイアリーのAPIを呼び出すコードをRubyで実装します。
投稿内容はymlとして編集します。
基本的なレイアウトは以下のみ
title: タイトル contents: | 記事内容1行目 記事内容2行目
この投稿内容のymlを下記で作成するサンプルコードの引数として
コマンドを呼び出せば完成です。
サンプルコード
# encoding: UTF-8 require 'atomutil' require 'yaml' require 'pp' # ユーザー情報をyamlから取得して定数化 hatena_settings = YAML.load_file ('..\yaml\user_info.yml') USERNAME = hatena_settings["user"] PASSWORD = hatena_settings["password"] COLLECTION_URI = "http://d.hatena.ne.jp/#{USERNAME}/atom/blog" exit unless USERNAME || PASSWORD # コマンドからのパラメータは1つのみとする def validate_args unless ARGV.size == 1 puts "no args!" return false end true end class HatenaEntry attr_accessor :title, :content def load_from_yaml(yaml_path) entry_yaml = YAML.load_file yaml_path @title = entry_yaml["title"] @content = entry_yaml["contents"] return self end end # はてなの新規投稿 def entryHatena(hatena_entry) auth = Atompub::Auth::Wsse.new :username => USERNAME, :password => PASSWORD client = Atompub::Client.new :auth => auth title = hatena_entry.title content = hatena_entry.content new_entry = Atom::Entry.new( :title => title.encode("BINARY", "BINARY"), :content => content.encode("BINARY", "BINARY") ) client.create_entry( COLLECTION_URI, new_entry ) end exit unless validate_args entryHatena(HatenaEntry.new.load_from_yaml(ARGV[0]))
出力
投稿結果は当ベージ自体です