Prev / Next

2009-09-20 / Ruby で mixi ボイスをいじってみた

Ruby で mixi ボイスをいじってみました.

api がないので,Mechanize で適当に切り出し.


#!/usr/bin/ruby
# -*- coding: utf-8 -*-

require "rubygems"
require "mechanize"
require "nokogiri"

class MixiVoice
  def initialize(id, pass)
    @id = id
    @pass = pass
    @agent = WWW::Mechanize.new
  end

  def set_proxy(host, port)
    @agent.set_proxy(host, port)
  end

  def login
    page = @agent.get("http://mixi.jp/")
    form = page.forms.first
    form["email"] = @id
    form["password"] = @pass
    form.submit
  end

  def get_timeline
    a = []

    page = @agent.get('http://mixi.jp/recent_echo.pl')
    doc = Nokogiri::HTML(page.body)

    items = doc.xpath("id('echo')/div[2]/div[3]/table/tr")
    items.each do |i|
      id = i.xpath("td[3]/div[1]/text()")
      time = i.xpath("td[3]/div[2]/text()")
      nick = i.xpath("td[3]/div[3]/text()")
      comment = i.xpath("td[3]/div[4]/text()")
      a << [id, time, nick, comment]
    end
    return a
  end

  def voice(str)
    page = @agent.get('http://mixi.jp/recent_echo.pl')
    form = page.forms[1]
    form["body"] = str
    form.click_button
  end
end

ID = "fuga"
PASS = "hoge"

mv = MixiVoice.new(ID, PASS)
mv.set_proxy("192.168.0.1", "3128")
mv.login
puts mv.get_timeline

mv.voice("テスト")


タイムラインをどう使うか決めていないので,
とりあえず,配列で返しています.

ユーザ毎のタイムラインは
http://mixi.jp/list_echo.pl?id=#{id}

発言は
http://mixi.jp/view_echo.pl?id=#{id}&post_time=#{time}

あと,thumbnail も取れるようにするか.

参考
- twitterからmixiボイスにマルチポストするRubyスクリプト書いた - 5.1さらうどん
  http://d.hatena.ne.jp/gigi-net/20090918/1253224665

Referrer (Inside):
[2009-12-10-2] Amebaなうを Ruby でいじってみた
comments powered by Disqus