Diary/2011-5-7
SWoPPの投稿状況ボット
を確認するbotを昨年作ったのだけど
ベーシック認証じゃだめだったので,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を設定して実行している.