- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!SWoPPの投稿状況ボット
を確認するbotを[昨年作った|http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D4%2D23]のだけど
ベーシック認証じゃだめだったので,OAuthに対応させた.
http://twitter.com/miyox_bot で,とりあえず10分に一度つぶやいています.
コードは↓の通り.
#!/usr/bin/ruby
require 'rubygems'
gem 'twitter'
require 'twitter'
require 'open-uri'
str = ""
open("http://www.hpcc.jp/swopp/swopp2011/cgi-bin/swopp_app_summary.cgi").read.split("\n").each{|l|
if /<tr><th>(\w+)<\/th><td align=center.*>(\d+)<.*\/td><td align=center>(\d+)<\/td><\/tr>/ =~ l then
str += " #{$1}: #{$2}/#{$3}"
end
}
message = "#{str} - #{Time.now}"
CONSUMER_KEY = ここにはアプリ登録したときに表示されるキーをかく
CONSUMER_SECRET = ここにはアプリ登録したときに表示されるSECRETキーをかく
ACCESS_TOKEN = これは,適当に取得する
ACCESS_TOKEN_SECRET = これも適当に取得する
Twitter.configure do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.oauth_token = ACCESS_TOKEN
config.oauth_token_secret = ACCESS_TOKEN_SECRET
end
base = Twitter::Client.new
base.update(message)
ちなみに,http://twitter.com/apps/ から登録ができるのだけど,
何度試してもRead & Writeのチェックが有効にならなかった.
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1261621202
にあった,
「設定」→「アプリ連携」→右下の開発者「こちら」→「Edit Details 」
とかして対応.
OAuthのTokenとToken Secretは
http://d.hatena.ne.jp/shibason/20090802/1249204953
にあった↓のコードで取得した.
require 'rubygems'
require 'oauth'
CONSUMER_KEY = ここにはアプリ登録したときに表示されるキーをかく
CONSUMER_SECRET = ここにはアプリ登録したときに表示されるSECRETキーをかく
consumer = OAuth::Consumer.new(
CONSUMER_KEY,
CONSUMER_SECRET,
:site => 'http://twitter.com',
:proxy => プロキシが必要な場合
)
request_token = consumer.get_request_token
puts "Access this URL and approve => #{request_token.authorize_url}"
print "Input OAuth Verifier: "
oauth_verifier = gets.chomp.strip
access_token = request_token.get_access_token(
:oauth_verifier => oauth_verifier
)
puts "Access token: #{access_token.token}"
puts "Access token secret: #{access_token.secret}"
実行環境では,プロキシを介してのWebアクセスのみしか許されていないので
環境変数のhttp_proxyを設定して実行している.