Hatena::Grouprubyist

たばさの RSSフィード

04/14(火) 2009

mixiアプリのリストを作ってみた

| mixiアプリのリストを作ってみた - たばさの を含むブックマーク はてなブックマーク - mixiアプリのリストを作ってみた - たばさの

http://www004.upp.so-net.ne.jp/tabasa/mixi/mixiappView-777.htm

777http://platform001.mixi.jp/view_appli.pl?id=777の開発者idの数字に変えてください。)


使ったスクリプト

mixi_platform-login-mech.rb

#!ruby -Ks
# -*- encoding: "Shift-JIS" -*-
require 'mechanize'
require 'logger'
require 'myStrNkf'

#
username = ""
password = ""
baseurl='http://platform001.mixi.jp'
#p id, pass
#exit

agent = WWW::Mechanize.new {|a| a.log = Logger.new('access.log') }
page = agent.get("#{baseurl}/home.pl")
form = page.forms[0]
form.fields.find {|f| f.name == 'email'}.value = username
form.fields.find {|f| f.name == 'password'}.value = password
form.fields.find {|f| f.name == 'next_url'}.value = '/home.pl'
page = agent.submit(form, form.buttons.first)

if /url=([^"])"/ =~ page.body
  link = 'http://mixi.jp' + $1.to_s
  agent.get(link)
end

def appShow baseurl,agent, appId, interval=2
  url="#{baseurl}/view_appli.pl?id=#{appId}"
  view = agent.get(url)
#p view.search("title").methods.sort
  sleep interval
  [
    "<a href='#{url}'>#{appId}</a>",
    view.search("title").to_s.sjis.sub(/^<title>(.*)<\/title>\z/){"<h1>#{$1}</h1>"},
    view.search('dl[@class="appliInfolistMiddle clearfix adminName"]').innerHTML.sjis,
    view.search('dl[@class="appliInfolistSmall clearfix joinLevel"]').innerHTML.sjis,
    view.search("div[@id=appliIntro]").innerHTML.sjis
  ]
end

$stderr.puts "upto:"
max=gets.to_i

puts '<div id="all">'
77.upto(max){|i| 
  res=appShow(baseurl,agent,i)
  res=i if res[2]==""
  puts "<div id="+"#{i}"+">"
  puts res,"<hr>"
  puts "</div>"
  $stderr.print "#{i}(#{res[2].size}),"
}
puts '</div>'

myStrNkf.rb

#!ruby
require'nkf'

class String
  def m_euc
    NKF::nkf('-e -m0',self)
  end
  def m_utf
    NKF::nkf('-w -m0',self)
  end
  def m_sjis
    NKF::nkf('-s -m0',self)
  end
  def utf
    NKF::nkf('-w',self)
  end
  def sjis
    NKF::nkf('-s',self)
  end
  def euc
    NKF::nkf('-e',self)
  end
end



また文字コードで悩む。

参照

mecanize.rb で mixi diary を自動取得する - World Wide Walker

はてなダイアリー

(09/04/18 requireなど修正)

(09/05/02 NKF::nkf('-u',self) 修正)

トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20090414
カレンダー
<< 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
archive Error : RSSが取得できませんでした。