0

hubotにごはんを選んでもらう

推薦ではなく、思いもよらない料理を見る事で発想を豊かにしたかったのでhubot scriptを作った。

https://www.npmjs.org/package/hubot-gohan

npmでインストールして、「hubot ごはん」で実行する。


wikipediaのCategory:料理から2つ下までたどると、色々な料理が見つかる。その中からランダムに返すようになっている。

wikipediaなので作り方とか素材・調味料などのリンクも辿っていけて面白い。
普通に暮らしてると知らないようなアフリカの炊き込みご飯とか、ギリシャの焼き鳥みたいなのとか出てくる。

たまに調理器具とか調理学校を食えとか言われるけどそれはそれで面白いのでいいと思う

あとまあ、チャットで使えるので、食生活豊かな都内の会社の人とかは今日の晩飯どうするとかこれで決めればいいのではないか

1

26歳になったので

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