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

   「Ruby」は宝石の魔神のイメージ(The Jinn of the Ruby)
   [VB] [VB6] [C#] [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-07-13

はてダラプラグインの修正

| 08:58 | はてダラプラグインの修正 - Rubyの魔神 を含むブックマーク はてなブックマーク - はてダラプラグインの修正 - Rubyの魔神 はてダラプラグインの修正 - Rubyの魔神 のブックマークコメント

http://ruby.g.hatena.ne.jp/garyo/20070222/1172114521 こちらで公開していた

はてダプラグインが先日(2007/07/06)のはてなサーバー移行以後動かなくなっていたのですが

以下の修正で動くそうです。

login_form['key'] = @id

となっているところを

login_form['name'] = @id

とすれば問題なく動きます.

水樹奈々@PRagger - はてダラプラグインの修正
トラックバック - http://ruby.g.hatena.ne.jp/garyo/20070713

2007-02-26

PRaggerプラグイン Google検索プラグイン

| 17:56 | PRaggerプラグイン Google検索プラグイン - Rubyの魔神 を含むブックマーク はてなブックマーク - PRaggerプラグイン Google検索プラグイン - Rubyの魔神 PRaggerプラグイン Google検索プラグイン - Rubyの魔神 のブックマークコメント

http://mono.kmc.gr.jp/~yhara/d/?date=20070205#p01

こちらのエントリを参考にgoogleで検索した結果タイトルURLを出力するプラグインを作ってみました。

WindowsXP Ruby1.8.5 PRagger Rev.58で試しました

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

gem install mechanize

search_google.rb

require 'rubygems'
require 'mechanize'

class Result
  attr_accessor :title,:link,:description
  def initialize(title,link,description)
    @title = title
    @link = link
    @description = description
  end
end

def search_google(config,data)

  agent = WWW::Mechanize.new                     # インスタンス生成
  agent.user_agent_alias = 'Mac Safari'          #  User-Agentの設定
  page = agent.get('http://www.google.com/')     # ページ取得
  search_form = page.forms.with.name('f').first  #  "f"という名前のフォームを探す
  txt = data.title rescue txt = data.to_s
  search_form.q = txt                            #  テキストボックス"q"に質問を入力
  search_results = agent.submit(search_form)     # フォームのsubmitボタンを押す
  href = search_results/"a.l"                    # 結果の取得
    
  res = []
  href.each do |i|
    r = Result.new(i.inner_text,i['href'],"")
    res << r
  end
  return res
end

config.yaml

praggergoogle検索して結果はてなダイアリに書き込みます。

- module: const_list
  config:
    - 'pragger'
- module: search_google
- module: publish::hatena_diary_writer
  config:
    user_id: xxxx←hatena ID
    password: xxxx←hatena Password
トラックバック - http://ruby.g.hatena.ne.jp/garyo/20070226

2007-02-25

PRaggerでピザが頼めるみたいですよ

| 00:34 | PRaggerでピザが頼めるみたいですよ - Rubyの魔神 を含むブックマーク はてなブックマーク - PRaggerでピザが頼めるみたいですよ - Rubyの魔神 PRaggerでピザが頼めるみたいですよ - Rubyの魔神 のブックマークコメント

■ [Pragger] PRaggerだってピザを頼みたい

[Pragger

夜まだピザ屋さんが開いてる時に挑戦してみようかな

トラックバック - http://ruby.g.hatena.ne.jp/garyo/20070225

2007-02-23

PRaggerプラグイン Gmail送信プラグイン

| 11:14 | PRaggerプラグイン Gmail送信プラグイン - Rubyの魔神 を含むブックマーク はてなブックマーク - PRaggerプラグイン Gmail送信プラグイン - Rubyの魔神 PRaggerプラグイン Gmail送信プラグイン - Rubyの魔神 のブックマークコメント

Gmailメールを送る

Rubyist - バリケンのRuby日記 - Gmailでメールを送る

muscovyduckさんの上記記事を元にPRaggerGmail送信プラグインを作ってみました。

添付ファイル送信機能は未対応ですorz

WindowsXP Ruby1.8.5 PRagger Rev.51で試しましたが、Linuxでも動いたら教えてください。

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

gem install mechanize

RSSなどのフィードを送信する場合のデフォルト処理を追加しました。

send_gmail.rb

$KCODE = 's'

require 'rubygems'
require 'mechanize'
require 'kconv'
require 'fileutils'

def send_gmail(config, data)

  to = config['to']
  cc = config['cc']
  bcc = config['bcc']
  subject = config['subject']

  body = ""
  data.each do |line|
    txt = line.title+"\n"+line.link+"\n"+line.description rescue line.to_s
    body = body + txt
  end

  agent = WWW::Mechanize.new
  gmail_page = agent.get("http://mail.google.com/mail/h/")

  login_form = gmail_page.forms.first
  login_form['Email'] = config['user_id']
  login_form['Passwd'] = config['password']

  agent.submit(login_form)

  agent.get("http://mail.google.com/mail/h/")

  gmail_page = agent.get("?v=b&pv=tl&cs=b")

  mail_form = gmail_page.form("f")

  if mail_form then
    mail_form['to'] = to
    mail_form['cc'] = cc
    mail_form['bcc'] = bcc
    mail_form['subject'] = subject.toutf8
    mail_form['body'] = body.toutf8

    send_button = mail_form.buttons.name("nvp_bu_send")
    agent.submit(mail_form, send_button)
  else
    puts "Error:Can't send gmail."
  end
end


config.yaml

- module: const_list
  config: 
   - "Gメール送信テストです"
   - "届きますか"
- module: send_gmail
  config:
    user_id: xxxx←Gmail ID
    password: xxxx←Gmail Password
    to: xxx@xx.xx.jp,xxx@xx.xx.xx.jp ←送信先 複数書くときは「,」区切り
    cc: xxx@xx.xx.jp,xxx@xx.xx.xx.jp ←cc(省略可) 複数書くときは「,」区切り
    bcc: xxx@xx.xx.jp,xxx@xx.xx.xx.jp ←bcc(省略可) 複数書くときは「,」区切り
    subject: Gmail送信テスト

PRaggerプラグイン Mixi新着日記プラグイン

| 17:29 | PRaggerプラグイン Mixi新着日記プラグイン - Rubyの魔神 を含むブックマーク はてなブックマーク - PRaggerプラグイン Mixi新着日記プラグイン - Rubyの魔神 PRaggerプラグイン Mixi新着日記プラグイン - Rubyの魔神 のブックマークコメント

mecanize.rb で mixi diary を自動取得する

mecanize.rb で mixi diary を自動取得する - World Wide Walker

yooseeさんの上記のエントリーを参考にMixi新着日記URLリスト自動取得するPRaggerプラグインを作ってみました。

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

gem install mechanize

get_mixi_new_diary.rb

require 'rubygems'
require 'mechanize'
require 'logger'

def get_mixi_new_diary(config, data)

    username = config['user_id']
    password = config['password']

    agent = WWW::Mechanize.new {|a| 
#      a.log = Logger.new('access.log')
#      a.log.level = Logger::DEBUG
     }

    page = agent.get('http://mixi.jp/')
    form = page.forms[0]
    form.fields.find {|f| f.name == 'email'}.value = username
    form.fields.find {|f| f.name == 'password'}.value = password
    form.fields.find {|f| f.name == 'next_url'}.value = '/home.pl'
    page = agent.submit(form, form.buttons.first)

    if /url=([^"])"/ =~ page.body
      link = 'http://mixi.jp' + $1.to_s
      agent.get(link)
    end

    data = []
    diarylist = agent.get('http://mixi.jp/new_friend_diary.pl')
    diarylist.links.each do |link|
        diaryurl = link.href # => 'view_diary.pl?id=12345&owner_id=2345'
        if /view_diary.pl/ =~ diaryurl then
            data << 'http://mixi.jp/' + diaryurl
        end
    end
    return data
end

config.yaml

- module: get_mixi_new_diary
  config:
     user_id: xxxx←mixi ID(メールアドレス)
     password: xxxx←mixi Password
- module: print

tosiktosik2007/07/21 10:50>require 'Logger'
のLoggerが大文字になっているので、僕の環境(fedora core 6, ruby 1.8.5)ではエラーが出てしまいます。
require 'logger'
とすると動きました。

garyogaryo2007/07/23 08:53tosikさん、こんにちは。ご指摘ありがとうございます。
修正しておきました。

tosiktosik2007/07/24 23:27いえいえ。今のところ問題なく動作しています。ありがたく使わせていただいています。
ところで、PRaggerのtracのチケットに「mixi日記プラグインを取り込む」というのがあるのですが、なさらないのですか?
http://pragger.ikejisoft.com/ticket/17

garyogaryo2007/07/26 08:54Praggerの中の人の予定は良くわからないです(^^;)

IKeJIIKeJI2008/06/26 01:09今更ですが取り込まさせていただきました。

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]




PRaggerプラグイン rss_view.rb

| 16:55 | PRaggerプラグイン rss_view.rb - Rubyの魔神 を含むブックマーク はてなブックマーク - PRaggerプラグイン rss_view.rb - Rubyの魔神 PRaggerプラグイン rss_view.rb - Rubyの魔神 のブックマークコメント

練習で作りました。

RSSタイトルURLを番号をつけて表示します。

require 'open-uri'
require 'rss/1.0'
require 'rss/2.0'
require 'rss/maker'
require 'kconv'

def rss_view(config,data)
  data.each_with_index do |item,i|
    puts "#{i + 1}.#{item.title},#{item.link}".tosjis #if i <4
  end
  return data
end

config.yaml

- module: load_rss
  config:
    url: http://b.hatena.ne.jp/hotentry?mode=rss
- module: rss_view

PRaggerプラグイン rss_conv.rb

| 17:23 | PRaggerプラグイン rss_conv.rb - Rubyの魔神 を含むブックマーク はてなブックマーク - PRaggerプラグイン rss_conv.rb - Rubyの魔神 PRaggerプラグイン rss_conv.rb - Rubyの魔神 のブックマークコメント

さらに整形してはてなダイアリエントリらしく加工して

上のはてダラプラグインと組み合わせると

はてブのホットエントリ自動はてなダイアリに書き込むなんてことも……

http://d.hatena.ne.jp/garyo/20070222 ←こんな感じに。

require 'open-uri'
require 'rss/1.0'
require 'rss/2.0'
require 'rss/maker'
require 'kconv'

def rss_conv(config,data)
  ret = ""
  data.each_with_index do |item,i|
    ret = ret + "*[NEWS]#{item.title}\r\n#{item.link}\r\n>>\r\n#{item.description}\r\n<<\r\n".tosjis #if i <4
  end
  return ret
end

config.yaml

- module: load_rss
  config:
    url: http://b.hatena.ne.jp/hotentry?mode=rss
- module: rss_conv
- module: hatena_diary_writer
  config:
    user_id: xxxx ←自分用に書き換えてください
    password: xxxx ←自分用に書き換えてください