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
enddef 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
}
endend
このスクリプトを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
endtw = 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})