Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

Google Buzz, Mixiボイス, Amebaなう に投稿するスクリプトのサンプル

先日、Google Buzz という twitterのようなサービスを発表されましたが、使ってみるとなにげにいい感じ。twitter はアカウント取っただけで使ってませんでしたが、buzz は GmailFirefox で常に開きっぱなしにしているので、ついつい呟いてしまいます。

まぁそんな感じで、前置きと当エントリーとは全然関係ないですが、色んな twitter もどきサービスへスクリプトから投稿できたら便利かなーと思い、ruby で書いたスクリプトのサンプルをまとめてみました。bot を作成するときなどにどうぞご利用ください

twitter

あちこちにあるので略、、、しようと思ったけどとりあえず書いとく

require 'twitter'
auth = Twitter::HTTPAuth.new('your_twitter_id', 'your_twitter_password')
agent = Twitter::Base.new(auth)
agent.update("つぶやく")

Google Buzz

# -*- coding: utf-8 -*-
require 'net/smtp'
require 'kconv'

def buzz_via_mail(email, password, text)
  smtp = Net::SMTP.new("smtp.gmail.com", 465)
  smtp.enable_ssl

  packed = text.tojis.split(//,1).pack('m').chomp
  encoded_text = "=?ISO-2022-JP?B?" + packed.gsub('\n', '') + "?="

  message = <<-EndOfMail
From: #{email}
To: buzz@gmail.com
Subject: #{encoded_text}
Date: #{Time::now.strftime("%a, %d %b %Y %X %z")}
  EndOfMail
 
  smtp.start('localhost', email, password, :login) do |s|
    s.send_message message, email, 'buzz@gmail.com'
  end
end

# How to use:
buzz_via_mail('your_account@gmail.com', 'your_password', 'buzzの投稿テスト')

Gmailから buzz@gmail.com というアドレスにメールを送ると buzzれるっぽいです。

Mixiボイス

# -*- coding: utf-8 -*-
require 'rubygems'
require 'mechanize'

class MixiVoice
  def initialize(opt)
    @agent = WWW::Mechanize.new
    page = @agent.get("http://mixi.jp/")
    login_form = page.forms.first
    login_form["email"] = opt[:username]
    login_form["password"] = opt[:password]
    login_form.submit
  end

  def post(message)
    page = @agent.get('http://mixi.jp/recent_echo.pl')
    form = page.forms[1]
    form['body'] = message
    form.click_button
  end
end

# How to use:
voice = MixiVoice.new({:username => 'your_mixi_account', :password => 'your_mixi_password'})
voice.post("ボイスのテスト")

Amebaなう

# -*- coding: utf-8 -*-
require 'rubygems'
require 'mechanize'

class AmebaNow
  def initialize(opt)
    @agent = WWW::Mechanize.new
    page = @agent.get("http://www.ameba.jp/")
    login_form = page.forms.first
    login_form['amebaId'] = opt[:username]
    login_form['password'] = opt[:password]
    login_form.submit
  end
 
  def post(message)
    page = @agent.get('http://now.ameba.jp/')
    form = page.forms.first
    form['entryText'] = message
    form.click_button
  end
end

# How to use:
amenow = AmebaNow.new({:username => 'your_ameba_id', :password => 'your_ameba_password'})
amenow.post("なうのテスト")