Net::HTTPでTwitterのTimelineを取得する
Rubyのおべんきょうの時間です。
APIを使ってなにかしてみようと思い、日頃使っているTwitterのAPIを使ってみることにした。
参考:Twitter API 仕様書 (勝手に日本語訳シリーズ)
Timelineを取得してみる
認証とか関係なさそうなのでPublicTimelineを取得してみる。
それっぽいNet::HTTPを使って接続。
require 'net/http' status = '' Net::HTTP.version_1_2 Net::HTTP.start('twitter.com', 80){|h| status = h.get('/statuses/public_timeline.json') } fl = File.new('PublicTimeLine.txt', 'w+') fl.puts status
Net::HTTPでサイトを開き、APIをGETしてくる。
最後にファイルに書き込んでいるけれど、普通にputsだけでもいいです。
これだけ。ずいぶんとまあ簡単ですね。
自分のアカウントへの返信を取得する
次は、Basic認証が楽そうなのでopen-uriを使ってみる。
PublicTimeLineを取得したときはよくわからん文字列がだらだら出てきたので、意味のわかる形にしたい。
というわけで出力時にJSONデータの処理をしてみた。
JSONパーサは、WebOS Goodiesさんのsimple-jsonを使わせてもらいました。
Ruby 用 JSON パーサーを更新、 JSON への変換も追加 - WebOS Goodies
require 'open-uri' require 'simple-json' Id = 'gom' Pass = '********' Uri = 'http://twitter.com/statuses/replies.json' auth_info = [Id, Pass] opt = {:http_basic_authentication => auth_info} status = open(Uri, opt).read parser = JsonParser.new() arr_status = parser.parse(status) fl = File.new('MyReplies.txt', 'w+') arr_status.each{|s| fl.puts 'name: ' + s['user']['name'] fl.puts 'status: ' + s['text'] fl.puts 'time: ' + s['created_at'] fl.puts '' }