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})