2009/03/02

@SapporoNewsをRuby化

2007年12月にPlaggerで作ったTwitterアカウント@SapporoNewsが、開発サーバのEtch->Lenny化に伴い、2008年12月より動かなくなっていたため、Ruby化。

#! /usr/bin/ruby

require "time"
require "rubygems"
gem "twitter4r"
require "twitter"
require "pit"

require 'rss/1.0'
require 'open-uri'

require 'cgi'
class Hash
def to_http_str
self.map{|key,value| "#{key}=#{CGI.escape(value.to_s)}"}.join("&")
end
end

begin
flg = 0
slink = nil
lfile = open("sapnews.txt",'r')
lfile.each do |link| slink = link.chop end
lfile.close

config = Pit.get("SapporoNews")
cl = Twitter::Client.new(config)

open('http://myrss.jp/rdf/r476607166b60c5359.rdf?v10') do |http|
response = http.read
result = RSS::Parser.parse(response, false)

result.items.each do |item|
link = item.link
if link !~ /^http:\/\/news\.google\.co\.jp/ then
title = item.title

if link == slink then break end
if flg == 0 and link != slink then
lfile = open("sapnews.txt",'w')
lfile.puts link
lfile.close
flg = 1
end
mess = title + " " + link
cl.status(:post,mess)
sleep 60
end
end
end
rescue
print "RuntimeError: ", $!, "\n";
end