twitterの友人のタイムラインを取得してとりあえずMeCabで動詞と名詞に分けて保存しておく

http://twitter.com/dnp

models.rb

require 'rubygems'
require 'active_record'

class FriendUpdate < ActiveRecord::Base
  def to_s
    return  "#{id}@(#{post_id}) #{name}: #{text}"
  end
end

class Verb < ActiveRecord::Base
end

class Noun < ActiveRecord::Base
end

store.rb

#!/usr/bin/ruby
require 'rubygems'
require 'cgi'
gem 'twitter'
require 'twitter'
require 'active_record'
require 'MeCab'
require 'models.rb'

def getWords(node, kind)
  list = Array.new
  while node do
    f = node.feature.split(/,/) 
    if /#{kind}/ =~ f[0]
      list.push(node.surface)
    end
    node = node.next
  end
  return list.uniq
end

$KCODE = 'UTF8'

ActiveRecord::Base.establish_connection(
                                        :adapter => 'sqlite3',
                                        :dbfile => '/var/sqlite3/oktwitter-friends'
                                        )

twit = Twitter::Base.new("username","password")

mecab = MeCab::Tagger.new('-Ochasen')


twit.timeline(:friends).each{ |status|
  next if FriendUpdate.find(:first, :conditions => {:post_id => status.id }) != nil
  update = FriendUpdate.create(
                               :text => CGI.unescapeHTML(status.text),
                               :name => status.user.screen_name,
                               :post_id => status.id
                               )
  puts 'saved! ' << update.to_s
    
  n = mecab.parseToNode(update.text)
  verbs = getWords(n, '動詞')
  nouns = getWords(n, '名詞')
  
  verbs.each{ |v|
    next if Verb.find(:first, :conditions => { :text => v}) != nil
    Verb.create(:text => v)
  }
  print verbs
  
  nouns.each{ |n|
    next if Noun.find(:first, :conditions => { :text => n}) != nil
    Noun.create(:text => n)
  }
  print nouns
  
}