マイペースなプログラミング日記 このページをアンテナに追加 RSSフィード Twitter

カレンダー
<< 2009/04 >>
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

2009-04-25

[]Twitter APIを使ってログインしてみた

RubyTwitter APIを使い、Twitterにログインするプログラムを書いてみた。ユーザー名を表示するようにした。emailとpasswordが正しいことを信じてるプログラムなので間違った情報を入れると正常に動かない

require 'net/http'
require 'rexml/document'

email = '*********@*******.ne.jp'
password = "*******"

class User
    attr_reader :id
    attr_reader :name
    attr_reader :screen_name
    attr_reader :url
    attr_reader :followers_count
    attr_reader :friends_count

    def initialize(id, name, screen_name, url, followers_count, friends_count)
        @id = id
        @name = name
        @screen_name = screen_name
        @url = url
        @followes_count = followers_count
        @friends_count = friends_count
    end
end

class Twitter
    attr_reader :user
    attr_reader :cookie

    def login(username, password)
        request = Net::HTTP::Get.new('/account/verify_credentials.xml')
        request.basic_auth(username, password)
        http = Net::HTTP.start('twitter.com')
        response = http.request(request)

        doc = REXML::Document.new(response.body)
        id = doc.elements['/user/id'].text()
        name = doc.elements['/user/name'].text()
        screen_name = doc.elements['/user/screen_name'].text()
        url = doc.elements['/user/url'].text()
        followers_count = doc.elements['/user/followers_count'].text()
        friends_count = doc.elements['/user/friends_count'].text()

        @cookie = response['Set-Cookie']
        @user = User.new(id, name, screen_name, url, followers_count, friends_count)

        return @user
    end
end

twitter = Twitter.new
user = twitter.login(email, password)
puts user.name

参考
net/http - Rubyリファレンスマニュアル
http://www.ruby-lang.org/ja/man/html/net_http.html

Twitter API 仕様書 (勝手に日本語訳シリーズ)
http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html

[]mixiにログインするプログラム

Rubymixiにログインするプログラムを書いてみた。足跡の表示まで行うようにした。emailとpasswordが正しいことを信じてるプログラムなので間違った情報を入れると正常に動かない

#! /usr/bin/ruby -Ku

require 'net/http'
require 'kconv'

email = "*****@*****.ne.jp"
password = "******"

class User
    attr_reader :id
    attr_reader :name

    def initialize(id, name)
        @id = id
        @name = name
    end
end

class Mixi
    def login(user, password)
        http = Net::HTTP.start('mixi.jp')
        response = http.post('/login.pl', "email=#{user}&password=#{password}&next_url=./home.pl")
        @cookie = response['Set-Cookie'].split(',').join(';')
    end

    def getFootPrintList()
        http = Net::HTTP.start('mixi.jp')
        response = http.get("/show_log.pl", 'Cookie' => @cookie)
        body = response.body.toutf8

        users = Array.new

        body.scan(/<a href="show_friend.pl\?id=(\d+)">([^<]+)<\/a>/){|id, name|
            users << User.new(id, name)
        }

        return users
    end
end

mixi = Mixi.new
mixi.login(email, password)
mixi.getFootPrintList.each{|user|
    puts user.name
}