8月15日に26歳になったので、新しい自分を探すためにtwitterのプロフィールを自動的に更新するようにした

30ed9b71553d2f33922bc39e7368a008

838d669e96f189702c3f9844965ace8e

人間以外にもなれる

eac518c56870949065eeeed905d34ae4

e85cb1527f60394255fe556f41cc3e62

9c4c1cb1c6fadac1ff09f120b5585892

7d4fcd1cd71ba0e8693133439b4751eb

ソースコードは全部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})