daemon + mysql

とりあえず、GETメソッドならこれでよし。

[ruby] require 'net/http' require 'uri' require 'rubygems' require 'json' require 'mysql' TWITTER_SCREEN_NAME = 'xxxxxx' TWITTER_PASSWORD = 'xxxxx' MYSQL_HOST = 'xxxxx' MYSQL_USER = 'xxxxx' MYSQL_PASSWORD = 'xxxxx' MYSQL_DATABASE = 'xxxxx' MYSQL_TABLE = 'xxxxx' uri = URI.parse('http://stream.twitter.com/1/statuses/sample.json') mysql = Mysql.new(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE) Process.daemon Net::HTTP.start(uri.host, uri.port) do |http| request = Net::HTTP::Get.new(uri.request_uri) request.basic_auth(TWITTER_SCREEN_NAME, TWITTER_PASSWORD) http.request(request) do |response| response.read_body do |chunk| status = JSON.parse(chunk) rescue next next unless status['text'] next if 'ja' != status['user']['lang'] screen_name = Mysql.quote(status['user']['screen_name']) text = Mysql.quote(status['text']) q = "insert #{MYSQL_TABLE} (screen_name,text) values ('#{screen_name}','#{text}')" mysql.query(q) end end end [/ruby]

POSTメソッドもこんな感じでいける。

[ruby] uri = URI.parse('http://stream.twitter.com/1/statuses/filter.json') mysql = Mysql.new(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE) Process.daemon Net::HTTP.start(uri.host, uri.port) do |http| request = Net::HTTP::Post.new(uri.request_uri) request.set_form_data({'track' => 'nhk,etv,ntv,tbs,fujitv,tvasahi,tvtokyo', 'follow' => '112686015,117441019,105529019'}, '&') request.basic_auth(TWITTER_SCREEN_NAME, TWITTER_PASSWORD) http.request(request) do |response| response.read_body do |chunk| status = JSON.parse(chunk) rescue next next unless status['text'] next if 'ja' != status['user']['lang'] screen_name = Mysql.quote(status['user']['screen_name']) text = Mysql.quote(status['text']) q = "insert #{MYSQL_TABLE} (screen_name,text) values ('#{screen_name}','#{text}')" mysql.query(q) end end end [/ruby]