Twitter Streaming APIで日本語の内容をにポストするIRCサーバー
rubyのnet/ircを使ってみた。
パスワードと名前を設定して使う。Streaming APIはここを参考にした。
#!/usr/bin/env ruby require 'net/http' require 'uri' require 'rubygems' require 'net/irc' require 'json' class TwitterStreaming < Net::IRC::Server::Session def initialize(*args) super end def server_name "twitterStream" end def main_channel "#TwitterStream" end def on_user(m) super post server_name, MODE, @nick, "+o" post @prefix, JOIN, main_channel post server_name, MODE, main_channel, "+mto", @nick post server_name, MODE, main_channel, "+q", @nick @streaming_thread = Thread.start do streaming_main end end def on_disconnected @streaming_thread.kill rescue nil end def streaming_main uri = URI.parse("http://stream.twitter.com/spritzer.json") Net::HTTP.start(uri.host, uri.port) do |http| request = Net::HTTP::Get.new(uri.request_uri) request.basic_auth(@opts.user, @opts.pass) http.request(request) do |response| raise "Response is not chuncked" unless response.chunked? response.read_body do |chunk| status = JSON.parse(chunk) rescue next next unless status['text'] tweet = status['text'] if /[ぁ-ん]|[ァ-ヴー]/ =~ tweet screen_name = status['user']['screen_name'] post screen_name + "@" + server_name, JOIN, main_channel post server_name, MODE, main_channel, "+o", screen_name post screen_name, PRIVMSG, main_channel, tweet end end end end end end opts = { :user => "username", :pass => "password" } Net::IRC::Server.new("localhost", 6668, TwitterStreaming, opts).start