Rubyの魔神 このページをアンテナに追加 RSSフィード

   「Ruby」は宝石の魔神のイメージ(The Jinn of the Ruby)
   [VB] [VB6] [Android] [電子工作] [個人メモ] [仕事メモ] [アイデア] [TstLink] [開発] [CE] [LTSA] [自動化] [Qt] [OCaml] [TOOLS]
   [3Dプリンタ] [RAA] [Forge]   [機能別索引] [逆引きRuby] [マニュアル] [るびま] [標準ライブラリ] [るりまサーチ] [Try! Ruby] [PRaggerまとめ] [ピジョン・ブラッド]
   [Rubyコーディング規約] [プログラミングのオキテ] [Rubyist SNS] [TOOLBIS]
   [RubyネットワークProg] [druby] [コードなにがし] [RDocテンプレ] [Ruby/Tkサンプル]
   [WAVE] [Xperia] [github] [twitterなど] [Java] [EA] [マクロ]

2007-02-22

PRaggerプラグイン はてなダイアリーライター

| 12:22 | PRaggerプラグイン はてなダイアリーライター - Rubyの魔神 を含むブックマーク はてなブックマーク - PRaggerプラグイン はてなダイアリーライター - Rubyの魔神 PRaggerプラグイン はてなダイアリーライター - Rubyの魔神 のブックマークコメント

■[ruby] 超手抜き版 はてなダイアリーライター(ruby版)を作ってみた。

Hirameki Inspiration - 超手抜き版 はてなダイアリーライター(ruby版)を作ってみた。

samurai20000さんのはてなダイアリーライター(ruby版)をPRaggerプラグイン化しました。

WWW::mechanizeがひつようです。gemインストールしてください。

gem install mechanize

以下をhatena_diary_writer.rbという名前でPRaggerのpluginフォルダに保存してください。

2007/07/13修正版

はてなサーバー移動(2007/07/06)時に変わった修正対応

cf http://d.hatena.ne.jp/nana_mai2/20070712/1184249699#c

#!/usr/bin/env ruby
# hatena_diary_writer.rb
#

require 'rubygems'
require 'mechanize'
require 'kconv'
$KCONV = 'euc-jp'

class HatenaDiaryWriter
  def initialize(id,password)
    @id = id
    @password = password
    @agent = WWW::Mechanize.new
    @diary = @agent.get("http://d.hatena.ne.jp/#{id}/")
  end

  def login
    login_link = @diary.links.text("ログイン".toeuc)
    login_page = @agent.get(login_link.href)
    login_form = login_page.forms.first
    login_form['name'] = @id
    login_form['password'] = @password
    redirect_page = @agent.submit(login_form)
    @diary_link = redirect_page.links.text("こちら".toutf8)
    @diary_page = @agent.get(@diary_link.href)
  end

  def edit(content)
    edit_link = @diary_page.links.text("日記を書く".toeuc)
    edit_page = @agent.get(edit_link.href)
    edit_form = edit_page.forms.name("edit").first
    edit_form["body"] += content
    ok_button = edit_form.buttons.name("edit")
    @agent.submit(edit_form, ok_button)
  end
end

def hatena_diary_writer(config, data)
  diary = HatenaDiaryWriter.new(config['user_id'], config['password']) 
  content = ''
  data.each do |line|
    content << line
  end
  diary.login
  diary.edit(content.toeuc)
end

config.yaml

- module: const_list
  config:
    - 'はてダラプラグインの'
    - 'テスト書き込みします'
- module: hatena_diary_writer
  config:
    user_id: xxxx ←自分用に書き換えてください
    password: xxxx ←自分用に書き換えてください

#!/usr/bin/env ruby
# hatena_diary_writer.rb
#

require 'rubygems'
require 'mechanize'
require 'kconv'
$KCONV = 'euc-jp'

class HatenaDiaryWriter
  def initialize(id,password)
    @id = id
    @password = password
    @agent = WWW::Mechanize.new
    @diary = @agent.get("http://d.hatena.ne.jp/#{id}/")
  end

  def login
    login_link = @diary.links.text("ログイン".toeuc)
    login_page = @agent.get(login_link.href)
    login_form = login_page.forms.first
    login_form['key'] = @id
    login_form['password'] = @password
    redirect_page = @agent.submit(login_form)
    @diary_link = redirect_page.links.text("こちら".toutf8)
    @diary_page = @agent.get(@diary_link.href)
  end

  def edit(content)
    edit_link = @diary_page.links.text("日記を書く".toeuc)
    edit_page = @agent.get(edit_link.href)
    edit_form = edit_page.forms.name("edit").first
    edit_form["body"] += content
    ok_button = edit_form.buttons.name("edit")
    @agent.submit(edit_form, ok_button)
  end
end

def hatena_diary_writer(config, data)
  diary = HatenaDiaryWriter.new(config['user_id'], config['password']) 
  content = ''
  data.each do |line|
    content << line
  end
  diary.login
  diary.edit(content.toeuc)
end

config.yaml

- module: const_list
  config:
    - 'はてダラプラグインの'
    - 'テスト書き込みします'
- module: hatena_diary_writer
  config:
    user_id: xxxx ←自分用に書き換えてください
    password: xxxx ←自分用に書き換えてください

以下の環境で動作確認

OS:WindowsXP

Pragger Rev.41

ruby 1.8.4 (2005-12-24) [i386-mswin32]