8月15日に26歳になったので、新しい自分を探すためにtwitterのプロフィールを自動的に更新するようにした
ソースコードは全部githubに置いた
ランダムに適当な紹介文を取ってくる
wikipedia.rb
# -*- coding: utf-8 -*- require 'rubygems' require 'open-uri' require 'uri' require 'nokogiri' require 'kconv' require 'net/http'class Wikipedia
def initialize(agent_name) @agent_name = agent_name end
def random get('特別:おまかせ表示') end def get(name) doc = Nokogiri::HTML open(URI.encode("http://ja.wikipedia.org/wiki/#{name}"), 'User-Agent' => @agent_name).read.toutf8 title = doc.xpath('//title').first.text name = doc.xpath('//h1').first.text descriptions = doc.xpath('//div[@id="bodyContent"]//p').map{|i|i.text} { :title => title, :name => name, :descriptions => descriptions } end
end
このスクリプトをcronで定期的に実行して更新してる
change-profile.rb
#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'rubygems' require 'twitter' require 'yaml' require File.dirname(__FILE__)+'/lib/wikipedia' $KCODE = 'u'begin conf = YAML::load open(File.dirname(__FILE__) + '/config.yaml') rescue STDERR.puts 'config.yaml load error' exit 1 end
tw = Twitter::Base.new(Twitter::HTTPAuth.new(conf['name'], conf['pass'])) w = Wikipedia.new('shokai') desc = nil 5.times do data = w.random desc = data[:descriptions].first desc.gsub!(/\[\d+\]/, '') tmp = desc.split(/(と?は)/) left = tmp.shift while left =~ /([^)]+$/ do tmp.shift left = tmp.shift end desc = "#{conf['your_name']}#{tmp.join('')}".toutf8 puts '-'*10 print data[:name] + ' => ' puts desc break if desc != conf['your_name'] end exit if desc == nil or desc == conf['your_name']
tw.update_profile({'description' => desc})