Skip to content

Instantly share code, notes, and snippets.

@sorah
Created August 17, 2009 23:55
Show Gist options
  • Save sorah/169448 to your computer and use it in GitHub Desktop.
Save sorah/169448 to your computer and use it in GitHub Desktop.
#-*- coding: utf-8 -*-
require 'rubygems'
require 'open-uri'
require 'rss'
require 'wsse'
require 'net/http'
require 'kconv'
##################
def post_mixi(title,summary,mail,pass,memid)
site = 'mixi.jp'
content =<<__XML__
<?xml version='1.0' encoding='utf-8'?>
<entry xmlns='http://purl.org/atom/ns#'>
<title>#{title}</title>
<summary>
#{summary}
</summary>
</entry>
__XML__
Net::HTTP.start(site,80) do |h|
h.post('/atom/diary/member_id='+memid,content,{'X-WSSE'=>WSSE::header(mail,pass)})
end
end
#設定
config = {
"tmpfile" => "テンポラリファイルの絶対パス",
"mail"=>"メール",
"memberid"=>"メンバーID",
"pass"=>"パスワード",
"rssurl"=>"RSSのurl"
}
File.open(config["tmpfile"],"w"){|f|f.print "0"} if !File.exists?(config["tmpfile"])
#read rss
favs = open(config["rssurl"]){|f|RSS::Parser.parse(f.read)}
last = File.read(config["tmpfile"])
p last
#if initalize boot
if last == "0"
item = favs.items[0]
#post
post_mixi(item.title.toutf8,item.description.toutf8+"\n 元記事: "+item.link,config["mail"],config["pass"],config["memberid"])
File::open(config["tmpfile"],"w"){|f|f.print favs.items[0].link}
exit 0
end
if last != favs.items[0].link
puts "New Posts detected"
i = 0
favs.items.each do |item|
break if i >= 6
break if item.link == last
post_mixi(item.title.toutf8,item.description.toutf8+"\n 元記事: "+item.link,config["mail"],config["pass"],config["memberid"])
i += 1
end
File::open(config["tmpfile"],"w"){|f|f.print favs.items[0].link}
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment