Google Buzz, Mixiボイス, Amebaなう に投稿するスクリプトのサンプル
先日、Google Buzz という twitterのようなサービスを発表されましたが、使ってみるとなにげにいい感じ。twitter はアカウント取っただけで使ってませんでしたが、buzz は Gmail を Firefox で常に開きっぱなしにしているので、ついつい呟いてしまいます。
まぁそんな感じで、前置きと当エントリーとは全然関係ないですが、色んな twitter もどきサービスへスクリプトから投稿できたら便利かなーと思い、ruby で書いたスクリプトのサンプルをまとめてみました。bot を作成するときなどにどうぞご利用ください
あちこちにあるので略、、、しようと思ったけどとりあえず書いとく
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の投稿テスト')
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("なうのテスト")